sfondo
Il più grande divisore comune ( abbreviato in gcd ) è una comoda funzione matematica, poiché ha molte proprietà utili. Uno di questi è l'identità di Bézout : if d = gcd(a, b), allora esistono numeri interi xe ytali d = x*a + y*b. In questa sfida, il tuo compito è visualizzare questa proprietà con una semplice arte ASCII.
Ingresso
I tuoi input sono due numeri interi positivi ae b, forniti in qualsiasi formato ragionevole. Puoi anche prendere input unari (ripetizioni di un singolo carattere ASCII stampabile di tua scelta), ma devi essere coerente e usare lo stesso formato per entrambi gli input. Gli input possono essere in qualsiasi ordine e possono essere uguali.
Produzione
L'output è una stringa sdi lunghezza lcm(a, b) + 1( mcm sta per il minimo comune multiplo). I caratteri di srappresentano numeri interi da 0a lcm(a, b). Il personaggio s[i]è in minuscolo ose iè un multiplo di ao b, e un punto .altrimenti. Si noti che zero è un multiplo di ogni numero. Ora, a causa dell'identità di Bézout, ci sarà almeno una coppia di caratteri oin scui distanza è esattamente gcd(a, b). La coppia all'estrema sinistra deve essere sostituita da Os maiuscole ; questo è l'output finale.
Esempio
Considera gli input a = 4e b = 6. Quindi abbiamo gcd(a, b) = 2e lcm(a, b) = 12, quindi, la lunghezza ssarà 13. I multipli di ae bsono evidenziati come segue:
0 1 2 3 4 5 6 7 8 9 10 11 12
o . . . o . o . o . . . o
Ci sono due coppie di os con distanza due, ma sostituiremo solo quelle più a sinistra con Os, quindi l'output finale è
o...O.O.o...o
Regole e punteggio
È possibile scrivere un programma completo o una funzione. Vince il conteggio di byte più basso e non sono consentite scappatoie standard.
Casi test
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
.,ooO.) O ha essere1? Oppure0?