俄罗斯嵌套奎因


18

一个俄罗斯嵌套娃娃,通常被称为一个俄罗斯套娃,是包含一个缩小版的自己,一个洋娃娃,然后包含自己的另一个较小的版本,其中包含一个较小的版本的本身,它包含自身的缩小版,其本身包含一个较小的版本...-直到最后一个,最后一个为空。一个例子:

娃娃娃<3

今天,您的目标是通过编写一个程序或函数来模仿这种俄罗斯传统,当该程序或函数包含N次时,将打印包含N-1次自身的副本。

例如,玩偶程序abcd将具有N = 3程序abababcdcdcd,该程序将打印N = 2程序ababcdcd,该程序将打印原始的N = 1程序abcd,最后打印N = 0的程序,该程序为空。从理论上讲,这应该适用于任何合理的N值。

规则:

  • 这是一个TIO程序,可帮助您根据程序生成玩偶程序
  • 适用标准Quine规则
  • 适用标准漏洞
  • “包含”是指直接在先前版本的中心,因此您的解决方案必须具有正偶数个字节。长度为10的程序将在第五个字节之后插入原始副本,然后在第十个字节之后插入另一个副本,依此类推。
  • 输出中允许单个尾随空格
  • 由于这是,因此您的目标是使N = 1程序尽可能短。
  • 您的代码的解释将不胜感激

沙盒帖子(已删除)
Jo King

对于什么N是代码大小衡量?
瑕疵的

@flawr N = 1 .....
Jo King


12
那个动画真的有必要吗?
毛茸茸的

Answers:



9

JavaScript,36 32字节

利用Function.prototype.toString()不带任何参数的事实,因此将忽略传递给它的任何参数。

部分受到user202729解决方案的启发。

f=_=>f.toString( ).slice(14,-16)

尝试一下

o.innerHTML=["<span>Five</span>",(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString( ).slice(14,-16) ).slice(14,-16) ).slice(14,-16) ).slice(14,-16) ).slice(14,-16))(),"<span>Four</span>",(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString( ).slice(14,-16) ).slice(14,-16) ).slice(14,-16) ).slice(14,-16))(),"<span>Three</span>",(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString( ).slice(14,-16) ).slice(14,-16) ).slice(14,-16))(),"<span>Two</span>",(f=_=>f.toString(f=_=>f.toString( ).slice(14,-16) ).slice(14,-16))(),"<span>One</span>",(f=_=>f.toString( ).slice(14,-16))(),"<span>Thunderbirds Are Go!</span>"].join`\n`
span{font-weight:bold;font-size:16px;line-height:1.5em;text-transform:uppercase;}span:last-child{font-size:8px;}
<pre id=o></pre>



5

果冻,16字节

Ṿḣ-9Ḋð}“““““““““

在线尝试!

加倍:在线试用!

三倍:在线试用!


Jelly没有任何可嵌套的结构,但是其字符串文字是自动终止的。


Ṿḣ-9Ḋ    First chain. (monadic)
Ṿ        Uneal. (to string)
 ḣ-9     Take the ead, ends at the -9'th character.
    Ḋ    equeue, remove the first character.

     ð             Terminate the first chain, start a new one.
      }            Convert the last monadic chain to a dyadic one.
       “““““““““   String literal.
                   This matches the pattern <dyad> <nilad>, so applies
                   the the corresponding rules. This way a link can take data
                   to the right of it.

将尝试不同的方法以查看它们是否可以缩短。



2

dc,4个字节

 []p

与其他答案类似,由于字符串中的字符串dc具有start([)和end(])分隔符(即,"不同时执行这两项任务等),因此它们可以嵌套,而无需付出任何实际努力。p打印。

N = 1:在线尝试!

N = 2:尝试嵌套!

N = 3:尝试嵌套!


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.