バイナリカウンターをquineで記述します


10

s_zeroとs_oneを呼び出す2つのコードフラグメントを記述します。

プログラム(l、n)は、左側にs_zeroが埋め込まれた、バイナリのnの桁に対応するs_zeroとs_oneのlコピーで構成されます。

たとえば、s_zero = fooおよびs_one =のbar場合、
Program(4、0 )= foofoofoofoo
Program(4、1 )= Program(4、2 foofoofoobar
)= foofoobarfoo
etc.

プログラム(l、n)は、プログラム(l、(n + 1)mod(2 ^ l))のソースを標準出力に出力する必要があります。上記の例でfoobarfoofoofoobarfoobar、実行時に印刷する必要があります。

あなたのスコアはフラグメントs_zeroとs_oneの長さの合計です


codegolf.stackexchange.com/questions/35974/…にほぼ複製-2つの異なるコードブロックを含むquiningプログラムによって計算が行われます。
feersum

プログラムは独自のソースコードを読み取ることができますか?
ドアノブ

2
@feersum同意しない。これははるかに簡単です。特に、改行を判別できる必要はありません。さらに、その仕事違いを生むと思います。さもなければ、一般化されたすべてのクインチャレンジは、基本的なクインチャレンジのまとまりになります。
マーティンエンダー2015年

単純なタスクの利点は、これまでに見られたような驚くほど短い答えを作成するための競争を促進することです。この課題を異なるものとして正当化できることを願っています!
QuadmasterXLII、2015年

1
s_zeroとs_oneは異なる必要があることに注意してください。それ以外の場合、2 * nスコアのソリューションが多数あります。
randomra

回答:


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. ";
}_~


3

CJam、47 + 47 = 94バイト

0コード:

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

1つのコード:

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

言い訳をすみません。

私はまだそこに数バイトを削ることができると確信しています。これ以上ゴルフに煩わされることができないと判断したら、説明を追加します。

ここでテストしてください。



1

GolfScript、37 + 37 = 74バイト

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

user23013のCJamソリューションほど短くはありませんが、使用する言語の多様性を(わずかに)向上させるために、とにかくこれを投稿すると思いました。

私の解決策を直接既存のソリューションのいずれかに基づいていない(と、私はまだ非常によくCJamを読んでいないと確かに、私は、それらを詳細に検討していない)、それらはすべての機能が同じ基本的なクワイン構造の変異体({".~"}.~中GolfScript、{"_~"}_~CJam)。これらの言語で任意のペイロードを持つクインを作成する最も効率的な方法の1つであると思われるため、これはそれほど驚くべきことではありません。

このコードには、私があまり好きではない部分がいくつかあります。これをさらにゴルフすることは可能かもしれないと思いますが、私はこれにあまりにも多くの時間を費やしました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.