回奎因


12

这里的挑战很简单,而不是字节数。您的工作是输出前一个quine源代码的前50个字符,并与您的前50个字符(从我在下面放置的50个字符开始)连接在一起:

abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXY

因此,让我们在这里举个例子,如果您要在05AB1E中回答,那么仅输出前50个字节的解决方案是:

ži50£

这意味着您需要输出:

abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXYži50£

如果您的程序较短,只需使用第一个x < 50字符即可。如果您的程序较长,则只能连接前50个字符,并以第50个字符结尾。然后,下一个人将必须输出您的Quine的前50个字符以及它们自己的代码。

您的代码可以是任意大小,但是您只能输出与前一个答案的代码的前50个字节末尾串联的代码的前50个字符。


限制条件:

除了使用适当的quine的定义外,还使用以下内容:

  • 完全禁止评论。
  • 请特别注意本节内容,如果滥用话语可能会引起注意

如何发布链接答案:

  1. 发布占位符:
    • 提及您的答案号码和将使用的语言。
  2. 按日期排序,如果您发现其他人在您之前1毫秒发布了占位符:
    • 删除您的,等下一次机会,对不起。
  3. 如果您已获得下一个位置,请在6小时内答复
    • 如果您无法回答,请删除您的保留空间。
  4. 如果空间已超过6小时。
    • 投票删除保留空间,我来处理。

您的帖子格式:

#[Answer #]:[Character Count] Characters, [Language Used]

{TIO MARKDOWN}

{LINE_SEPARATOR="---"}

{ADDITIONAL EXPLANATION OR INFORMATION}

一些特定的注意事项(对于简化竞争很重要):

  • 如果之前的人员在其来源中包含换行符或非ASCII字符,则可以将其删除。这就是说,x="a\nb"变成了ab哪里x[0]=a;x[1]=b;
    • 您必须声明您已应用于前一个来源的突变。
  • 尽管有代码页或语言编码,所有字符都被视为单个字符。请不要使用字节计数,请使用字符计数。

接受的答案将是50th答案,仅仅是因为;我的意思是,毕竟是SE。


为什么禁止评论?此外,为什么不只使用字符而不是将字节重新定义为字符?
CalculatorFeline

@CalculatorFeline我认为您可以使用注释进行一些相当la脚和无趣的漏洞,但这就是我。保留第一名,并通过评论证明我错了,我将取消禁令。
Magic Octopus Urn

5
链接的元帖子定义适当的quines,其中没有提到没有失效的代码。
与Orjan约翰森

1
您如何定义评论?评论不是一个很好定义的术语。
Ad Hoc Garf Hunter

1
您似乎还互换了字符和字节这两个术语,这有点令人困惑。我不确定它的前50个字符或字节。
Ad Hoc Garf Hunter

Answers:


7

1:96个角色,Haskell

abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXY:z=['`'..'z']++'A':['C'..'Y']
main=putStr$z++z

在线尝试!


我感到很傻,没有看到禁止任何与初始字符串完全相同的 50个字符开头的条目。

  • ['`'..'z']++'A':['C'..'Y']是对这些字符的字符串求值的表达式,带有`前缀。
  • 结果是模式匹配的,使变量abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXY等于'`'z等于50个字符。
  • main=putStr$z+z 然后做实际的输出。

我喜欢这个挑战是如何从a-zA-Z开始的,现在基本上不再是字母了。第一程序好。
魔术八爪鱼缸

5

5:76个字符,表情符号

🏁🍇🍦a🔤s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxyzACD🔤😀🍪a🔤🏁🍇🍦a❌🔤🔤🔪a 0 45🍪🍉

在线尝试!


说明:

🏁🍇		👴 start
  🍦 a 🔤...🔤	👴 define variable a as that string
  😀    	👴 print:
    🍪		👴 combine those strings:
      a		👴 a, and:
      🔤🏁🍇🍦a❌🔤🔤	👴 string literal. the ❌🔤 works like \"
      🔪a 0 45	👴 between indexes 0 and 45 of a
    🍪
🍉		👴 end

1
字母正在慢慢消失:O。
魔术八达通缸

格式提示:使用<pre><code></code></pre>,然后可以将其&#9;用于制表符,即使使用可变宽度的字符(如表情符号)也可以按预期对齐。顺便说一句,我正在考虑如何在Emojicode中制作一个奎纳,然后向下滚动...
NieDzejkob

@NieDzejkob好主意,谢谢。
betseg

@betseg对我来说在某些地方稍微有些偏离,但无论如何都更具可读性。很高兴您喜欢它
NieDzejkob

@NieDzejkob一些?用我的字体,只有字符串文字命令关闭了,因为它很长,在您的另一端呢?
betseg

4

2:119字符,JavaScript

alert(eval(c="'abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXY'+`alert(eval(c=${JSON.stringify(c).substr(0,37)}`"))

