El algoritmo euclidiano es un algoritmo ampliamente conocido para calcular el máximo común divisor (MCD) de dos enteros positivos.
El algoritmo
Para el propósito de este desafío, el algoritmo se describe a continuación:
Visualice las dos entradas como líneas adyacentes de cierto carácter,
por ejemplo, una entrada de3,4
puede ser representada por las líneas adyacentes000
y0000
Convierta los primeros
length(short_line)
caracteres en la línea más larga en otro carácter, digamos-
ahora que parece000
y---0
Elimina los primeros
length(short_line)
caracteres en la línea más larga.
ahora000
,0
Repite el paso 2 y 3 hasta que los dos tienen la misma longitud, utilizando las líneas más cortas y más largas después de cada iteración, por ejemplo
000
,0
-00
,0
00
,0
-0
,0
0
,0
- Puede elegir si desea detenerse aquí o continuar la iteración y convertir una de las líneas en una línea vacía.
Cada uno de estos pasos debe estar separado por un intervalo entre 0.3s y 1.5s.
El reto
Escriba un programa que, dados dos números naturales como entrada, cree una salida que se vea exactamente igual a la salida del algoritmo anterior. Puede usar otros caracteres ASCII imprimibles que no sean espacios en blanco que no sean 0
y -
, pero sea coherente y use solo dos caracteres. También puede usar algoritmos alternativos siempre que el resultado, incluido el tiempo, sea exactamente el mismo que produciría el algoritmo anterior.
Ejemplos
Este es un ejemplo con entrada 24,35
, que son coprimos, por lo que su GCD es 1.
Este es un ejemplo con entrada 16,42
, que tiene el GCD 2.
Reglas
- Este es un código de golf , por lo que gana los bytes más cortos
- Se aplican lagunas estándar
- Puede asumir que la entrada es un número entero decimal positivo
Aclaraciones
- Las líneas que representan los números deben permanecer en su orden original, es decir, la primera y segunda líneas del primer "cuadro" visualizado deben ser la primera y la segunda líneas respectivamente, en todos los cuadros posteriores.
- Una vez que finaliza el algoritmo, no debe aparecer ninguna entidad visible adicional . Sin embargo, esto también significa que está bien dejar en blanco las líneas, si se asegura de que el último "cuadro" se muestre durante al menos la misma cantidad de tiempo que todos los demás cuadros antes de dejar en blanco.
:-)