RoboCritters(語源)は真新しい難解なプログラミング言語です(気にせずに探してみてください、私はそれを発明しました)。これはBrainfuck(BF)の一種で、通常の演算子置換スキームよりも少し複雑です。RoboCrittersのすべてのプログラムは、7文字のみを含むテキストの長方形のグリッドに加えて、グリッドを形成する改行です。. []/\|
RoboCrittersプログラムの例:
|\/||./|[]||
[..][][] |
|/\|[..][..]
[..] \/\/
RoboCrittersプログラムをBFに変換するには、グリッド内の各非改行文字を通常の読み取り順序(左から右、次に上から下)で見てください(例:)|\/||./|[]||[..][][] ||/\|[..][..][..] \/\/
。
現在のキャラクターから右下に伸びるグリッドの4×2セクションが、以下にリストされている8つのロボットクリッターのいずれかに正確に一致する場合、対応するBFコマンド(><+-.,[]
)を(最初は空の)BFプログラムに追加します。
4×2グリッドセクションの場合 がロボットクリッターのいずれとも一致しないか、範囲外になった場合、BFプログラムには何も追加されません。
ジョイボット、
>
コマンド:[..] \][/
Calmbot、
<
コマンド:[..] /][\
Squidbot、
+
コマンド:[..] //\\
スパイダーボット、
-
コマンド:[..] ||||
バニーボット、
.
コマンド:[][] [..]
トゥースボット、
,
コマンド:[..] |/\|
Foxbot、
[
コマンド:|\/| [..]
バットボット、
]
コマンド:[..] \/\/
したがって、サンプルプログラムを読む
|\/||./|[]||
[..][][] |
|/\|[..][..]
[..] \/\/
最初にFoxbot(列1、行1)、次にToothbot(c1、r2)、Bunnybot(c5、r2)、最後にBatbot(c9、r3)に遭遇することがわかります。これはBFプログラムに対応し[,.]
ます。
FoxbotとToothbotが重複していることに注意してください。これは意図的なものです。ロボットクリッターは重なったときに異なって解釈されません。
チャレンジ
RoboCrittersプログラムを取り込み、同等のBFを出力する最短のプログラムを作成します。BFを実行したり、BFが有効であることを確認したりする必要はありません。RoboCrittersコードをBFコードに変換するだけです。
詳細
すべての入力RoboCrittersプログラムは有効になります。つまり、これらは7文字のみを含む正確に長方形のテキストブロックに
. []/\|
加えて、それを形成するための改行になります。改行は便利な共通表現にあるかもしれません。オプションで、プログラムの末尾に改行が1つあると想定することもできます。0x0の空(または単一の改行)プログラムを含む、4x2より小さいRoboCrittersプログラムをサポートする必要があります。これらはすべて、空のBFプログラム(空の文字列)に対応しています。
出力BFプログラムは、8つのBFコマンド文字のみを含む1行のストリングでなければなりません
><+-.,[]
。オプションで、単一の末尾の改行がある場合があります。通常の方法(stdin /テキストファイル/コマンドライン)で入力を取り、stdoutまたは言語の最も近い代替手段に出力します。
プログラムの代わりに、RoboCrittersプログラムを文字列として取得し、BFプログラム文字列を出力または返す関数を作成できます。
例
入力:(上記の例の変形)
|\/|[][] [..][][] |/\|[..] \/\/
出力:
[,.]
入力:(すべてのロボット生物をテストします)
[..][[[[[..]]. ]|\/| \][/[..]//\\[..][..] [..]/][\[][]|/\|[..] ||||/\| [..]| |\/\/
出力:
>+[<,-.]
入力:
[..] [..] [..] [..] [..] [..] [..] [..] |\/| [..] [..] [..] [..] [..] |\/| [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] |\/| [..] [..] [..] [..] [..] [..] [..] [][] [..] [..] [..] [..] [][] [..] [..] [..] [..] [..] [..] [..] [][] [][] [..] [..] [..] [][] [..] [..] [][] [..] [..] [][] [..] [][] [..] [..] [..] [][] [..] [..] [..] [..] [..] [..] [][] [..] [..] [..] [..] [..] [..] [..] [..] [][] [..] [..] [..] [][] [..] [..] [..] [][] //\\ //\\ //\\ //\\ //\\ //\\ //\\ //\\ [..] \][/ //\\ //\\ //\\ //\\ [..] \][/ //\\ //\\ \][/ //\\ //\\ //\\ \][/ //\\ //\\ //\\ \][/ //\\ /][\ /][\ /][\ /][\ |||| \/\/ \][/ //\\ \][/ //\\ \][/ |||| \][/ \][/ //\\ [..] /][\ \/\/ /][\ |||| \/\/ \][/ \][/ [..] \][/ |||| |||| |||| [..] //\\ //\\ //\\ //\\ //\\ //\\ //\\ [..] [..] //\\ //\\ //\\ [..] \][/ \][/ [..] /][\ |||| [..] /][\ [..] //\\ //\\ //\\ [..] |||| |||| |||| |||| |||| |||| [..] |||| |||| |||| |||| |||| |||| |||| |||| [..] \][/ \][/ //\\ [..] \][/ //\\ //\\ [..]
出力:(BF Hello Worldプログラム)
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
入力:(ロボット生物は存在しません)
/\\\[]. ]..[..] \\//||\
出力:(空の文字列)
得点
バイト単位の最短提出が勝ちです。(便利なバイトカウンター。)Tiebreakerは最も投票数の多いポストです。