Arka fon
En büyük ortak bölen ( kısaca gcd ) birçok kullanışlı özelliğe sahip olduğundan uygun bir matematiksel işlevdir. Bunlardan biri Bézout'un kimliği : eğer d = gcd(a, b)
öyleyse tamsayılar var x
ve y
öyle d = x*a + y*b
. Bu zorlukta, sizin göreviniz bu özelliği basit ASCII sanatı ile görselleştirmek.
Giriş
Girişleriniz iki pozitif tamsayıdır a
ve b
herhangi bir makul biçimde verilir. Aynı zamanda unary girişleri de alabilirsiniz (seçtiğiniz tek bir yazdırılabilir ASCII karakterinin tekrarı), ancak tutarlı olmanız ve her iki giriş için de aynı formatı kullanmanız gerekir. Girişler herhangi bir sırada olabilir ve eşit olabilirler.
Çıktı
Çıktınız bir s
uzunluk dizesidir lcm(a, b) + 1
( lcm en düşük ortak katın kısaltmasıdır). Karakterleri s
arasındaki tam sayıları temsil 0
etmek lcm(a, b)
. Karakter s[i]
, bir ya da bir çarpı o
işareti i
ise küçük harf , aksi takdirde bir nokta . Sıfırın her sayının katı olduğunu unutmayın. Şimdi, Bézout'un kimliği nedeniyle , mesafe tam olarak en az bir çift karakter olacak . Bu tür en soldaki çift, büyük harf s ile değiştirilir ; bu son çıktı.a
b
.
o
s
gcd(a, b)
O
Örnek
Girişleri a = 4
ve b = 6
. Sonra biz var gcd(a, b) = 2
ve lcm(a, b) = 12
, böylece s
olacaktır 13
. Katları a
ve b
şöyle vurgulanmaktadır:
0 1 2 3 4 5 6 7 8 9 10 11 12
o . . . o . o . o . . . o
İki o
mesafeli iki çift s vardır, ancak yalnızca en soldakileri O
s ile değiştiririz , yani son çıktı
o...O.O.o...o
Kurallar ve puanlama
Tam bir program veya bir fonksiyon yazabilirsiniz. En düşük bayt sayısı kazanır ve standart boşluklar izin verilmez.
Test durumları
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
ya daO
.) Ya da olmak zorunda1
mı? Ya da0
?