子供の頃からこれらの絵を覚えているかもしれませんが、今度はコンピューターに絵を描かせましょう(完全なASCIIの素晴らしさで)。楽しむ!
説明:
入力は、「フィールド」を説明する複数の行(改行で終了)です。このフィールドには「数字」が散在しています(空白で区切られています)。すべての行は同じ長さであると見なすことができます(スペースを最後まで埋めることができます)。
- 数字は常に1から始まります
- それらは自然数の順序に従います:すべての「次の数」は1ずつ増加します
- すべての数値は、その左右で(少なくとも)1つの空白で囲まれています
タスク:
次の特性を使用して、これらの数値の間に自然な順序で
線を引きます(N <= 99と想定)。(1 -> 2 -> 3 -> ...N)
+数字を' '文字に置き換えます- 水平線の場合:'
-'を使用します - 垂直線の場合:'
|'を使用 - 左と下または右と上に行く:
/ - 左と上または右と下に行く:
\
重要な注意事項:
タイプ4および5の線を描画する場合、(座標x1、y1およびx2、y2に接続する点が与えられた場合)次のように仮定できます
distance(x1,x2) == distance(y1,y2)。または、言い換えると(ユーザーjballがコメントしたように):「水平方向または垂直方向に整列されていない連続する要素は、常にスラッシュまたはバックスラッシュの勾配に整列します」。ドットが接続されている順序に従うことが重要です(新しい線は古い線を打ち消す可能性があります)。
-サンプル入力1--
8
7 6
10 9
5
3 4
11
12 13
1 2
-サンプル出力1--
+
/ |
/ +-+
+ -------- + \
/ \
/ +
/ |
/ +-+
+ |
\ |
+ ------------------------ +
+ -------------------------- +
-サンプル入力2-
64
63
62 61
1 65
66 57 58
2 56 59 45
67 55 46
3 44
54 60 47
53 52 49 48
4 51 50 43
5 42
41
6 23
22 25 26 40
20 21 24 34
7 13 12 33
19 27 32
14 35
8 15
16
39
17 18 28 31 36
9 38
10 11 29 30 37
-サンプル出力2-(ユニコーンリファレンス)
+
/ +
//
//
//
/ +-+
+ + \
| + +-\ +
+ \ + \ +
/ + + \ + \
+ \ \ | +
| + + + /
| +-+ + ------- + /
+ +-+ +
/ \
+ +
| +
+ + /
\ + \ + --- + +
\ +-+ + \ / +
+ +-+ / \ / + |
/ | | + + / + |
/ + || / // +
+ + || / // /
\ + || / // /
\ | || / + //
\ + --- + + + \ +
+ | | | + |
+-+ + --- + +
勝者:
最短の解決策(コード文字数による)。入力は標準入力で読み取ることができます。