Фон
Найбільший спільний дільник ( gcd для коротких) - це зручна математична функція, оскільки має багато корисних властивостей. Один з них - особа Безута : якщо d = gcd(a, b)
, значить, існують цілі числа x
і 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
кратний a
або b
, а період - .
інакше. Зауважте, що нуль кратний кожному числу. Тепер через особу Безута залишиться щонайменше одна пара персонажів, o
на s
відстані якої саме така gcd(a, b)
. Найменшу ліву таку пару слід замінити великими літерами O
s; це кінцевий результат.
Приклад
Розглянемо вхідні дані 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 з відстані два, але ми замінимо лише самі ліві ліві на 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
?