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 xy ytal 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 ay 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 sde longitud lcm(a, b) + 1( mcm representa el mínimo común múltiplo). Los caracteres de srepresentan enteros de 0a lcm(a, b). El carácter s[i]es minúscula osi ies un múltiplo de ao 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 oen scuya 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 = 4y b = 6. Entonces tenemos gcd(a, b) = 2y lcm(a, b) = 12, entonces la longitud de sserá 13. Los múltiplos de ay bse 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 os con la distancia dos, pero solo reemplazaremos los más a la izquierda con Os, 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
.,ooO.) O tiene que ser1? O0?