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 x
e y
tali 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 a
e 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 s
di lunghezza lcm(a, b) + 1
( mcm sta per il minimo comune multiplo). I caratteri di s
rappresentano numeri interi da 0
a lcm(a, b)
. Il personaggio s[i]
è in minuscolo o
se i
è un multiplo di a
o 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 o
in s
cui distanza è esattamente gcd(a, b)
. La coppia all'estrema sinistra deve essere sostituita da O
s maiuscole ; questo è l'output finale.
Esempio
Considera gli input a = 4
e b = 6
. Quindi abbiamo gcd(a, b) = 2
e lcm(a, b) = 12
, quindi, la lunghezza s
sarà 13
. I multipli di a
e b
sono 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 o
s con distanza due, ma sostituiremo solo quelle più a sinistra con O
s, 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
.
,o
oO
.) O ha essere1
? Oppure0
?