用quine写一个二进制计数器


10

编写两个代码片段,我们将它们称为s_zero和s_one。

程序(l,n)由s_zero和s_one的l个副本组成,对应于二进制中n的数字,并在左侧填充s_zero。

例如,如果s_zero = foo和s_one =,bar
程序(4,0 )= foofoofoofoo
程序(4,1)= foofoofoobar
程序(4,2)= foofoobarfoo
等等。

程序(l,n)必须将程序(l,(n + 1)mod(2 ^ l))的源打印为标准输出。在上面的示例中,执行时foobarfoofoo必须打印foobarfoobar

您的分数是片段s_zero和s_one的长度之和


codegolf.stackexchange.com/questions/35974/…几乎相同-通过将程序与2个不同的代码块组合在一起进行计算。
feersum

该程序可以读取自己的源代码吗?
门把手

2
@feersum我不同意。这很容易,尤其是您不必确定换行符。此外,我认为该任务确实有所作为,否则,每一个广义的奎因挑战都将是基本奎因挑战的重复。
马丁·恩德

这项简单任务的优点在于,它鼓励竞争,以创造迄今为止所见的令人震惊的简短答案-我希望证明这一挑战是与众不同的!
QuadmasterXLII,2015年

1
可能值得注意的是s_zero和s_one必须不同。否则,我有许多2 * n分的解决方案。
randomra 2015年

Answers:


6

CJam,29 + 29 = 58字节

0代码:

0{"_~"]]z(3\+2b(2b2>a\+z~[}_~

1.代码:

1{"_~"]]z(3\+2b(2b2>a\+z~[}_~

说明

0                       " Push the current bit. ";
{"_~"                   " The basic quine structure. ";
    ]                   " Make an array of the current bit, the function and _~.
                          That is the code fragment itself. ";
    ]                   " Make an array of all code fragments in the stack. ";
    z(                  " Extract the array of the bits. ";
    3\+2b(2b2>          " Convert from base 2, decrease by one and convert back,
                          keeping the length. ";
    a\+z                " Put the bits back to the original position. ";
    ~                   " Dump the array of code fragments back into the stack. ";
    [                   " Mark the beginning position of the array of the next code fragment. ";
}_~

2
每一次...
Optimizer

3

CJam,47 + 47 = 94字节

0代码:

{`"_~"+]:+T2*0+:T)\AsSerS/_,(@2Y$#+2bU@->]zs}_~

1.代码:

{`"_~"+]:+T2*1+:T)\AsSerS/_,(@2Y$#+2bU@->]zs}_~

对不起。

我确定我仍然可以在那儿剃掉一些字节。一旦决定不再打高尔夫球,我将添加一个解释。

在这里测试。


1

CJam,45 + 45 = 90字节

0代码:

{`]W=L0+:L,Ua*L2b)2b+L,W*>\f{X$!s/\s*"_~"}}_~

1个代码:

{`]W=L1+:L,Ua*L2b)2b+L,W*>\f{X$!s/\s*"_~"}}_~

很快解释。

在这里在线尝试


1

GolfScript,37 + 37 = 74字节

0{`".~"+:q;]-2%1\{1$^.@&q@}%\;-1%~}.~
1{`".~"+:q;]-2%1\{1$^.@&q@}%\;-1%~}.~

并没有user23013的CJam解决方案那么短,但是我认为无论如何(如果只是)(略微地)增加所使用语言的多样性,我还是会发布。

我的解决方案不是直接基于任何现有解决方案(并且,实际上,我还没有详细研究它们,因为我对CJam的理解仍然不够好),但是它们都具有相同基本quine结构的变体({".~"}.~在GolfScript,{"_~"}_~在CJam中)。这并不是真的很令人惊讶,因为这似乎是用这些语言编写带有任意有效载荷的Quine的最有效方法之一。

我不太喜欢该代码的多个部分,我怀疑可能有进一步的打高尔夫球的可能,但是我已经花了太多时间在上面。

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.