เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้ในรายการจำนวนเต็มบวก จำนวนเต็มแต่ละจำนวนเหล่านี้แสดงความยาวด้านของสี่เหลี่ยมจัตุรัสบนระนาบ 2D แต่ละสี่เหลี่ยมสามารถเคลื่อนย้ายไปยังพิกัดจำนวนเต็มใด ๆ ในระนาบ แต่มันไม่สามารถหมุนได้และไม่สามารถซ้อนทับสี่เหลี่ยมอื่น ๆ ได้
การใช้อักขระ ASCII ที่พิมพ์ได้ที่แตกต่างกันสำหรับแต่ละตาราง (ไม่รวมพื้นที่ซึ่งใช้สำหรับความว่างเปล่า) โปรแกรม / ฟังก์ชันของคุณจำเป็นต้องพิมพ์การจัดเรียงสี่เหลี่ยมจัตุรัสใด ๆ ที่มีเส้นแนวนอนหรือแนวตั้งของสมมาตรสะท้อน หากไม่มีข้อตกลงดังกล่าวอยู่ก็ไม่ควรพิมพ์สิ่งใด
สี่เหลี่ยมเป็นตัวละครที่แตกต่างกันเพื่อให้พวกเขาสามารถแยกออกจากกัน เฉพาะรูปร่างที่ทำโดยสหภาพของสี่เหลี่ยมทั้งหมดจะต้องมีความสมมาตร คุณสามารถสันนิษฐานได้ว่ารายการจะไม่มีองค์ประกอบมากกว่า 94 องค์ประกอบ (เนื่องจากมี 94 ตัวอักษร)
ตัวอย่างเช่นถ้าอินพุต[2, 1, 2, 2, 2]
เป็นเอาต์พุตที่เป็นไปได้คือ:
DD--
DD--
Z
FFPP
FFPP
รูปร่างนี้มีเส้นแนวนอนของสมมาตรการสะท้อนแสง ครึ่งบนและล่างของมันเป็นภาพสะท้อน นี่คือความเป็นไปได้อื่น ๆ : (โปรดทราบว่าช่องสี่เหลี่ยมไม่จำเป็นต้องสัมผัสและสามารถใช้อักขระใด ๆ ได้ตราบใดที่ไม่มีช่องสี่เหลี่ยมสองช่องที่สร้างด้วยอักขระตัวเดียวกัน)
55
55
%%
%%
@
HH
HH
((
((
G
11 33
11 33
22 44
22 44
เส้นสมมาตรอาจเป็นขอบเขตระหว่างตัวละครเช่นสำหรับ[2, 4]
:
!!!!
!!!! ++
!!!! ++
!!!!
ชุดสี่เหลี่ยมบางชุดเป็นไปไม่ได้ที่จะจัดสมมาตรเช่น[1, 2, 3]
:
AAA BB C
AAA BB (these can't be vertically or horizontally symmetric => no output)
AAA
และจำไว้ว่ารูปร่างโดยรวมอาจจะสมมาตรแม้ว่าจะไม่ใช่ขอบเขตสี่เหลี่ยม เช่นผลลัพธ์ที่ถูกต้องสำหรับ[2, 1, 1, 1, 1, 4]
คือ:
AA----
AA----
BC----
DE----
ในทำนองเดียวกันผลลัพธ์ที่ถูกต้องสำหรับ[1, 1, 2, 3, 5]
คือ:
44444
44444
44444
44444
44444
33301
33322
33322
หมายเหตุ
- รายการอินพุตจะมีองค์ประกอบตั้งแต่ 1 ถึง 94 เสมอ
- รับอินพุตด้วยวิธีที่สมเหตุสมผล: stdin, command line, text text, function arg มันสามารถจัดรูปแบบเล็กน้อยเพื่อให้เหมาะกับความต้องการของคุณเช่นหรือ
{1, 2, 3, 4}
[1 2 3 4]
- ส่งออกไปยัง stdout หรือคล้ายกัน จำนวนช่องว่างนำหน้า / ต่อท้ายหรือการขึ้นบรรทัดใหม่จะเป็นจริงตราบใดที่รูปร่างที่ได้มีลักษณะสมมาตร
- เส้นสมมาตรของเส้นทแยงมุมจะไม่นับ (มิเช่นนั้นคงง่ายมาก) นอกจากนี้จะต้องมีการสะท้อนความสมมาตรไม่หมุนหรือการนำส่ง
- ฉันไม่แน่ใจว่างานนี้ยากแค่ไหนในการคำนวณ คุณอาจโพสต์คำตอบบางส่วนที่แก้ปัญหาบางส่วนของปัญหา (โดยเฉพาะถ้าคุณต้องการแสดงอัลกอริทึมที่ฉลาดเป็นพิเศษ) สิ่งเหล่านี้ไม่มีสิทธิ์ชนะ
- ตัวอย่างเช่นคุณอาจสมมติว่าอินพุตมีการจัดเรียงสมมาตรอย่างน้อยหนึ่งครั้งเสมอ (ดังนั้นรายการ
[1, 2, 3]
จะไม่มีการป้อนข้อมูล) - หรือตัวอย่างเช่นคุณอาจพิจารณาเฉพาะการจัดเรียงที่ขอบเขตของสี่เหลี่ยมจัตุรัสรวมถึงรูปร่างโดยรวมมีความสมมาตร ในกรณีนี้
[1, 1, 2, 3, 5]
จะไม่มีผลลัพธ์ - หากคุณต้องการที่จะไปบ้าคุณสามารถขยายความคิดที่จะสี่เหลี่ยมหรือแม้กระทั่งpolyominoes
- ตัวอย่างเช่นคุณอาจสมมติว่าอินพุตมีการจัดเรียงสมมาตรอย่างน้อยหนึ่งครั้งเสมอ (ดังนั้นรายการ
เกณฑ์การให้คะแนน
คะแนนของคุณคือขนาดของโปรแกรมของคุณในไบต์ คะแนนต่ำสุดชนะ Tiebreaker จะตอบคำตอบที่โพสต์ก่อน
[2, 4, 6, 7, 8, 9, 11, 15, 16, 17, 18, 19, 24, 25, 27, 29, 33, 35, 37, 42, 50, 112]
แม้ว่าคำถามจะให้อิสระมากขึ้น แต่ก็มีวิธีแก้ปัญหาอื่น ๆ