欧几里得算法是用于计算两个正整数的最大公约数(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
和-
,但要一致,仅使用两个字符。如果输出(包括时序)与上述算法产生的输出完全相同,您也可以使用其他算法。
例子
这是input的示例24,35
,它们是互质数,因此它们的GCD为1。
这是带有16,42
GCD 2的input的示例。
规则
澄清说明
- 代表数字的线需要保持其原始顺序,即,在所有后续帧中,第一个显示的“框架”的第一和第二行分别必须是第一和第二行。
- 算法结束后,不应再出现其他可见实体。但是,这也意味着如果确保最后一个“帧”显示的时间至少与消隐之前所有其他帧的显示时间相同,则可以将行消隐。
:-)