Descrição do Problema
Imagine que você é uma tartaruga em uma grade. Você é dado dois números f e b , e você está voltada para o leste. Você realiza uma marcha pela grade, contando cada uma das células que encontrar, de acordo com as seguintes regras:
- Por padrão, você escreve a contagem na célula em que está e depois avança.
- Se a contagem é divisível por f , você escreve
F
na célula em que está, depois vira à direita e depois avança. - Se a contagem é divisível por b , você escreve
B
na célula em que está, depois vira à esquerda e depois avança. - Se a contagem é divisível por f e b , você escreve
FB
na célula em que está e depois avança. - Se você chegar a um quadrado em que já esteve, pare.
Por exemplo, seguir estas regras usando f = 3 eb = 5 gerará um padrão como este:
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
O desafio
Escrever um programa ou função que aceita dois números como entrada, correspondendo a f e b , e produz como saída o padrão para esses números indicados pelas regras acima.
Requisitos de formatação:
- Cada célula tem dois caracteres de largura
- O conteúdo da célula está alinhado à direita dentro desses dois caracteres
- As células na mesma linha são delimitadas por um espaço
- A primeira coluna de células deve conter uma célula não vazia
- Todas as linhas devem conter células não vazias
- O espaço em branco à direita não é necessário, mas é permitido
- No entanto, a largura total de cada linha não deve exceder 3 vezes o número de colunas não vazias
Seu código deve funcionar para os casos de teste fornecidos.
As brechas padrão não são permitidas.
Isso é código de golfe; a resposta mais curta em bytes vence.
Casos de teste
(f = 3, b = 5 caso repetido aqui como uma conveniência de cortesia).
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