พื้นหลัง
ตัวหารทั่วไปที่ยิ่งใหญ่ที่สุด ( gcdสำหรับระยะสั้น) เป็นฟังก์ชันทางคณิตศาสตร์ที่สะดวกเนื่องจากมีคุณสมบัติที่มีประโยชน์มากมาย หนึ่งในนั้นคือเอกลักษณ์ของเบซู : ถ้าd = gcd(a, b)
แล้วมีอยู่ integers x
และเช่นว่าy
d = x*a + y*b
ในความท้าทายนี้งานของคุณคือการเห็นภาพคุณสมบัตินี้ด้วยศิลปะ ASCII แบบง่าย
อินพุต
อินพุตของคุณเป็นจำนวนเต็มบวกสองจำนวนa
และb
กำหนดในรูปแบบที่เหมาะสม คุณยังสามารถรับอินพุตแบบยูนารี (การทำซ้ำอักขระ ASCII ที่พิมพ์ได้เดียวที่คุณเลือก) แต่คุณจะต้องสอดคล้องและใช้รูปแบบเดียวกันสำหรับอินพุตทั้งสอง อินพุตอาจอยู่ในลำดับใดก็ได้และอาจเท่ากัน
เอาท์พุต
ผลลัพธ์ของคุณคือสตริงที่มีs
ความยาวlcm(a, b) + 1
( lcmหมายถึงตัวคูณสามัญต่ำสุด) ตัวละครของs
แทนจำนวนเต็มจากไป0
lcm(a, b)
ตัวละครs[i]
เป็นตัวพิมพ์เล็กo
ถ้าi
เป็นหลายa
หรือb
และเป็นระยะเวลา.
อื่น โปรดทราบว่าศูนย์เป็นจำนวนมากของทุกหมายเลข ตอนนี้เพราะเอกลักษณ์ของเบซูจะมีอย่างน้อยหนึ่งคู่ของตัวละครo
ในที่มีระยะทางตรงs
gcd(a, b)
คู่ซ้ายสุดดังกล่าวจะถูกแทนที่ด้วยตัวพิมพ์ใหญ่O
s นี่คือผลลัพธ์สุดท้าย
ตัวอย่าง
พิจารณาปัจจัยการผลิตและ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
ที่มีระยะทางสอง แต่เราจะแทนที่คนซ้ายสุดด้วย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
?