Fondo
El máximo común divisor ( mcd para abreviar) es una función matemática conveniente, ya que tiene muchas propiedades útiles. Una de ellas es la identidad de Bézout : si d = gcd(a, b)
, entonces existen enteros x
y y
tal d = x*a + y*b
. En este desafío, su tarea es visualizar esta propiedad con un simple arte ASCII.
Entrada
Sus entradas son dos enteros positivos a
y b
, dados en cualquier formato razonable. También puede tomar entradas unarias (repeticiones de un solo carácter ASCII imprimible de su elección), pero debe ser coherente y usar el mismo formato para ambas entradas. Las entradas pueden estar en cualquier orden, y pueden ser iguales.
Salida
Su salida es una cadena s
de longitud lcm(a, b) + 1
( mcm representa el mínimo común múltiplo). Los caracteres de s
representan enteros de 0
a lcm(a, b)
. El carácter s[i]
es minúscula o
si i
es un múltiplo de a
o b
, y un punto en .
caso contrario. Tenga en cuenta que cero es un múltiplo de cada número. Ahora, debido a la identidad de Bézout, habrá al menos un par de personajes o
en s
cuya distancia es exactamente gcd(a, b)
. El par más a la izquierda debe ser reemplazado por mayúsculas O
; Este es el resultado final.
Ejemplo
Considere las entradas a = 4
y b = 6
. Entonces tenemos gcd(a, b) = 2
y lcm(a, b) = 12
, entonces la longitud de s
será 13
. Los múltiplos de a
y b
se resaltan de la siguiente manera:
0 1 2 3 4 5 6 7 8 9 10 11 12
o . . . o . o . o . . . o
Hay dos pares de o
s con la distancia dos, pero solo reemplazaremos los más a la izquierda con O
s, por lo que la salida final es
o...O.O.o...o
Reglas y puntaje
Puede escribir un programa completo o una función. El conteo de bytes más bajo gana, y las lagunas estándar no se permiten.
Casos de prueba
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
.
,o
oO
.) O tiene que ser1
? O0
?