Hintergrund
Der größte gemeinsame Divisor (kurz gcd ) ist eine bequeme mathematische Funktion, da er viele nützliche Eigenschaften hat. Eines davon ist Bézouts Identität : Wenn d = gcd(a, b), dann gibt es ganze Zahlen xund ysolche, die es gibt d = x*a + y*b. In dieser Herausforderung besteht Ihre Aufgabe darin, diese Eigenschaft mit einfacher ASCII-Grafik zu visualisieren.
Eingang
Ihre Eingaben bestehen aus zwei positiven ganzen Zahlen aund bwerden in einem angemessenen Format angegeben. Sie können auch unäre Eingaben vornehmen (Wiederholungen eines einzelnen druckbaren ASCII-Zeichens Ihrer Wahl), müssen jedoch konsistent sein und für beide Eingaben dasselbe Format verwenden. Die Eingaben können in beliebiger Reihenfolge und gleich sein.
Ausgabe
Ihre Ausgabe ist eine Zeichenfolge mit seiner Länge lcm(a, b) + 1( lcm steht für das niedrigste gemeinsame Vielfache). Die Zeichen von stehen sfür Ganzzahlen von 0bis lcm(a, b). Das Zeichen s[i]ist ein Kleinbuchstabe, owenn ies ein Vielfaches von aoder ist b, und .ansonsten ein Punkt . Beachten Sie, dass Null ein Vielfaches jeder Zahl ist. Aufgrund von Bézouts Identität wird es nun mindestens ein Zeichenpaar geben, oin sdessen Abstand genau ist gcd(a, b). Das am weitesten links stehende Paar wird durch Os in Großbuchstaben ersetzt . Dies ist die endgültige Ausgabe.
Beispiel
Betrachten Sie die Eingänge a = 4und b = 6. Dann haben wir gcd(a, b) = 2und lcm(a, b) = 12, so wird die Länge ssein 13. Die Vielfachen von aund bwerden wie folgt hervorgehoben:
0 1 2 3 4 5 6 7 8 9 10 11 12
o . . . o . o . o . . . o
Es gibt zwei Paare von os mit Abstand zwei, aber wir werden nur die ganz linken durch Os ersetzen , so dass die endgültige Ausgabe erfolgt
o...O.O.o...o
Regeln und Wertung
Sie können ein vollständiges Programm oder eine Funktion schreiben. Die niedrigste Byteanzahl gewinnt, und Standardlücken sind nicht zulässig.
Testfälle
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
.,ooderO.) Oder muss es sein1? Oder0?