ฉันได้ยินอยู่เสมอว่าการคิดนอกกรอบนั้นเป็นเป้าหมายที่ควรได้รับ แต่ฉันจะบอกได้อย่างไรว่าฉันทำสำเร็จ
เพื่อแก้ปัญหานี้ฉันได้เขียนBrainwave-to-ASCII -translator ซึ่งในทางทฤษฎีควรสร้างผลลัพธ์เช่น
#
+------------+ #
| thinking | #
| | #
+------------+ #
#
หรือ
#
+------+ #
| | thinking #
| | #
| | #
+------+ #
#
ซึ่งทำให้ค่อนข้างง่ายที่จะบอกว่ามีใครคิดนอกกรอบหรือไม่ (ส่วน#
นี้ไม่ได้เป็นส่วนหนึ่งของเอาต์พุตและแสดงบรรทัดใหม่)
อย่างไรก็ตามเนื่องจากข้อผิดพลาดบางครั้งเฉพาะส่วนเล็ก ๆ ของการส่งออกจะถูกส่งกลับ:
| | #
+---------+ #
thinking #
#
+#
|#
inking |#
#
#
งาน
โปรดช่วยฉันจัดประเภทเอาต์พุตคลื่นสมองต่อ ASCIIโดยอัตโนมัติโดยการเขียนโปรแกรมหรือฟังก์ชั่นที่อ่าน ascii-repensentation และคืนค่าว่าthinking
อยู่ในกล่องนอกหรือไม่สามารถบอกได้จากอินพุต
อินพุต
ชุดของสตริงที่มีความยาวเท่ากันไม่ว่าจะเป็นรายการหรือคั่นด้วยการขึ้นบรรทัดใหม่ที่มี
- สตริง
thinking
หรือ pre- หรือคำต่อท้ายที่ถูกต้องของมัน - อักขระ
+-|
ขึ้นรูปกล่องสี่เหลี่ยมหรือชิ้นส่วนที่ถูกต้องของมัน - ช่องว่าง
- ไม่สิ่ง
#
เหล่านั้นรวมอยู่ในการท้าทายเพื่อทำเครื่องหมายจุดสิ้นสุดของบรรทัดอินพุต
เอาท์พุต
- truthyค่าถ้า
thinking
อยู่นอกกล่อง - falsyค่าถ้า
thinking
อยู่ในกล่อง - ค่าที่สามอาจแตกต่างกันถ้าไม่สามารถหาได้จากอินพุตว่า
thinking
อยู่ในกล่องหรือไม่
ตัวอย่าง
Truthy:
#
+------+ #
| | thinking #
| | #
| | #
+------+ #
#
| | #
+---------+ #
thinking #
#
+#
|#
|#
inking |#
thinking #
-------+ #
++ # (thinking is not in the box, so it must be outside)
++ # (this is also the smallest possible box)
+ #
t#
+----+# (The box is not wide enough to contain "thinking")
---# (The box is not high enough to contain "thinking")
---#
เป็นอินพุตสตริง:
" \n +------+ \n | | thinking \n | | \n | | \n +------+ \n "
" | | \n +---------+ \n thinking "
" \n +\n |\n |\ninking |"
"thinking \n-------+ "
" ++ \n ++ "
"+ \n t"
"+----+"
"---\n---"
"g++"
"k\n+"
Falsy:
#
+------------+ #
| thinking | #
| | #
+------------+ #
#
+---------------#
| #
| #
| thinking #
| #
king | #
------+ #
+---#
|thi#
+---#
-#
n#
-#
เป็นอินพุตสตริง:
" \n +------------+ \n | thinking | \n | | \n +------------+ \n "
" +---------------\n | \n | \n | thinking "
" | \nking | \n------+ "
"+---\n|thi\n+---"
"-\nn\n-"
อาจจะ:
thinking#
g|#
think#
-----#
| |# (box large enough to possibly contain the string)
| |#
+--#
| #
# (empty input)
เป็นอินพุตสตริง:
"thinking"
"g|"
"|t"
"-\ni"
"h\n-"
"think\n-----"
"| |\n| |"
" +--\n | "
""
กฎระเบียบ
- นี่คือรหัสกอล์ฟดังนั้นให้ลองใช้จำนวนไบต์น้อยที่สุด
- อาจจะคุ้มค่าสามารถเลือกได้อย่างอิสระตราบใดที่มันแตกต่างจาก truthy ค่า / falsy และเป็นเหมือนกันสำหรับทุกบางทีปัจจัยการผลิต มันอาจเป็นข้อผิดพลาด
- คุณสามารถสันนิษฐานได้ว่าอินพุตนั้นถูกต้องเสมอ (เช่นไม่มีตัวอักษรอื่น
+-ghiknt|
ใดนอกจากกล่องมากกว่าหนึ่งกล่อง ... )
+\n+
กล่องเล็กเกินไปสำหรับคำ