背景
最大公约数(简称gcd)是一种便捷的数学函数,因为它具有许多有用的属性。Bézout的身份就是其中之一:if d = gcd(a, b)
,则存在整数x
and y
这样d = x*a + y*b
。在这个挑战中,您的任务是使用简单的ASCII艺术形象化此属性。
输入值
您的输入是两个正整数a
和b
,以任何合理的格式给出。您也可以使用一元输入(您选择的单个可打印ASCII字符的重复),但是您必须保持一致,并且两个输入都使用相同的格式。输入可以是任何顺序,并且可以相等。
输出量
您的输出是一串s
长度lcm(a, b) + 1
(lcm代表最小公倍数)。的字符s
表示从0
到的整数lcm(a, b)
。如果是或的倍数,则该字符s[i]
为小写,o
否则i
为一个句点。请注意,零是每个数字的倍数。现在,因为贝祖等式中,将有至少一对人物,在其距离正好。最左边的这样的对将被大写s 代替;这是最终的输出。a
b
.
o
s
gcd(a, b)
O
例
考虑输入a = 4
和b = 6
。然后我们有gcd(a, b) = 2
和lcm(a, b) = 12
,这样的长度s
会13
。的倍数a
和b
摘要如下:
0 1 2 3 4 5 6 7 8 9 10 11 12
o . . . o . o . o . . . o
有两对o
s,距离为2,但我们只会用O
s 替换最左边的对,因此最终输出为
o...O.O.o...o
规则和计分
您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。
测试用例
1 1 -> OO
2 2 -> O.O
1 3 -> OOoo
4 1 -> OOooo
2 6 -> O.O.o.o
2 3 -> o.OOo.o
10 2 -> O.O.o.o.o.o
4 5 -> o...OO..o.o.o..oo...o
8 6 -> o.....O.O...o...o.o.....o
12 15 -> o...........O..O........o.....o.....o........o..o...........o
19 15 -> o..............o...o..........o.......o......o...........o..o..............OO.............o....o.........o........o.....o............o.o..............o.o............o.....o........o.........o....o.............oo..............o..o...........o......o.......o..........o...o..............o
.
,o
或O
)或者它必须是1
?还是0
?