曼陀林奎因


25

写一个quine ...从中可以删除所有其他字符的quine仍然是有效的quine。您可以指定是从第一个字符还是第二个字符开始删除字符。

计分标准(将奖金/适当的百分比相加,得出总百分比):

  • 答案必须至少包含4个字符
  • 程序的来源中必须至少包含一个字母字符,例如,该12345!@#$%^&*()程序不合格
  • + 750%,如果使用的语言不是图灵完整的(我在看着你,HTML!)
  • 如果解决方案未从任何地方以任何形式读取其来源,则为-15%
  • 如果您也只能保留第5个字符并仍然成绳状,则为-20%

分数由第一个程序中的字符数来衡量。

示例(非真实程序):

如果123456789abcdef13579bdf都是quines,则得分为15。此外,如果159d也是quines,则最终得分为12。

这是代码高尔夫球,因此得分最低者获胜。


2
@ hosch250原始程序不会成为quine,因为它不会打印这些空格。不必要的评论也是如此。
Jwosty 2014年

1
是的,我以前从未编程过一个quine,并且不知道如何在不阅读C ++源代码的情况下进行编程。我以前曾经用C ++看到过它们!
Hosch250 2014年

1
您声明:“-20%,如果您还可以删除每4个字符并仍然成一团”。但是从技术上讲,这不是您的示例中发生的情况。您是说可以第二次这样做?
mmumboss 2014年

4
奖金是相加还是相乘?也就是说,如果我的程序长度为10个字符,并且有资格获得-15%奖金和-20%奖金,则其分数将为10 *(1-0.15-0.2)= 6.5或10 *(1- 0.15)* (1-0.2)= 6.8?我假设是后者,但是明确的说明会很好。
Ilmari Karonen 2014年

1
这不是Mandoline奎纳,不是断头台吗?断头台使人干净,通常是致命的,被割伤,头部滚落。曼陀林制成许多均匀间隔的切片。:)
乔纳森·范·马特雷2014年

Answers:


24

PHP,4个字符-15%-20%= 2.72 2.6分

ABCD

是的,PHP是一种图灵完备的语言。没有人说我必须使用它的任何实际编程功能。;-)

编辑:基于对奖金是累加而非乘法的澄清,更改了分数。


这可能在ASP中起作用。
Ismael Miguel

2
@ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳我放弃了。:P
Jwosty 2014年

17
实际上,不建议使用PHP的实际编程功能。
Rhymoid

1
这不是适当的选择。不过,这仍然是一个很好的答案
MilkyWay90

14

TI BASIC 4-35%= 2.6

我可能会误解他们,但我认为我也有资格获得-15%和-20%的奖金,这意味着我的得分最低。

我可以编写程序:

123i

这将输出123i我当然是虚数单位的位置。当您删除第一个和第三个字符时,剩下的就是2i输出2i


不太......“ 12i”将输出“ 12i”,而“ 2”将输出“ 2”,最低分数为1.95。
intx13 2014年

实际上,“ 2i”的得分为1.3,如果将空程序视为一盘木马,那么“ i”的得分为0.65。
intx13 2014年

4
@ intx13:“ 答案必须至少包含4个字符。
Ilmari Karonen 2014年

啊,我错过了!
intx13 2014年

击败我吧;)
Timtech,2014年

13

的Python-95

巨大的挑战。我认为这很聪明,实际上是一个合法的解决方案!

00;"#";print(open(__file__).read())
0#;XpXrXiXnXtX(XoXpXeXnX(X_X_XfXiXlXeX_X_X)X.XrXeXaXdX(X)X)

1
真好!请注意,这在技术上无法按原样工作,因为在制作备用奎因时最终会删除换行符。需要一点点的IOW调整
Claudiu 2014年

3
@Claudiu好吧,我想这取决于OP是否将换行符视为字符。如果是这样,您可以在每行之间添加一个换行符。96个字符
qwr 2014年

