Der Euklidische Algorithmus ist ein weit verbreiteter Algorithmus zur Berechnung des größten gemeinsamen Divisors (GCD) zweier positiver Ganzzahlen.
Der Algorithmus
Für diese Herausforderung wird der Algorithmus wie folgt beschrieben:
Zeigen Sie die beiden Eingaben als benachbarte Zeilen eines bestimmten Zeichens an,
z. B. kann eine Eingabe von3,4
durch die benachbarten Zeilen000
und dargestellt werden0000
Verwandeln Sie die ersten
length(short_line)
Zeichen in der längeren Zeile in ein anderes Zeichen, sagen-
Sie , jetzt sieht es aus wie000
und---0
Beseitigen Sie die ersten
length(short_line)
Zeichen in der längeren Zeile.
jetzt000
,0
Wiederholen Sie Schritt 2 und 3 , bis die beiden gleich Länge haben, mit den kürzeren und längeren Linien nach jeder Iteration, beispielsweise
000
,0
-00
,0
00
,0
-0
,0
0
,0
- Sie können wählen, ob Sie hier anhalten oder die Iteration fortsetzen und eine der Zeilen in eine leere Zeile umwandeln möchten.
Jeder dieser Schritte sollte durch ein Intervall zwischen 0,3 und 1,5 Sekunden getrennt sein.
Die Herausforderung
Schreiben Sie ein Programm, das mit zwei natürlichen Zahlen als Eingabe eine Ausgabe erstellt, die genau so aussieht wie die Ausgabe des obigen Algorithmus. Sie können andere druckbare Nicht-Whitespace-ASCII-Zeichen als 0
und verwenden. Seien Sie -
jedoch konsistent und verwenden Sie nur zwei Zeichen. Sie können auch alternative Algorithmen verwenden, sofern die Ausgabe, einschließlich des Timings, genau so ist, wie dies mit dem obigen Algorithmus möglich wäre.
Beispiele
Dies ist ein Beispiel für eine Eingabe 24,35
, bei der es sich um Koprime handelt, sodass der GCD-Wert 1 ist.
Dies ist ein Beispiel mit Eingängen 16,42
, die den GCD 2 haben.
Regeln
- Dies ist ein Code-Golf , also gewinnt das kürzeste Byte
- Es gelten Standardlücken
- Sie können davon ausgehen, dass es sich bei der Eingabe um positive Dezimalzahlen handelt
Klarstellungen
- Die Zeilen, die die Zahlen darstellen, müssen in ihrer ursprünglichen Reihenfolge bleiben, dh die erste und die zweite Zeile des ersten angezeigten "Frames" müssen in allen nachfolgenden Frames die erste bzw. die zweite Zeile sein.
- Nach Beendigung des Algorithmus sollte keine weitere sichtbare Entität angezeigt werden. Dies bedeutet jedoch auch, dass es in Ordnung ist, die Zeilen auszublenden, wenn Sie sicherstellen, dass der letzte "Frame" mindestens so lange angezeigt wird wie alle anderen Frames vor dem Ausblenden.
:-)