我无耻地发布了对我实际上有用的请求。任务是拍摄像这样的任意ascii框图
|
+----+----+
| state A +---+
+---------+ |
|
+----v----+
| state B |
+---------+
...并使用unicode框绘图字符将其转换为更漂亮的内容,例如
│
╭────┴────╮
│ state A ├───╮
╰─────────╯ │
│
╭────v────╮
│ state B │
╰─────────╯
更详细地:
- 仅转换+-| 字符-其他字符应保持不变
采用
- 装箱图灯(U + 2502)│
- 方框图卧式(U + 2500)─
- 方框图上下左右光弧(U + 256D)╭
- 方框图上下左右光弧(U + 256E)╮
- 方框图向上和向左轻弧(U + 256F)╯
- 方框图右上和右上的弧光(U + 2570)╰
- 方框图垂直和左侧(U + 2524)┤
- 箱型图立式和右立(U + 251C)├
- 方框图LIGHT DOWN和HORIZONTAL(U + 252C)┬
- 方框图点亮和水平(U + 2534)┴
方框图垂直和水平光源(U + 253C)┼
-始终替换为U + 2500
- | 始终用U + 2502代替
- +替换为unicode字符,该字符取决于其北,南,东和西4个字符(如果存在)
- 如果<和>位于+的北或南,则将它们视为垂直壁段(这样,箭头可以终止于框的垂直壁中)
- 如果v和^在+的东或西,则被视为水平墙段(这样,箭头可以终止于框的水平墙中)
- 如果+的北,南,东或西,则+被视为墙段(以便线可以在框角附近连接)
测试用例
+-+ +---+ +---+ |
| +-- |ABC| -+ | +++
+-+ ++--+ +---+ +-+
|
+--->
| +--+
+-v+ +---+ | | +-----+
|Hi| -> | +^-+ |world<-----+
+--+ +---+ | +-----+ |
| +--
|
---+---
|
成为
╭─╮ ╭───╮ ╭───╮ │
│ ├── │ABC│ ─┤ │ ╭┴╮
╰─╯ ╰┬──╯ ╰───╯ ╰─╯
│
╰───>
│ ╭──╮
╭─v╮ ╭───╮ │ │ ╭─────╮
│Hi│ ─> │ ╰^─╯ │world<─────╮
╰──╯ ╰───╯ │ ╰─────╯ │
│ ╰──
│
───┼───
│
最短的代码胜出!
您可能是说Unicode而不是UTF-8
—
Luis Mendo
我们可以有一些测试用例吗?特别是对于边缘情况,例如两个盒子在边缘或拐角处接触(或澄清这将永远不会发生)。
—
trichoplax
为这些测试用例发布所需的输出将是很好的。
—
manatwork,2013年
gh,我只是在编一个答案:-(
—
尼尔(Neil)
+
到处都有线条?