ท้าทาย
ด้วยรูปทรง ASCII คุณต้องค้นหาว่ารูปร่างนั้นเป็นรูปหกเหลี่ยมปกติหรือไม่
รูปหกเหลี่ยม
หกเหลี่ยมปกติถูกกำหนดโดยใช้กฎสองข้อ:
- มันมีหกด้าน
- แต่ละด้านมีจำนวนอักขระเท่ากัน
ตัวอย่างเช่นรูปร่างต่อไปนี้เป็นปกติ แต่ไม่มีหกด้านดังนั้นจึงไม่ใช่รูปหกเหลี่ยมปกติ:
B a a h
s a i d
y o u r
g a o t
ในทำนองเดียวกันรูปร่างต่อไปนี้มีหกด้าน แต่มีด้านที่มีความยาวต่างกันจึงไม่ใช่รูปหกเหลี่ยมปกติ :
* *
* * *
* * * *
* * *
* *
อย่างไรก็ตามรูปร่างต่อไปนี้มีหกด้านและด้านข้างทั้งหมดมีจำนวนอักขระเท่ากันดังนั้นจึงเป็นรูปหกเหลี่ยมปกติ:
T h e
h e x a
g o n s a
r e c o
m i n
กฎระเบียบ
ผลลัพธ์ควรเป็นค่าความจริงหรือค่าเท็จ (ความจริงหากรูปร่างเป็นรูปหกเหลี่ยมปกติ, หากไม่มีความผิด)
รูปร่างจะมีอักขระ ASCII ที่พิมพ์ได้เท่านั้น
เส้นขอบของรูปร่างจะไม่มีช่องว่าง ถ้าเป็นเช่นนั้นคุณสามารถกลับมาโกหกได้
อาจมีช่องว่างตามอำเภอใจก่อนและ / หรือหลังรูปร่าง
มุมทั้งหมดในรูปร่างอาจไม่เท่ากันรูปร่างต่อไปนี้เป็นอินพุตที่ถูกต้อง:
. . .
. . .
. . . . .
. . . .
. . .
มันจะคืนค่าเท็จ
อินพุตรูปร่างทั้งหมดจะอยู่ในตารางที่คั่นด้วยช่องว่าง อินพุตแบบหกเหลี่ยมจะอยู่ในตารางที่มีการส่าย (แต่ละบรรทัดจะถูกชดเชยจากถัดไป)
ตัวอย่าง
Truthy
รูปร่างต่อไปนี้ควรคืนค่าความจริง:
# _
+ + +
9 :
5 6 7
8 9 0 1
2 3 4 5 6
7 8 9 0
1 2 3
t h i s
i s
a h
e x
a g
o n
! ! ! !
5 6 7
8 9 0 1
2 3 4 5 6
7 8 9 0
1 2 3
Falsey
ต่อไปนี้ควรกลับค่าเท็จ
r e c t a
n g l e s
h e l l o
w o r l d s
t h i s i s b
e t a d e c
a y n o w
*
* *
* * *
.....
.......
.........
.......
.....
รูปร่างนี้ไม่ได้อยู่บนกริดที่คั่นด้วยช่องว่างและไม่ได้ถูกย้าย
* * * *
---------
* * * * * *
-------------
* * * * * *
---------
* * * *
5 6 7
8 9 0 1
2 3 4 5 6
7 8 9 0
1 2 3
สำหรับอินพุตอักขระเดี่ยวโปรแกรมของคุณอาจแสดงผลจริงหรือเท็จ:
&
การชนะ
โปรแกรมที่สั้นที่สุดในหน่วยไบต์ชนะ
5 6 7\n8 9 0 1\n2 3 4 5 6\n7 8 9 0\n1 2 3
และอีกหนึ่งกรณีที่มีช่องว่างเพิ่มเติมนำหน้าสำหรับหนึ่งแถว: ss5 6 7\nss8 9 0 1\n2 3 4 5 6\ns7 8 9 0\nss1 2 3
(แทนที่ช่องว่างนำหน้าด้วยs
เพื่อทำให้ชัดเจนขึ้นในรูปแบบที่ไม่มีการจัดรูปแบบนี้) . กรณีทดสอบทั้งหมด 10 ข้อของคุณกำลังตรวจสอบความถูกต้องด้วยรหัสของฉันในขณะนี้ แต่สองกรณีนี้จะล้มเหลวด้วยวิธีการที่ฉันใช้