肮脏而独特


26

在这个问题中,我将以字符串形式讨论程序,这是字节字符串,而不是字符。如何呈现或显示结果程序对于此挑战并不重要,只有它在内存中的显示方式很重要。

原始程序是一个程序,当运行不错误,然而将错误,每当大小的连续子,其中, 已移除。Ñ 1 Ñ < | S |Sn1n<|S|

肮脏的程序则相反,程序在运行时出错,但是每当大小为的连续子串出现时,其中,被删除,不会出错。Ñ 1 Ñ < | S |Sn1n<|S|

对于此挑战,错误是非空输出到STDERR。

您面临的挑战是编写一个使用尽可能多的唯一字节的肮脏程序。这意味着您的代码中出现的每个唯一字节将获得一分,分数越大越好。因此,最大分数为256。


甚至可以用包含方括号/括号的语言来回答这个问题吗?可以从代码中删除一些子字符串,以使括号不匹配。
JungHwan Min

@JungHwanMin如果该语言使用圆括号,我怀疑这是不可能的。
小麦巫师

@CatWizard,这样,当删除连续的子字符串字符(即连续的字节集)时,肮脏的程序不会出错,对吗?
郑焕敏

@JungHwanMin抱歉。它可能会也可能不会。我们只关心连续的字符串。
小麦巫师

Answers:


18

一元,14字节

123456789ABCDE

这将编码Brainfuck程序[,该程序由于括号不匹配而出错。

删除字节将导致><+-.,或空的程序,这是有效的brainfuck程序。


这是最佳的解决方案,因为任何更长的解决方案都可以简化为该解决方案,因此会出错
Jo King

这也是唯一的解决方案。
user202729

13

R,3个字节

qrt

在线尝试!

对象的名称是R中的有效程序。

qrt 不是任何名称,因此返回错误。

q 是退出功能

qr 是QR分解功能

rt 是t分布采样函数

qt 是t分布逆CDF

t 是转置功能


2
@pajonk,但“ r”是连续的子字符串。删除留下的“ qt”
Orphevs

3
长度为3的R中确实有一个肮脏的程序,就是这样!(唯一的单个字符有效的程序0-9cqtCDFIT,因此任何程序必须启动cmqfqrqttsIm。长度三种可能性qrfqrmqrtqtstsd只有其中一个是肮脏的(别人也不能被扩展,使他们肮脏因为没有功能rm*rf*ts*sd*
JDL

@Orphevs我很糟糕,误解了挑战。
pajonk

10

果冻4 5 6 7 8 10 11字节

“a”;⁽PFð+µU

在线尝试!

验证一下。

尝试添加带有整数的字符串。

一些可能的子程序:

“a” 是字符串文字。

“a 是相同的字符串文字。

是空字符串。

“a”; 将“ a”与其自身连接在一起。

...太多了,无法一一列举。


1
幸运的是,果冻仍然允许您出错。
user202729

6

多种语言,3个字节

1 2

适用于:

  • 的JavaScript
  • 红宝石
  • [R
  • 八度
  • GHCi
  • 朱莉亚

在JavaScript中,引发SyntaxError:意外令牌:数字文字或类似错误。

所有其他字符串是有效的数值常量(12,或12)。


在GHCi中抛出

<interactive>:1:1: error:
     Non type-variable argument in the constraint: Num (t1 -> t2)
      (Use FlexibleContexts to permit this)
     When checking the inferred type
        it :: forall t1 t2. (Num t1, Num (t1 -> t2)) => t2

这是因为它试图申请12的功能,但它不能。当删除其中的任何部分时,它仅会成为数字文字。


多种语言:R,八度,Ruby,Python ...
ngm

1
@ngm GHCi也是如此,但是python中出现“ 2”错误。
小麦巫师

我怀疑这是非常通用的。我已经将其变成社区Wiki,因此可以使用所有适用于此的语言进行编辑!
Arnauld


5

Python 2 / 3,3个字节

4\f2

要么

4\x0c2

在线尝试!

在python中,“ \ f”与“ \ x0c”相同,并且是换页符。这意味着它指示打印机转到下一行。

如果python表达式以开头或结尾\f,则基本上会被忽略,因此\f2有效的表达式也会被忽略。

42可以是任何数字0-9。但是,第一个字节0仅在Python 2.7.15中有效,这02是合法声明2

因此,表达式本身因语法错误而失败,因为有两个数字用空格隔开。但是,任何缩短都放在\f无关紧要的开头或结尾,或者创建42有效的缩写。

(值得注意的是,在IDLE中,该文件打开时看起来像“ 42”。)

换页说明来源:https//stackoverflow.com/a/26184126


3
如果您在源代码中使用了实际的代码而不使用,这将更容易理解\f是一个try it在线链接,您可以从中获取预格式化的答案。
小麦巫师

1
我将其添加为变体以进行澄清。另外,感谢您对链接的建议。
马特

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.