บทนำ:
เมื่อเราคิดถึง Ladybugs เรามักจะคิดถึงแมลงสีแดงหรือสีส้มเข้มที่มีจุดด่างดำ แม้ว่าสิ่งนี้ไม่จำเป็นจริงเนื่องจากมีLadybugs ด่างดำสีแดง / ส้มหรือLadybugs ที่ไม่มีจุดเลยเราจึงแสดงภาพ Ladybugs เป็นส่วนใหญ่เช่น Asian Ladybug นี้:
อีกสิ่งที่ควรทราบก็คือจุดที่เกี่ยวกับ ladybugs นั้นมักจะสมมาตรอยู่เสมอ และนี่คือที่มาของความท้าทายนี้
ท้าทาย:
รับจำนวนเต็มn
( >= 0
) ส่งออกเต่าทอง ASCII ศิลปะต่อไปนี้หนึ่งครั้งหรือหลายครั้งโดยมีจุดสมมาตรแบ่งเท่า ๆ กันระหว่างทั้งสองด้านเช่นเดียวกับ Ladybugs สองคนขึ้นไป
นี่คือเลย์เอาต์ Ladybug เริ่มต้น:
_V_
/(@I@)\
/ | \
| | |
\ | /
''-!-''
หากn=0
เราแสดงผลเต่าทองด้านบนตามที่เป็นอยู่
เมื่อn
มีขนาดใหญ่กว่าศูนย์เรากรอกในช่องว่างของข้อผิดพลาด ASCII ศิลปะที่มีตัวพิมพ์เล็กo
หรือแทนที่ในศูนย์ที่มีทุน|
O
เป้าหมายคือทำการn
เปลี่ยนแปลง 'เต่าทอง' ว่าง 'ในขณะที่ยังคงสร้างเอาต์พุตแบบสมมาตร (ต่อเต่าทอง) และให้ผลผลิตเต่าทองน้อยที่สุดเท่าที่จะทำได้
ดังนั้นผลลัพธ์ที่ถูกต้องn=1
คือ:
_V_
/(@I@)\
/ O \
| | |
\ | /
''-!-''
_V_
/(@I@)\
/ | \
| O |
\ | /
''-!-''
_V_
/(@I@)\
/ | \
| | |
\ O /
''-!-''
แต่สิ่งนี้จะไม่ถูกต้อง:
_V_
/(@I@)\
/ | \
| o | |
\ | /
''-!-''
ผลลัพธ์ที่ถูกต้องสำหรับn=2
คือ:
_V_
/(@I@)\
/ O \
| O |
\ | /
''-!-''
_V_
/(@I@)\
/ O \
| | |
\ O /
''-!-''
_V_
/(@I@)\
/ o|o \
| | |
\ | /
''-!-''
_V_
/(@I@)\
/ | \
| o | o |
\ | /
''-!-''
etc. There are a lot of possible outputs.
ครั้งแรกที่ไม่ได้เป็นไปได้ที่จะปรับตัวให้เข้าเต่าทองเดียวอีกต่อไปn
n=24
ในกรณีนี้คุณจะต้องแบ่งมันให้เท่ากันเท่าที่จะทำได้เป็นสอง ladybugs (คุณสามารถเลือกได้ว่าจะเอามันออกมาติดกันหรือแยกกัน - โดยเลือกหนึ่งช่องว่างหรือหนึ่งบรรทัดใหม่ในระหว่างนั้น) ตัวอย่างเช่น:
_V_ _V_
/(@I@)\ /(@I@)\
/o o|o o\ /o o|o o\
|o o | o o||o o | o o|
\o o|o o/ \o o|o o/
''-!-'' ''-!-''
หรือ:
_V_
/(@I@)\
/ooo|ooo\
| | |
\ooo|ooo/
''-!-''
_V_
/(@I@)\
/ooo|ooo\
| | |
\ooo|ooo/
''-!-''
กฏท้าทาย:
n
0-1000
จะอยู่ในช่วงของ- คุณสามารถเลือกที่จะส่งออกไปยัง STDOUT กลับมาเป็นสตริงหรือรายการอาร์เรย์ / 2D-char ฯลฯ การโทรของคุณ
- ไม่อนุญาตให้นำบรรทัดใหม่หรือช่องว่างที่ไม่จำเป็นออกมา อนุญาตให้ใช้ช่องว่างสีขาวและบรรทัดใหม่ต่อท้ายบรรทัดเดียว
- ดังที่ได้กล่าวไว้ข้างต้นเมื่อจำเป็นต้องใส่ Ladybugs สองตัวขึ้นไปคุณสามารถเลือกได้ว่าจะเอาท์พุทถัดจากกันและกันหรือต่ำกว่ากัน (หรือทั้งสองอย่างผสมกัน .. )
- เมื่อมีการพิมพ์ Ladybugs สองตัวขึ้นไปอยู่ติดกันจะอนุญาตให้มีพื้นที่ตัวเลือกเดียวในระหว่างนั้น เมื่อมีการพิมพ์ Ladybugs สองตัวขึ้นไปจะมีบรรทัดใหม่ที่เป็นทางเลือกหนึ่งบรรทัดในระหว่างนั้น
- คุณสามารถเลือกรูปแบบของ ladybugs ที่ในขั้นตอนใด ๆ
n
ในระหว่างลำดับตราบเท่าที่พวกเขามีความสมมาตรและเท่ากับการป้อนข้อมูล - เนื่องจากเป้าหมายคือการมี
n
การเปลี่ยนแปลงและเป็น ladybugsn=23
น้อยที่สุดคุณจะเริ่มใช้มากกว่าหนึ่งเต่าทองเมื่อข้างต้น เลย์เอาต์ของ Ladybugs เหล่านี้ไม่จำเป็นต้องเหมือนกัน ในความเป็นจริงมันเป็นไปไม่ได้สำหรับบางอินพุตเช่นn=25
หรือn=50
เพื่อตั้งชื่อสอง - นอกจากนี้บางครั้งมันเป็นไปไม่ได้ที่จะแบ่งจุดระหว่างเต่าทองสองตัวหรือมากกว่านั้นอย่างเท่าเทียมกัน ในกรณีนี้คุณจะต้องแยกพวกเขาให้เท่ากันที่สุดเท่าที่จะเป็นไปได้โดยมีความแตกต่างระหว่าง 1 อย่างมากที่สุด
ดังนั้นสำหรับn=50
การรักษากฎสองข้อสุดท้ายนี้จะเป็นผลลัพธ์ที่เป็นไปได้ที่ถูกต้อง (ที่ข้อผิดพลาดแรกมี 16 สปอตและอีกสองมี 17):
_V_ _V_ _V_
/(@I@)\ /(@I@)\ /(@I@)\
/oooOooo\ / O \ /o oOo o\
|ooooOoooo||ooooOoooo||o ooOoo o|
\ | / \oooOooo/ \o oOo o/
''-!-'' ''-!-'' ''-!-''
กฎทั่วไป:
- นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ
อย่าปล่อยให้ภาษาโค้ดกอล์ฟกีดกันคุณจากการโพสต์คำตอบด้วยภาษาที่ไม่ได้เข้ารหัส พยายามหาคำตอบสั้น ๆ ที่เป็นไปได้สำหรับภาษาโปรแกรม 'ใด ๆ ' - กฎมาตรฐานจะใช้สำหรับคำตอบของคุณดังนั้นคุณจึงได้รับอนุญาตให้ใช้ STDIN / STDOUT ฟังก์ชั่น / วิธีการที่มีพารามิเตอร์ที่เหมาะสมและชนิดผลตอบแทนโปรแกรมเต็มรูปแบบ การโทรของคุณ
- ช่องโหว่เริ่มต้นเป็นสิ่งต้องห้าม
- หากเป็นไปได้โปรดเพิ่มลิงค์พร้อมทดสอบรหัสของคุณ
- นอกจากนี้โปรดเพิ่มคำอธิบายหากจำเป็น
o
และการO
แทน ฉันเปลี่ยนถ้อยคำเล็กน้อย
n=50
ตัวอย่างเช่นผมเชื่อว่าคุณหมายถึงข้อผิดพลาดครั้งแรกมี 16 จุดและอีกสองแต่ละคนมี 17