在线尝试(用于console.log代替alert输出)

基于此JS quine。

旧版本(读取源代码):

f=_=>`abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXYf=${(f+"").substr(0,48)}`;alert(f())

基于此JS quine


这不是一个合适的方法,因为该函数引用了自身。
毛茸茸的

@Shaggy我加了一个有效的
SuperStormer

1
@Shaggy自引用函数在我们的定义中有效。
ATaco

3

8:70个字符,Stax

"v->{String t=`"⛽as=:'\`"alert(eval(c=\`"''abcdefghijk"c'".`"R34|S50(+

在线运行和调试

说明

"..."c'".`"R34|S50(+
"..."                   The string from last output
     c'".`"R            Escape all double quotes
            34|S        Surround with double quotes
                50(     Take the first 50 characters
                   +    Append to the string from last output
                        Implicit output

2

3:56个角色,SOGL

"alert(eval(c="'abcdefghijklmnopqrstuvwxyzACDEFGHIJ”1#Οj

在这里尝试!

说明:

"...”      push the first 50 bytes of the previous answer
     1#Ο   wrap a quote around with that
        j  take the last letter off, as my answer has one more byte for the starting quote.

Javascript答案中带有引号,因此我必须添加一个起始引号,但是由于这不是代码高尔夫,所以没有关系。



2

7:137个字符,Java 8

v->{String t="⛽as=:'\"alert(eval(c=\"''abcdefghijklmnopqrstuvwxyzA";return t+("v->{String t=\""+t.replace("\"","\\\"")).substring(0,50);}

在线尝试。

说明:

v->{        // Method with empty unused parameter and String return-type
  String t="⛽as=:'\"alert(eval(c=\"''abcdefghijklmnopqrstuvwxyzA";
            //  String containing the first 50 characters of the previous answer
  return t  //  Return those first 50 characters
   +"v->{String t=\""+t.replace("\"","\\\"")).substring(0,50);}
            //  Concatted with the first 50 characters of my answer
            //  with correct escape-slashes

啊哈!我认为Emoji彻底杀死了这个挑战。好东西。
魔术章鱼缸

@MagicOctopusUrn我现在只注意到您关于“ 如果之前的人员在其来源中包含换行符或非ASCII字符,则可以将其剥离 ”的规则,因此,如果他们愿意,可以摆脱掉表情符号。对于我的答案,这两种方法都没有关系,因为无论如何我们都是以字符而不是字节来计数。
凯文·克鲁伊森

那不是诚实的角色数量,是的,我忘记了这个规则(而且总体上也忘记了挑战)。
魔术八达通Ur

老实说,想一想,这真的不是奎因挑战吗?
魔术八达通n

@MagicOctopusUrn有点。基本上,您可以得到quine的前50个字符。在Java中,通常通过将未格式化的源代码放入String中,然后正确地格式化/转义双引号和斜杠来形成quines。但是,Java 8中的基本quine lambda函数已经是88字节(请在线尝试),因此在Java中,如果不使用完整的quine,则这一挑战要短得多。我可以想象奎因是大多数语言中最好的方法。
凯文·克鲁伊森

1

6:70个字符,表情符号

⛽as=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxyzAC🚘👥💬⛽💬🔀👫💬0💬📥💬-1💬📥✂👫➡

在线尝试!

似乎不可能使其不输出结尾的换行符。如果那不行,那么我将删除答案。

说明:

⛽ ... 🚘	String literal
👥		Duplicate
💬⛽💬		Push ⛽ as a string
🔀		Swap the top two strings. Stack: [long literal] "⛽" [long literal]
👫		Concatenate.
💬0💬📥💬-1💬📥✂	Remove the last character
👫		Concatenate.
➡		Print.

应该⛽🏁🍇🍦a🔤s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwx🚘👥💬⛽💬🔀👫💬0💬📥💬-1💬📥✂👫➡不是吗?betseg的Emojicode答案不是以开头,as=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxyzAC而是以开头🏁🍇🍦a🔤s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwx
凯文·克鲁伊森

@KevinCruijssenIf the person before you has included newlines or non-ASCII characters in their source, you may STRIP them.
NieDzejkob

嗯,我错过了该规则。在这种情况下,我将更新答案。
凯文·克鲁伊森

出于好奇,您为什么剥去它们?使将来的答案更容易吗?因为您的代码可以完美运行,而不会剥离先前答案的表情符号:请在此处尝试
凯文·克鲁伊森

@KevinCruijssen半年前。我不记得了
NieDzejkob

1

12:202个字符,Ruby

puts "21ipdgmtwkkke7ynvzpcnlzt7kl".to_i(36).to_s(7).gsub('0','>').gsub('1','+').gsub('2','-').gsub('3','<').gsub('4','[').gsub('5','.').gsub('6',']')+'puts "21ipdgmtwkkke7ynvzpcnlzt7kl".to_i(36).to_s(7'

在线尝试!


以7为底编码上一个答案的前50个字符

  • 0:>
  • 1:+
  • 2:-
  • 3:<
  • 4:[
  • 5 :。
  • 6:]

然后将其转换为基数为36,以获取“ 21ipdgmtwkkke7ynvzpcnlzt7kl”


0

9:55个字符,果冻

“"v->{String t=`"as=:'\`"alert(eval(c=\`"''abcdefg”;”“;

在线尝试!


从输出中删除了非ASCII字符,因为允许这样做,而Jelly则忽略了它。

说明

这从上一个答案的前50个字符(减)的字符串文字开始,然后将其附加到该字符;”“然后再将原始字符串文字附加到末尾;。由于删除了一个字符,因此我的源代码的前50个字符是前一个答案中的49个字符,并且前面带有a ,这使得该程序非常简短。(是的,我知道这不是但如果可以的话,为什么不打高尔夫球呢?)


0

10:116字符,Python 3

print('''“"v->{String t=`"as=:'\`"alert(eval(c=\`"''abcdefgprint(\'\'\'“"v->{String t=`"as=:'\`"alert(eval(c=\`"''')

只需打印一个字符串,该字符串包含答案9的前50个字符,然后是其来源的前50个字符。不需要像奎纳一样的聪明,因为转义的引号(\'\'\')出现在第50个字符之后,因此不需要在输出中重现。

此方法几乎可以在任何语言中使用-您只需转义上一个答案中出现的所有引号字符。因此,我认为在这一挑战中没有太多挑战。


0

11:723个角色,布雷恩***

+[------->++<]>++.++.---------.+++++.++++++.+[--->+<]>+.-...-----.[----->++<]>++.--[++>---<]>-.---[-->+++<]>-.[->++<]>-.[--->++<]>+.[--->+<]>+++.--.---------.+++++.-------.-[--->+<]>--.---[->++++<]>.[-->+<]>+++.+++[-->+++<]>.[->+++<]>++.+[--->+<]>.--[--->+<]>--.+[-->+<]>+++.---.-[--->++<]>+.+[------>+<]>.++++.[->+++<]>++.+[--->+<]>.+++++++++++.-------.+++++++++++++.++.+[--->+<]>+.+[--->+<]>++.[--->+<]>-.[->+++<]>-.+++++++++++.[--->+<]>++++.+[--->+<]>.[--->++<]>-----.+[-->+++<]>-.++++.[->+++<]>++.[[-]<]++[------>+<]>.++[->++<]>+.-[-->+<]>.......---[-->+++<]>-.+[--->++<]>+..+[----->+<]>.++[-->+++<]>.[--->++<]>.+[--->++<]>+..+++.---..+++.-.........+.---.....+++.---......+++.---.++[->++<]>+.-[-->+<]>...---[-->+++<]>-.

剥去了无法打印的字符。几乎完全由Brainfuck Text Generator生成。还是应该懒惰吧?

蒂奥

Print [print('''"v->{String t=`"as=:'\`"alert(eval(c=\`"] +[------->++<]>++.++.---------.+++++.++++++.+[--->+<]>+.-...-----------.++++++.[----->++<]>++.--[++>---<]>-.---[-->+++<]>-.[->++<]>-.[--->++<]>+.[--->+<]>+++.--.---------.+++++.-------.-[--->+<]>--.---[->++++<]>.[-->+<]>+++.+++[-->+++<]>.[->+++<]>++.+[--->+<]>.--[--->+<]>--.+[-->+<]>+++.---.-[--->++<]>+.+[------>+<]>.++++.[->+++<]>++.+[--->+<]>.+++++++++++.-------.+++++++++++++.++.+[--->+<]>+.+[--->+<]>++.[--->+<]>-.[->+++<]>-.+++++++++++.[--->+<]>++++.+[--->+<]>.[--->++<]>-----.+[-->+++<]>-.++++.[->+++<]>++.
Clear all cells to left until first empty cell [[-]<]
Print [+[------->++<]>++.++.---------.+++++.++++++.+[--->] ++[------>+<]>.++[->++<]>+.-[-->+<]>.......---[-->+++<]>-.+[--->++<]>+..+[----->+<]>.++[-->+++<]>.[--->++<]>.+[--->++<]>+..+++.---..+++.-.........+.---.....+++.---......+++.---.++[->++<]>+.-[-->+<]>...---[-->+++<]>-.

您似乎在打印Brainfuck答案的第2至第51个字符,而不是前50个(因为它缺少第一个>):在线尝试。同样,您可能想删除字符,因为您的Brainfuck答案当前将其输出为不可打印的``。
凯文·克鲁伊森

>一开始似乎是一个偶然此外,我放弃了字。根据其他答案,我认为这意味着我只需要打印前49个字符。
Panda0nEarth,
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.