バックグラウンド
最大公約数(略してgcd)は便利な数学関数です。多くの有用な特性を持っているからです。そのうちの一つがあるベズーの等式:場合はd = gcd(a, b)
、その後、整数が存在するx
とy
、そのようなことをd = x*a + y*b
。この課題では、タスクは単純なASCIIアートでこのプロパティを視覚化することです。
入力
入力は、2つの正の整数a
とでb
、適切な形式で指定されます。単項入力(選択可能な単一の印刷可能なASCII文字の繰り返し)を使用することもできますが、両方の入力に一貫性があり、同じ形式を使用する必要があります。入力の順序は任意で、同じでもかまいません。
出力
出力はs
長さの文字列ですlcm(a, b) + 1
(lcmは最小公倍数を表します)。の文字はs
から0
までの整数を表しますlcm(a, b)
。文字s[i]
は、またはの倍数のo
場合i
は小文字で、それ以外の場合はピリオドです。ゼロはすべての数値の倍数であることに注意してください。現在、Bézoutのアイデンティティにより、距離が正確にである文字のペアが少なくとも1つあります。そのような左端のペアは大文字の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
距離が2の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
?