通訳を書く 2Bの
好き David Cattの難解な言語2Bが。各セルがバイトの独立したテープ(「サブテープ」)であるテープにメモリが保存されています。通訳を書いてください!
言語仕様
公式の仕様はここにあります。この仕様で"
は、範囲内の数値0-9
(0
と解釈される10
)を_
意味し、任意の長さの文字列を意味します。各セルはの範囲の値を格納し、0-255
オーバーフロー/アンダーフローはBFと同じように折り返します。(ありがとう@MartinBüttner)。テキストを数字0-255
に変換するには、ASCIIコードを使用します。私はこれについて詳細を見つけることができないので、テープの長さは255
最小であるべきだと言いますが、そうでない場合は編集してください。
+-------------+----------------------------------------------------------------------------------------------------------------------------------------+
| Instruction | Description |
+-------------+----------------------------------------------------------------------------------------------------------------------------------------+
| 0 | Zeroes the current cell and clears the overflow/underflow flag. |
| { | If the current cell is zero, jump to the matching }. |
| } | A placeholder for the { instruction. |
| ( | Read a byte from the input stream and place it in the current cell. |
| ) | Write the value of the current cell to the console. |
| x | Store the value of the current cell in a temporary register. |
| o | Write the value of the temporary register to the console. |
| ! | If the last addition overflowed, add one to the current cell. If the last subtraction underflowed, subtract one from the current cell. |
| ? | Performs a binary NOT on the current cell. |
| +" | Adds an amount to the current cell. |
| -" | Subtracts an amount from the current cell. |
| ^" | Moves the subtape up a number of times. |
| V" | Moves the subtape down a number of times. |
| <" | Moves the tape left a number of times. |
| >" | Moves the tape right a number of times. |
| :_: | Defines a label of name _. |
| *_* | Jumps to a label of name _. |
| ~_~ | Defines a function of name _. |
| @_@ | Calls a function of name _. |
| % | Ends a function definition. |
| #_# | Is a comment. |
| [SPACE] | Is an NOP. |
| [NEWLINE] | Is treated as whitespace and removed. |
| [TAB] | Is treated as whitespace and removed. |
+-------------+----------------------------------------------------------------------------------------------------------------------------------------+
テスト
+0+0+0+0+0+0+0+2)+0+0+9)+7))+3)-0-0-0-0-0-0-0-9)+0+0+0+0+0+0+0+0+7)-8)+3)-6)-8)-7-0-0-0-0-0-0)
出力すべき Hello world!
+1:i:{()*i*}
cat
改行なしでプログラムを並べ替えます。
+1:loop:{@ReadChar@*loop*}@PrintHello@@WriteAll@(~ReadChar~(x-0-3<2o^1>1+1>1%~PrintHello~+0+0+0+0+0+0+0+2)-1+0+0+0)+7))+3)+1-0-0-0-0-0-0-0-0)%~WriteAll~<1x:reverse:{<1v1>1-1*reverse*}o-1:print:{-1<1)^1>1*print*}%
最初に名前を受け入れ、次にを押すとReturn、出力する必要がありますHello name
(名前は入力されたものです)。
そのプログラムの功績はDavid Cattにあります。
私は完全なテストプログラムに取り組んでいます。
ルール
- 標準的な抜け穴は禁止されています
- 通訳者は、コメントを除き、すべての仕様を満たす必要がありますが、コメントは必須ではありません。
得点
- これはcode-golfなので、最少バイトが勝ちます!
- インタープリターがコメントを処理する場合は-10バイト。
リーダーボード
これは、通常のリーダーボードと言語ごとの勝者の概要の両方を生成するスタックスニペットです。
回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。
# Language Name, N bytes
N
提出のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば:
# Ruby, <s>104</s> <s>101</s> 96 bytes