คุณไม่ได้ลงทะเบียนเพื่อสร้างโดนัทสำหรับ The Donut Shop ™ บริษัท โดนัทดิจิทัลที่ใหญ่ที่สุดในโลกส่วนใหญ่เป็นเพราะพวกเขาขายโดนัททุกขนาดเท่าที่จะเป็นไปได้
ตอนนี้มาตรฐานการซื้อขายในปัจจุบันยากมากคุณต้องเขียนโค้ดให้สั้นที่สุดเท่าที่จะทำได้เพื่อสร้างโดนัทเหล่านี้เพื่อให้ซอร์สโค้ดที่สร้างขึ้นนั้นสามารถวางไว้ด้านนอกของแพ็กเก็ตได้
ท้าทาย
ให้ 4 อินพุตรัศมีของวงแหวนรอบนอกรัศมีของวงแหวนด้านในโรยที่เป็นไปได้และโอกาสของเซลล์ที่มีการโรยเอาท์พุทโดนัทที่ปกคลุมด้วยโรยเหล่านั้นซึ่งมีรัศมีด้านในและด้านนอกที่ถูกต้อง
- อินพุตอาจถูกใช้ตามที่คุณต้องการ (อาร์กิวเมนต์ของฟังก์ชัน stdin, อาร์กิวเมนต์ของโปรแกรม) และในลำดับใด ๆ
- โรยจะได้รับในรูปแบบ 1 ตัวอักษรต่อประเภทโรย
^+*-
เป็น input โรยจะเป็นรายการของ 4 โรย,^
,+
,*
,-
- โอกาสของการโรยจะถูกป้อนเป็นค่าทศนิยมระหว่าง 0 ถึง 1 เช่น:
0.1
,0.23
- คุณต้องพิมพ์เอาต์พุตไปที่ stdout หรือเทียบเท่า
- โรยหน้าไม่ได้บนขอบของโดนัท
- การโรยแต่ละประเภทจะต้องมีโอกาสเท่ากันในแต่ละเซลล์
- รัศมีจะได้รับในหน่วย 1 เซลล์
- หากรัศมีภายในเท่ากับ 0 หรือรัศมีด้านนอกโดนัทจะถูกบอกว่าไม่มีวงแหวน
- รัศมีทั้งสองจะเป็นจำนวนเต็มที่ไม่เป็นลบ
- ขอบด้านในและด้านนอกของโดนัทจะต้องแสดงโดยใช้แฮช (
#
) การทดสอบเพื่อดูว่ามีจุดอยู่ในวงกลมหรือไม่โดยกำหนดรัศมีและจุดศูนย์กลางของวงกลมคือ:
(x-center)**2+(y-center)**2 < radius**2
ตัวอย่างอินพุตพร้อมเอาต์พุต
(รัศมีด้านนอกรัศมีด้านในโรยโอกาสของการโรย)
10, 4, "^ + * -", 0.1
######### # # ## ++ * *## # # # ^^ - * # # ##### ^ # #+ # # # # # #- # # # # * # # # #+ # # # # # #^ +# # # # # # # # * ##### # # + - # # ^ # ## ^ + ## # ^ # #########
5, 2, ": ^ + *", 0.9
##### #^^+ ^# #**### # #:# #^# #^# #*# #:# #*# #:+###* # # *:^:# #####
นี่คือรหัสกอล์ฟคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ
10, 4
และ5, 2
แตกต่างกันมาก ฉันจะแสดงความคิดเห็นต่อคำตอบ แต่ฉันรู้ว่าฉันไม่เข้าใจจริง ๆ ว่าผลลัพธ์ควรมีลักษณะอย่างไรสำหรับมิติใด ๆ แต่อยู่ในตัวอย่าง หากคุณต้องการเปลี่ยนความคิดดั้งเดิมของคุณให้ตรงกับผลลัพธ์จากคำตอบนั่นก็ขึ้นอยู่กับคุณ แต่ความท้าทายควรกำหนดวิธีการวาดเส้นขอบอย่างชัดเจน