当然,换行符是一个字符……
mbomb007'2013/

11

Golfscript,5分

{hai}

是一个函数,在执行时将运行(不存在)函数hai。但是,它不会执行,而是在程序结束时打印出来-包括外括号。互相删除字符将产生:

{a}

me脚,我知道:-)


我相信您也有资格获得这两项奖励:您的程序不会读取其自己的源代码,并且{}也很容易理解。
Ilmari Karonen 2014年

@IlmariKaronen很难说什么才算读自己的源代码。不评估功能是否有价值?评估字符串是否有价值?至于其他奖金-也许是措辞不佳,但我将“每四个字符删除”读作“每五个字符保留”,这只会给我一个括号(尽管{ab0}有资格0保留的可能)
约翰Dvorak 2014年

它的措词确实不正确,但是示例表明它的意思是“保持每四个字符”。无论如何,正如您所指出的,{ab0}无论哪种方式都有资格。
Ilmari Karonen 2014年

似乎{hi}也可以,将较短(4个字符),并且也有资格获得所有奖金。(似乎脚本由于某种原因而{i求值{i……)
Claudiu 2014年

@Claudiu {i为我
John Dvorak

8

HQ9 +-4 * 7.5 * 0.8 = 24点

Q+++

每隔一个字符仍然是一个quine:

Q+

...以及每五分之一:

Q

对不起,我无法抗拒。:)


7

HTML / Markdown,4 * 7.5 = 30

HHHH

我承认这很la脚,但实际上并没有违反任何规则。除了HTML / Markdown可能不被视为真正的编程语言。


我想我没有指定不能分割成更小的程序是无效的。不断挑战…
Jwosty 2014年

@Jwosty:HTML中的“ HHHH”将获胜。注意5555不起作用,因为它没有字母字符
Claudiu 2014年

您需要一个字母字符。
qwr 2014年

@qwr:在查看GolfScript时忘记了。已移除。
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ 2014年

嗯...我想这是有效的:P
Jwosty 2014年

5

!/ bin / sh

我非常喜欢qwr的解决方案,我毫不客气地为POSIX shell创建了一个端口。请不要将其保存到包含空格的文件名中。

: '#';cat $0

#c a t   $ 0

从第1个字符开始删除,并将换行符计为字符。第二个思路当然是:

 #;a 0
cat $0

请提高qwr的答案,而不是这个!


3

Bash,23岁

换行符是一个角色!

一些杂乱的注释工作,因此,当从第一个字符开始的所有其他字符都被删除时,该注释将成为代码,而该代码将成为注释:

#cRaRtR R$R0R R#
cat $0

在除去所有其他字符(包括新行)之后:

cat $0 #ct$

但是,如果它读取自己的源代码,那也不是一个问题。
daniero 2014年

@daniero“如果解不读取任何形式的任何地方它的源-15%”意味着你允许读入程序的源代码(但你没有得到奖金)

@daniero哦,我看过维基百科,我想它在作弊...但这是代码高尔夫

我总是喜欢猫!
Antonio Ragagnin 2014年

2

Brainf ** k,37-15%= 31.45

滥用便携式Brainfuck解释器

+A[B-C<D+E]F-GÿH<I<J<K<L<M<N<O[P.Q>R]

开始从第二个字符中删除。


当我运行它时,我将得到B-C<D+E]F-GÿH<I<J<K<L<M<N<O[P.Q>R]输出,因此缺少一些字符。
Sylwester 2014年

是Brainfuck还是仅适用于一种口译员的Brainfuck的一种特定方言?
user253751 2014年

@immibis是常规的(那些大写字母可以是空格,符号或其他任何东西)。但是,您必须使用答案中链接的便携式解释器。
Timtech

1
第一部分左移直到找到ÿ,并且链接的解释器恰好在数据磁带开始之前存储了5000个字节的代码。那很难携带Brainfuck。
user253751 2014年

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.