放射線軟化クイン


38

それは簡単です:キャラクターを削除しても、それはまだクインである適切なクインを作成します。

これと放射線強化クインの違いはAB、プログラムがの場合、放射線強化クインでAは出力されますABが、ここでAは出力されますA

コードゴルフ、すべての標準ルール、標準の抜け穴が適用され、不正行為はありません。


空のプログラムは有効ですか?
Loovjo


3
@feersumチャレンジは「どこでクインを作るか」と述べているので、AB出力すべきABです。
メゴ

1
@Megoはそれが言っていることを知っていますが、仕様は必ずしもそれほど正確ではなく、例には示されていません。
feersum

4
@feersum「馬を作る」とは、馬を作るという意味です。「これと耐放射線性のクインの違い...」とは、1バイトが削除されたプログラムが、元のプログラムのソースを印刷するプログラムではなく、クインになるという唯一の違いを意味します。ここにはあいまいさはありません。
メゴ

回答:


22

> <>(魚)、145 107バイト

この答えは、問題を解決するために> <>のジャンプ命令を使用しています。

!<0078*+00~..>0[!."r43a*+8a+&{ee+00&1-:&(?.~~ol?!;4b*0.0f<>0['r3d*159*+&}7a*00&1-:&(?.~~ol?!;68a*+0.0+*a58 

このクインには、実際には2つの異なるクインジェネレータが含まれています。いくつかのジャンプロジックから始まり、デフォルトでは左クインを使用します。ジャンプロジックまたは左クインから文字が削除されると、プログラムは右クインにジャンプします。

ここで試すことができます

説明

コードはいくつかの部分に分解できます。

A: !<0078*+00~..>0[!. 
B:              >0[!."r43a*+8a+&{ee+00&1-:&(?.~~ol?!;4b*0.
C:                                                    .0f<
D:                                                        >0['r3d*159*+&}7a*00&1-:&(?.~~ol?!;68a*+0.
E:                                                                                                 .0+*a58 

さまざまな部分の説明:

  • A:Cの右側にジャンプします。Aから文字が削除されると、Dの左側またはEの右側にジャンプして、2番目のクインをトリガーします。BまたはCから文字が削除されると、コードは1文字左にシフトされ、Dの左にジャンプします。
  • C:このコードはBの左にジャンプします。
  • B:クイン#1
  • D:クイン#2
  • E:Dの左にジャンプします

クインの説明(例として#1を使用):

命令ポインターがいずれかのクインに到達すると、そのクインが完全に無傷であることを確認できます。

>0[!.                                       //Fix the instruction pointer's direction and empty the stack (The '!.' is a leftover from codepart A)
     "r43a*+                                //Start reading all of the code and add the '"' character to the stack
            8a+&                            //Because the quine started reading at the 19th character instead of the first, the stack has to move 18 characters. 
                                            //This part saves the number 18 to the register.
                {ee+00&1-:&(?.              //Move the stack one to the left, decrease the stack by 1. If the stack is not empty yet, jump back to the start of this section.
                              ~~              //Clean the temporary variables from the stack. It should now contain the whole quine.
                                ol?!;4b*0.  //Print the first character from the stack. As long as the stack isn't empty, jump back to the start of this section.

説明してください。
電卓

上記を繰り返します。
電卓

1
これで十分ですか?
タイステルハール

36

言語、4.54×10 761バイト

この数のヌル文字があります。

453997365974271498471447945720930600149036031871190716908688344432973027776681259141680552038829875159204621651993092104775733418288411812715164994750890484868305218411129600012389568016974351721147925344946382782884546247102886167837964612372737300786173159265347137401863281368021545169383664534228503236761742285358985343373496184959796553930661837467682191561275123057706776367104142995491262443697167483190110516522677811931124842961701222425076750211774387637740969301686178545299089832300154448308384461700726890067468872402133010536518468336342175124002115991866466700174974019423711837589532744970385003356612639263433822126850314801275940879069069974437167102618471264140597777702065896715558989678487253830854848740247786166790545462769498303055791292

この課題の基準が「適切な馬」の定義とどのように矛盾するかを見て、真剣に、単項バリアントが勝つと思います。

拡張されたBrainfuckコード:

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

Lenguageプログラムから1つの文字が削除されると、最後の文字がに​​なり<、プログラムは1文字少なく印刷されます。


1
どのようにしてその不動点を見つけたのですか?(あるいは、Brainfuckコードはどのように機能しますか?)
Martin Ender

1
@MartinBüttner最初の大きなループは、「> +++ ...」の形式でデータをコピーおよびエンコードします(そして逆にします)。もう1つの大きなループは、データを単項の整数として出力します。それはそれほど複雑ではありませんが、それはBrainfuckであるという理由だけで長いです。
jimmy23013

そうそう、それは単なるBrainfuckの馬のようなものですが、異なるデコード機能を備えていますか?
マーティンエンダー

@MartinBüttnerやや。しかし、プログラムの半分は「デコード機能」です。
jimmy23013

同様の手法を使用して、codegolf.stackexchange.com / q / 57257/8478の任意のスコアの回答を作成できるようです(ただし、正確に機能するかどうかは、私の最新のコメントに対する回答に依存します)。
マーティンエンダー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.