tło
Największy wspólny dzielnik ( w skrócie gcd ) jest wygodną funkcją matematyczną, ponieważ ma wiele przydatnych właściwości. Jednym z nich jest tożsamość Bézouta : jeśli d = gcd(a, b), to istnieją liczby całkowite xi ytakie tam d = x*a + y*b. W tym wyzwaniu Twoim zadaniem jest wizualizacja tej właściwości za pomocą prostej grafiki ASCII.
Wkład
Twoje wejścia są dwie dodatnie liczby całkowite ai b, biorąc pod uwagę w każdym rozsądnym formacie. Możesz również przyjmować jednoargumentowe dane wejściowe (powtórzenia jednego wybranego znaku ASCII do wydrukowania), ale musisz być spójny i używać tego samego formatu dla obu danych wejściowych. Dane wejściowe mogą być w dowolnej kolejności i mogą być równe.
Wydajność
Twój wynik jest ciągiem sdługości lcm(a, b) + 1( lcm oznacza najniższą wspólną wielokrotność). Znaki sreprezentują liczby całkowite od 0do lcm(a, b). Znak s[i]jest małą literą, ojeśli ijest wielokrotnością alub b, a kropką w .innym przypadku. Zauważ, że zero jest wielokrotnością każdej liczby. Teraz, ze względu na tożsamość Bézouta, będzie co najmniej jedna para znaków, ow sktórych odległości jest dokładnie gcd(a, b). Najbardziej z lewej taka para ma zostać zastąpiona wielkimi literami Os; to jest końcowy wynik.
Przykład
Rozważ dane wejściowe a = 4i b = 6. Mamy więc, gcd(a, b) = 2a lcm(a, b) = 12więc długość sbędzie 13. Wielokrotności ai bsą podświetlone w następujący sposób:
0 1 2 3 4 5 6 7 8 9 10 11 12
o . . . o . o . o . . . o
Istnieją dwie pary os z odległością 2, ale zamienimy tylko te lewe z lewej na Os, więc końcowy wynik to
o...O.O.o...o
Zasady i punktacja
Możesz napisać pełny program lub funkcję. Wygrywa najniższa liczba bajtów, a standardowe luki są niedozwolone.
Przypadki testowe
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
.,olubO.) Czy też ma być1? Czy0?