опис проблеми
Уявіть, що ви черепаха на сітці. Вам дано два числа 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 і b , і видає як вихід шаблон для цих чисел, заданий правилами вище.
Вимоги до форматування:
- Кожна клітинка має два символи
- Вміст комірок правильно вирівняний у межах цих двох символів
- Клітини в одному ряду відмежовані пробілом
- Перший стовпець комірок повинен містити не порожню комірку
- Усі рядки повинні містити порожні комірки
- Пробіл пробігу не потрібно, але дозволений
- Однак загальна ширина кожного ряду не повинна перевищувати 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