Algorytm euklidesowy jest powszechnie znanym algorytmem do obliczania największego wspólnego dzielnika (GCD) dwóch dodatnich liczb całkowitych.
Algorytm
Na potrzeby tego wyzwania algorytm opisano poniżej:
Wyświetl dwa wejścia jako sąsiednie linie określonego znaku,
np. Wejście3,4
może być reprezentowane przez sąsiednie linie000
i0000
Zamień pierwsze
length(short_line)
znaki w dłuższej linii na inną, powiedz-
teraz, że wygląda jak000
i---0
Wyeliminuj pierwsze
length(short_line)
znaki w dłuższej linii.
teraz000
,0
Powtórzyć kroki 2 i 3 do dwóch mają jednakową długość, z wykorzystaniem krótszych i dłuższych liniach po każdej iteracji, na przykład
000
,0
-00
,0
00
,0
-0
,0
0
,0
- Możesz wybrać, czy chcesz zatrzymać się tutaj, czy kontynuować iterację i zamienić jedną z linii w pustą.
Każdy z tych kroków powinien być oddzielony odstępem między 0,3s a 1,5s.
Wyzwanie
Napisz program, który podając dwie liczby naturalne jako dane wejściowe, tworzy wynik, który wygląda dokładnie tak samo jak wynik powyższego algorytmu. Można używać innych znaków ASCII , które nie można drukować spacjami, niż 0
i -
, ale należy zachować spójność i używać tylko dwóch znaków. Możesz także użyć alternatywnych algorytmów, pod warunkiem, że dane wyjściowe, w tym taktowanie, są dokładnie takie same, jak w przypadku powyższego algorytmu.
Przykłady
To jest przykład z 24,35
danymi wejściowymi , które są koprime, więc ich GCD wynosi 1.
To jest przykład z wejściem 16,42
, które mają GCD 2.
Zasady
- To jest golf golfowy , więc wygrywa najkrótszy bajt
- Standardowe luki zastosowanie
- Można założyć, że dane wejściowe są dodatnimi liczbami całkowitymi dziesiętnymi
Wyjaśnienia
- Linie reprezentujące liczby muszą pozostać w oryginalnej kolejności, tj. Pierwsza i druga linia pierwszej wyświetlanej „ramki” muszą być odpowiednio pierwszą i drugą linią we wszystkich kolejnych ramkach.
- Po zakończeniu algorytmu nie powinien pojawiać się żaden dodatkowy widoczny element . Oznacza to jednak również, że można wyczyścić linie, jeśli upewnisz się, że ostatnia „klatka” jest wyświetlana przez co najmniej tyle samo czasu, co wszystkie inne klatki przed wygaszeniem.
:-)