Memasukkan
- Matriks biner mewakili dinding sebuah ruang bawah tanah.
- Posisi pemain di dalam ruang bawah tanah.
- Arah yang sedang dihadapi pemain (0 = Utara, 1 = Timur, 2 = Selatan, 3 = Barat)
Keluaran
Representasi pseudo-3D dari dinding yang ada di bidang pandangan pemain, sebagai seni ASCII karakter.
Berikut adalah beberapa kerangka keluaran yang memungkinkan, bersama dengan peta dan kompas yang sesuai untuk membantu memahami (tetapi menggambar peta dan kompas bukan bagian dari tantangan).
Spesifikasi
Bidang pandang
Pemain memiliki dinding di bidang pandangnya, berlabel dari ke . Di bawah ini adalah posisi dinding relatif terhadap pemain (berwarna kuning), di semua arah yang mungkin.
Menggambar dinding
Dinding seharusnya ditarik dari ke dalam urutan yang tepat ini, mengingat bahwa setiap bagian yang diambil sebelumnya dapat ditimpa oleh dinding yang lebih dekat. Anda tentu saja dapat menerapkannya secara berbeda selama hasil akhirnya sama.
Seluruh output digambar dengan 7 karakter yang berbeda: " "
, "'"
, "."
, "|"
, "-"
, "_"
dan ":"
.
Karena merinci bentuk dinding di tubuh tantangan ini akan membuatnya terlalu panjang, mereka diberikan dalam tautan TIO berikut:
Karakter yang bukan bagian dari dinding yang diberikan ditandai dengan "?"
dalam diagram ini. Mereka harus diperlakukan sebagai karakter 'transparan' yang tidak digambar sama sekali. Di sisi lain, semua ruang di dalam dinding 'padat' dan harus menimpa karakter lain yang mungkin telah ditarik sebelumnya.
Aturan
Tentang input
- Anda dapat menggunakan koordinat 0-diindeks atau 1-diindeks.
- Anda dapat menggunakan 4 nilai berbeda dari pilihan Anda untuk arahan.
- Anda mungkin berasumsi bahwa akan selalu ada dinding di sekelilingnya.
- Pemain dijamin berada di kotak kosong.
- Masukan dijamin valid.
Tentang output
- Dinding harus digambar persis seperti yang dijelaskan.
- Namun, format output juga fleksibel: string tunggal, array string, matriks karakter, dll.
- Memimpin dan mengikuti spasi dapat diterima asalkan konsisten.
Ini adalah kode-golf .
Uji kasus
Semua uji menggunakan matriks berikut:
[ [ 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
Output yang diharapkan:
------------------------------ ------------------------------
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:
------------------------------ ------------------------------
'. __ '.
|'. .'| |
| '. .' | |----.--------------.-------
| | '. .' | | | | |
| | |: :| | | | | |
| | |: :| | | | | |
| | .' '. | | | | |
| .' '. | |----'--------------'-------
|.' '.|__ |
.' .'
Tantangan terkait:
Tantangan dari tahun 2013 ini terkait erat. Tetapi memiliki kriteria kemenangan yang berbeda (code-challenge), spesifikasi keluaran yang jauh lebih longgar, dan membutuhkan I / O interaktif.