fundo
O maior divisor comum ( gcd para abreviar) é uma função matemática conveniente, pois possui muitas propriedades úteis. Uma delas é a identidade de Bézout : se d = gcd(a, b), então existem inteiros xe ytal d = x*a + y*b. Nesse desafio, sua tarefa é visualizar essa propriedade com arte ASCII simples.
Entrada
Suas entradas são dois números inteiros positivos ae b, dados em qualquer formato razoável. Você também pode receber entradas unárias (repetições de um único caractere ASCII imprimível de sua escolha), mas deve ser consistente e usar o mesmo formato para ambas as entradas. As entradas podem estar em qualquer ordem e podem ser iguais.
Saída
Sua saída é uma sequência sde comprimento lcm(a, b) + 1( lcm significa o menor múltiplo comum). Os caracteres de srepresentam números inteiros de 0até lcm(a, b). O caractere s[i]é minúsculo ose ifor múltiplo de aou b, e um período .caso contrário. Observe que zero é um múltiplo de cada número. Agora, devido à identidade de Bézout, haverá pelo menos um par de caracteres ona sdistância exata gcd(a, b). O par mais à esquerda deve ser substituído por Os maiúsculo ; este é o resultado final.
Exemplo
Considere as entradas a = 4e b = 6. Então nós temos gcd(a, b) = 2e lcm(a, b) = 12, portanto, o comprimento de sserá 13. Os múltiplos de ae bsão destacados da seguinte forma:
0 1 2 3 4 5 6 7 8 9 10 11 12
o . . . o . o . o . . . o
Existem dois pares de os com a distância dois, mas substituiremos apenas os mais à esquerda por Os, então a saída final é
o...O.O.o...o
Regras e pontuação
Você pode escrever um programa completo ou uma função. A menor contagem de bytes vence e as brechas padrão não são permitidas.
Casos de teste
1 1 -> OO
2 2 -> O.O
1 3 -> OOoo
4 1 -> OOooo
2 6 -> O.O.o.o
2 3 -> o.OOo.o
10 2 -> O.O.o.o.o.o
4 5 -> o...OO..o.o.o..oo...o
8 6 -> o.....O.O...o...o.o.....o
12 15 -> o...........O..O........o.....o.....o........o..o...........o
19 15 -> o..............o...o..........o.......o......o...........o..o..............OO.............o....o.........o........o.....o............o.o..............o.o............o.....o........o.........o....o.............oo..............o..o...........o......o.......o..........o...o..............o
.,oouO.) Ou precisa ser1? Ou0?