問題の説明
あなたがグリッド上のカメだと想像してください。2つの数字fとbが与えられ、東を向いています。次の規則に従って、発生した各セルをカウントしながら、グリッド全体で行進を実行します。
- デフォルトでは、現在のセルにカウントを書き込んでから先に進みます。
- カウントがfで割り切れる場合、次のように記述します。
F
、現在のセルに、右折してから前方に歩きます。 - カウントがbで割り切れる場合、次のように記述します。
B
、現在のセルに、左に曲がってから前方に歩きます。 - カウントがfとbの両方で割り切れる場合、次のように記述します。
FB
現在のセルに、次に歩きます。 - すでに訪れた広場に着いたら、立ち止まります。
たとえば、f = 3およびb = 5を使用してこれらのルールに従うと、次のようなパターンが生成されます。
F 28 29 FB 1 2 F
26 4
F B B F
23 7
22 8
F B B F
19 11
F 17 16 FB 14 13 F
チャレンジ
fとに対応する2つの数値を入力として受け入れるプログラムまたは関数を記述します bに、上記の規則で指定されたこれらの数値のパターンを出力として生成作成します。
フォーマット要件:
- 各セルの幅は2文字です
- セルの内容はこれらの2文字内で右揃えになります
- 同じ行のセルはスペースで区切られます
- セルの最初の列には空でないセルが含まれている必要があります
- すべての行に空でないセルが含まれている必要があります
- 末尾の空白は必須ではありませんが、許可されています
- ただし、各行の合計幅は、空でない列の数の3倍を超えてはなりません
コードは、提供されたテストケースで機能する必要があります。
標準の抜け穴は許可されていません。
これはコードゴルフです。バイト単位の最短回答が優先されます。
テストケース
(f = 3、b = 5は、便宜のためここで繰り返されています)。
f=3, b=5 ->
F 28 29 FB 1 2 F
26 4
F B B F
23 7
22 8
F B B F
19 11
F 17 16 FB 14 13 F
f=4, b=10 ->
F 25 26 27 F
23 29
22 1 2 3 F
21 5
FB 6
19 7
18 B 9 F
17 11
F 15 14 13 F
f=3, b=11 ->
F 16 17 F
14 19
13 1 2 F
F B 4
10 5
F 8 7 F
f=5, b=9 ->
F 41 42 43 44 1 2 3 4 F
39 6
38 7
37 8
F B B F
34 11
33 12
32 13
31 14
F 29 28 B B 17 16 F
26 19
F 24 23 22 21 F
f=5, b=13 ->
F 31 32 33 34 F
29 36
28 1 2 3 4 F
27 6
F B 7
24 8
23 9
22 B 12 11 F
21 14
F 19 18 17 16 F