Евклидов алгоритм является широко известным алгоритмом вычисления наибольшего общего делителя (GCD) двух натуральных чисел.
Алгоритм
Для целей этой задачи алгоритм описывается следующим образом:
Отображение двух входных данных в виде смежных строк определенного символа,
например вход3,4
может быть представлен соседними строками000
и0000
Превратите первые
length(short_line)
символы в более длинной строке в другого персонажа, скажем,-
теперь он выглядит000
и---0
Удалите первые
length(short_line)
символы в длинной строке.
Теперь000
,0
Повторите шаг 2 и 3 до двух имеют одинаковую длину, используя более короткие и более длинные строки после каждой итерации, например
000
,0
-00
,0
00
,0
-0
,0
0
,0
- Вы можете выбрать, останавливаться ли здесь или продолжить итерацию и превратить одну из строк в пустую.
Каждый из этих шагов должен быть разделен интервалом от 0,3 с до 1,5 с.
Соревнование
Напишите программу, которая, учитывая два натуральных числа в качестве входных данных, создает выходные данные, которые выглядят точно так же, как выходные данные алгоритма выше. Вы можете использовать другие печатные символы ASCII, не являющиеся пробельными символами, кроме 0
и -
, но будьте последовательны и используйте только два символа. Вы также можете использовать альтернативные алгоритмы при условии, что выходные данные, включая временные характеристики, будут точно такими же, как и при использовании алгоритма выше.
Примеры
Это пример с входными 24,35
данными, которые являются взаимно простыми, поэтому их GCD равен 1.
Это пример с вводом 16,42
, который имеет GCD 2.
правила
- Это код-гольф , поэтому выигрывают самые короткие байты
- Применяются стандартные лазейки
- Вы можете считать входные данные положительными десятичными целыми числами
Разъяснения
- Строки, которые представляют числа, должны оставаться в их исходном порядке, то есть первая и вторая строки первого отображаемого «кадра» должны быть соответственно первой и второй строками во всех последующих кадрах.
- После завершения алгоритма никакая дополнительная видимая сущность не должна появляться. Однако это также означает, что все строки можно очищать, если вы убедитесь, что последний «кадр» отображается в течение, по крайней мере, того же промежутка времени, что и все остальные кадры, перед тем, как отключиться.
:-)