入力
- ダンジョンの壁を表すバイナリマトリックス
- ダンジョン内のプレイヤーの位置。
- プレイヤーが現在向いている方向(0 =北、1 =東、2 =南、3 =西)
出力
プレイヤーの視野内にある壁の擬似3D表現文字のASCIIアートとして。
以下は、いくつかの可能な出力フレームと、それに対応するための対応するマップとコンパスです(ただし、マップとコンパスの描画は課題の一部ではありません)。
仕様
視野
プレーヤーには、AからMのラベルが付いた壁が視野にあります。以下は、プレーヤーに対する壁の位置(黄色)であり、考えられるすべての方向です。
壁を描く
以前に描画された部分が近い壁によって上書きされる可能性があるため、壁はこの正確な順序でからに描画されることになっています。もちろん、最終結果が同じである限り、異なる方法で実装できます。
:全体の出力は、7つの異なる文字で描かれている" "
、"'"
、"."
、"|"
、"-"
、"_"
および":"
。
この課題の本体の壁の形状を詳細に説明すると長すぎるため、代わりに次のTIOリンクで提供されます。
特定の壁の一部ではないキャラクターは"?"
、これらの図ではa でマークされています。それらは、まったく描画されない「透明な」文字として扱われなければなりません。一方、壁内のすべてのスペースは「ソリッド」であり、以前にそこに描かれた可能性のある他の文字を上書きする必要があります。
ルール
入力について
- 0インデックスまたは1インデックスの座標を使用できます。
- 方向には、選択した4つの異なる値を使用できます。
- あなたは常に縁に周囲の壁があると仮定するかもしれません。
- プレーヤーは空の広場にいることが保証されています。
- 入力は有効であることが保証されています。
出力について
- 説明したとおりに壁を描く必要があります。
- ただし、出力形式も柔軟です。単一の文字列、文字列の配列、文字のマトリックスなどです。
- 前後の空白は、一貫している限り許容されます。
これはcode-golfです。
テストケース
すべてのテストケースは、次のマトリックスを使用しています。
[ [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ],
[ 1, 0, 1, 1, 1, 0, 0, 0, 0, 1 ],
[ 1, 0, 1, 0, 1, 0, 0, 1, 0, 1 ],
[ 1, 0, 0, 0, 0, 0, 1, 1, 0, 1 ],
[ 1, 0, 0, 1, 0, 0, 0, 1, 0, 1 ],
[ 1, 0, 0, 1, 1, 0, 1, 1, 0, 1 ],
[ 1, 1, 1, 1, 0, 0, 0, 0, 0, 1 ],
[ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 ],
[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ] ]
x=3, y=3, d=0
x=6, y=4, d=3
x=4, y=4, d=1
x=1, y=5, d=2
x=7, y=7, d=3
x=6, y=6, d=1
x=8, y=1, d=2
x=7, y=6, d=1
期待される出力:
------------------------------ ------------------------------
x=3, y=3, d=0: x=6, y=4, d=3:
------------------------------ ------------------------------
__ __ '. .'
|'. .'| | |
| '.--------------.' | |----. |
| | | | | | '.--------. |
| | | | | | | | |
| | | | | | | | |
| | | | | | .'--------' |
| .'--------------'. | |----' |
__|.' '.|__ | |
.' '.
------------------------------ ------------------------------
x=4, y=4, d=1: x=1, y=5, d=2:
------------------------------ ------------------------------
.' __ ________________________ .'
| | |
-------. .----| | |
| '.--------.' | | | |
| | | | | | |
| | | | | | |
| .'--------'. | | | |
-------' '----| | |
| __|________________________|
'. '.
------------------------------ ------------------------------
x=7, y=7, d=3: x=6, y=6, d=1:
------------------------------ ------------------------------
'. '.
|'. |'.
| '. | '.
| | '. .- | |--.--------.--------.-
| | |: :| | | | | |
| | |: :| | | | | |
| | .' '- | |--'--------'--------'-
| .' | .'
|.' |.'
.' .'
------------------------------ ------------------------------
x=8, y=1, d=2: x=7, y=6, d=1:
------------------------------ ------------------------------
'. __ '.
|'. .'| |
| '. .' | |----.--------------.-------
| | '. .' | | | | |
| | |: :| | | | | |
| | |: :| | | | | |
| | .' '. | | | | |
| .' '. | |----'--------------'-------
|.' '.|__ |
.' .'
関連する課題:
2013年からのこの課題は密接に関連しています。しかし、それは異なる勝利基準(コードチャレンジ)を持ち、出力の仕様がはるかに緩く、インタラクティブなI / Oが必要です。