Problembeschreibung
Stellen Sie sich vor, Sie sind eine Schildkröte auf einem Gitter. Du erhältst zwei Zahlen f und b und siehst nach Osten. Sie marschieren über das Raster und zählen dabei jede Zelle, auf die Sie stoßen, gemäß den folgenden Regeln:
- Standardmäßig schreiben Sie die Zählung in die Zelle, in der Sie sich befinden, und gehen dann vorwärts.
- Wenn die Zählung durch f teilbar ist , schreiben Sie
F
in die Zelle , in der Sie sich befinden, biegen nach rechts ab und gehen vorwärts. - Wenn die Zählung durch b teilbar ist , schreiben Sie
B
in die Zelle , in der Sie sich befinden, biegen links ab und gehen vorwärts. - Wenn die Zählung sowohl durch f als auch durch b teilbar ist , schreiben Sie
FB
in die Zelle , in der Sie sich befinden, und gehen vorwärts. - Wenn du einen Platz erreichst, auf dem du schon warst, hörst du auf.
Wenn Sie beispielsweise diese Regeln mit f = 3 und b = 5 befolgen, wird ein Muster wie das folgende generiert:
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
Die Herausforderung
Schreiben Sie ein Programm oder eine Funktion, die zwei Zahlen als Eingabe akzeptiert, die f und b entsprechen , und als Ausgabe das Muster für diese Zahlen erzeugt, das durch die obigen Regeln gegeben ist.
Formatierungsanforderungen:
- Jede Zelle ist zwei Zeichen breit
- Der Zelleninhalt wird innerhalb dieser beiden Zeichen rechtsbündig ausgerichtet
- Zellen in derselben Zeile werden durch ein Leerzeichen begrenzt
- Die erste Spalte der Zellen muss eine nicht leere Zelle enthalten
- Alle Zeilen müssen nicht leere Zellen enthalten
- Ein nachgestelltes Leerzeichen ist nicht erforderlich, aber zulässig
- Die Gesamtbreite jeder Zeile darf jedoch das Dreifache der Anzahl nicht leerer Spalten nicht überschreiten
Ihr Code muss für bereitgestellte Testfälle funktionieren.
Standardlücken sind nicht zulässig.
Das ist Code Golf; kürzeste Antwort in Bytes gewinnt.
Testfälle
(f = 3, b = 5 Fall hier aus Höflichkeitsgründen wiederholt).
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