ฉันลงคอขอสิ่งที่ฉันจะพบว่ามีประโยชน์ ภารกิจคือการวาดกล่อง ASCII ตามอำเภอใจเช่นนี้
|
+----+----+
| state A +---+
+---------+ |
|
+----v----+
| state B |
+---------+
... และแปลงให้เป็นสิ่งที่สวยงามยิ่งขึ้นโดยใช้อักขระการวาดกล่องยูนิโค้ดเช่น
│
╭────┴────╮
│ state A ├───╮
╰─────────╯ │
│
╭────v────╮
│ state B │
╰─────────╯
รายละเอียดเพิ่มเติม:
- แปลงเฉพาะ + - | อักขระ - อักขระอื่นควรไม่เปลี่ยนแปลง
ใช้
- กล่อง DRAWINGS แนวตั้งแสง (U + 2502) │
- BOX DRAWINGS LIGHT HORIZONTAL (U + 2500) ─
- BOX DRAWINGS LIGHT ARC DOWN และ RIGHT (U + 256D) ╭
- BOX DRAWINGS LIGHT ARC DOWN และ LEFT (U + 256E) ╮
- BOX DRAWINGS LIGHT ARC UP and LEFT (U + 256F) ╯
- BOX DRAWINGS LIGHT ARC UP and RIGHT (U + 2570) ╰
- BOX DRAWINGS แนวตั้งแสงและซ้าย (U + 2524) ┤
- กล่อง DRAWINGS แสงแนวตั้งและขวา (U + 251C) ├
- BOX DRAWINGS LIGHT และ HORIZONTAL (U + 252C) ┬
- BOX DRAWINGS LIGHT UP และ HORIZONTAL (U + 2534) ┴
BOX DRAWINGS แนวตั้งแนวตั้งและแนวนอน (U + 253C) ┼
- แทนที่ด้วย U + 2500 เสมอ
- | แทนที่ด้วย U + 2502 เสมอ
- + ถูกแทนที่ด้วยอักขระ Unicode ที่ขึ้นอยู่กับ 4 ตัวอักษรทิศเหนือทิศใต้ทิศตะวันออกและทิศตะวันตกของมัน (ถ้ามี)
- <และ> จะถือว่าเป็นเซ็กเมนต์กำแพงตามแนวตั้งหากทิศเหนือหรือทิศใต้ของ + (เพื่อให้คุณสามารถมีลูกศรสิ้นสุดในผนังแนวตั้งของกล่อง)
- v และ ^ จะถือว่าเป็นเซ็กเมนต์กำแพงแนวนอนหากทิศตะวันออกหรือทิศตะวันตกของ + (เพื่อให้คุณสามารถมีลูกศรสิ้นสุดในผนังแนวนอนของกล่อง)
- + จะถือว่าเป็นส่วนของผนังถ้าทิศเหนือใต้ตะวันออกหรือตะวันตกของ + (เพื่อให้สายสามารถเชื่อมต่อถัดจากมุมกล่อง)
Testcases
+-+ +---+ +---+ |
| +-- |ABC| -+ | +++
+-+ ++--+ +---+ +-+
|
+--->
| +--+
+-v+ +---+ | | +-----+
|Hi| -> | +^-+ |world<-----+
+--+ +---+ | +-----+ |
| +--
|
---+---
|
กลายเป็น
╭─╮ ╭───╮ ╭───╮ │
│ ├── │ABC│ ─┤ │ ╭┴╮
╰─╯ ╰┬──╯ ╰───╯ ╰─╯
│
╰───>
│ ╭──╮
╭─v╮ ╭───╮ │ │ ╭─────╮
│Hi│ ─> │ ╰^─╯ │world<─────╮
╰──╯ ╰───╯ │ ╰─────╯ │
│ ╰──
│
───┼───
│
รหัสที่สั้นที่สุดชนะ!
คุณอาจหมายถึงUnicodeมากกว่าUTF-8
—
Luis Mendo
เรามีกรณีทดสอบบ้างไหม? โดยเฉพาะอย่างยิ่งสำหรับกรณีขอบเช่นที่สองกล่องสัมผัสที่ขอบหรือมุม (หรือชี้แจงว่าสิ่งนี้จะไม่เกิดขึ้น)
—
trichoplax
ยินดีที่จะโพสต์ผลลัพธ์ที่ต้องการสำหรับกรณีทดสอบเหล่านั้น
—
จัดการ
อืมฉันเพิ่งเขียนคำตอบ :-(
—
Neil
+
มีเส้นล้อมรอบทุกที่?