子供の頃からこれらの絵を覚えているかもしれませんが、今度はコンピューターに絵を描かせましょう(完全な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-(ユニコーンリファレンス)
+ / + // // // / +-+ + + \ | + +-\ + + \ + \ + / + + \ + \ + \ \ | + | + + + / | +-+ + ------- + / + +-+ + / \ + + | + + + / \ + \ + --- + + \ +-+ + \ / + + +-+ / \ / + | / | | + + / + | / + || / // + + + || / // / \ + || / // / \ | || / + // \ + --- + + + \ + + | | | + | +-+ + --- + +
勝者:
最短の解決策(コード文字数による)。入力は標準入力で読み取ることができます。