L'algorithme euclidien est un algorithme largement connu pour calculer le plus grand diviseur commun (GCD) de deux entiers positifs.
L'algorithme
Aux fins de ce défi, l'algorithme est décrit ci-dessous:
Affichez les deux entrées sous forme de lignes adjacentes d'un certain caractère,
par exemple une entrée de3,4
peut être représentée par les lignes adjacentes000
et0000
Transformez les premiers
length(short_line)
caractères de la ligne la plus longue en un autre personnage, dites-
maintenant à quoi il ressemble000
et---0
Éliminez les premiers
length(short_line)
caractères de la ligne la plus longue.
maintenant000
,0
Répétez l' étape 2 et 3 jusqu'à ce que les deux ont une longueur égale, en utilisant les lignes courtes et plus longues après chaque itération, par exemple
000
,0
-00
,0
00
,0
-0
,0
0
,0
- Vous pouvez choisir de vous arrêter ici ou de continuer l'itération et de transformer l'une des lignes en ligne vide.
Chacune de ces étapes doit être séparée par un intervalle compris entre 0,3 s et 1,5 s.
Le défi
Écrivez un programme qui, étant donné deux nombres naturels en entrée, crée une sortie qui ressemble exactement à la sortie de l'algorithme ci-dessus. Vous pouvez utiliser d'autres caractères ASCII imprimables non blancs que 0
et -
, mais soyez cohérent et n'utilisez que deux caractères. Vous pouvez également utiliser des algorithmes alternatifs à condition que la sortie, y compris la synchronisation, soit exactement la même que celle produite par l'algorithme ci-dessus.
Exemples
Ceci est un exemple avec entrée 24,35
, qui sont des nombres premiers, donc leur GCD est 1.
Ceci est un exemple avec entrée 16,42
, qui ont le GCD 2.
Règles
- C'est un code-golf , donc les octets les plus courts gagnent
- Failles standard s'appliquent
- Vous pouvez supposer que l'entrée est un entier décimal positif
Clarifications
- Les lignes qui représentent les nombres doivent rester dans leur ordre d'origine, c'est-à-dire que les première et deuxième lignes de la première "trame" affichée doivent être respectivement la première et la deuxième lignes, dans toutes les trames suivantes.
- Une fois l'algorithme terminé, aucune entité visible supplémentaire ne doit apparaître. Cependant, cela signifie également qu'il est correct de vider les lignes, si vous vous assurez que la dernière "trame" est affichée pendant au moins la même durée que toutes les autres trames avant la suppression.
:-)