opis problemu
Wyobraź sobie, że jesteś żółwiem na siatce. Otrzymałeś dwie liczby f i b , i patrzysz na wschód. Przeprowadzasz marsz przez siatkę, licząc każdą napotkaną komórkę, zgodnie z następującymi zasadami:
- Domyślnie zapisujesz liczbę w komórce, w której się znajdujesz, a następnie idziesz naprzód.
- Jeśli liczba jest podzielna przez f , piszesz
F
do komórki, w której się znajdujesz, następnie skręcasz w prawo, a następnie idziesz naprzód. - Jeśli liczba jest podzielna przez b , piszesz
B
do komórki jesteś w, a następnie skręcić w lewo, a następnie pieszo do przodu. - Jeśli liczba jest podzielna przez f i b , piszesz
FB
do komórki, w której się znajdujesz, a następnie idziesz naprzód. - Jeśli dojdziesz do kwadratu, na którym już byłeś, przestajesz.
Na przykład przestrzeganie tych reguł przy użyciu f = 3 i b = 5 wygeneruje taki wzór:
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
Wyzwanie
Napisać program lub funkcji, które przyjmuje dwa numery jako wejścia, odpowiadające F i B , i wytwarza na wyjściu wzorzec dla tych liczb podanych w powyższych zasad.
Wymagania dotyczące formatowania:
- Każda komórka ma szerokość dwóch znaków
- Zawartość komórki jest wyrównana do prawej w obrębie tych dwóch znaków
- Komórki w tym samym rzędzie są oddzielone spacją
- Pierwsza kolumna komórek musi zawierać niepustą komórkę
- Wszystkie wiersze muszą zawierać niepuste komórki
- Końcowe białe znaki nie są wymagane, ale dozwolone
- Jednak całkowita szerokość każdego wiersza nie może przekraczać 3-krotności liczby niepustych kolumn
Twój kod musi działać dla podanych przypadków testowych.
Standardowe luki są niedozwolone.
To jest kod golfowy; najkrótsza odpowiedź w bajtach wygrywa.
Przypadki testowe
(f = 3, b = 5 przypadek powtórzony tutaj dla wygody grzecznościowej).
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