Diberi papan, tulis program atau fungsi terpendek untuk menampilkan atau mengembalikan karakter yang terlihat oleh pemain. Sebuah karakter akan terlihat jika mungkin untuk menarik garis antara itu dan pemain, tanpa melintasi karakter apa pun yang menghalangi penglihatan.
Memasukkan:
@
mewakili posisi pemain. Hanya ada satu dari ini di input.- setiap karakter yang cocok dengan
[#A-Z]
visi blok regex . - karakter apa pun yang cocok
[ a-z]
memungkinkan penglihatan. - tidak akan ada karakter yang tidak valid
- Anda dijamin input persegi panjang
Garis didefinisikan sebagai berikut:
- mendefinisikan vektor menjadi besar dan arah
- arah adalah salah satu dari N, NE, E, SE, S, SW, W, NW
- besarnya adalah berapa banyak karakter di sepanjang arah itu untuk dihitung
- biarkan vektor awal disebut d 1 ; vektor kedua disebut d 2
- salah satu dari d 1 atau d 2 harus memiliki besaran
1
; yang lain mungkin memiliki besaran apa pun - Arah d 1 harus berbatasan dengan arah d 2 (mis: N dan NE)
Garis didefinisikan sebagai semua karakter di sepanjang jalan yang ditandai dengan menerapkan d 1 , lalu d 2 , d 1 , d 2 ....
Garis sampel (diberikan oleh .
s):
d 1 = (besarnya: 4, arah: E)
d 2 = (besarnya: 1, arah NE)
.....
.....
.....
@....
Keluaran:
- setiap karakter yang terlihat di posisi yang tepat,
.
menggantikan ruang. - Ruang untuk setiap karakter yang tidak terlihat.
Input sampel:
@
K
J
L
o
Output yang sesuai:
@.........
....K.....
.J.....
..........
.. .L.....
.. . ....
... .. ...
... .. ..
... . .
.... ..
Input sampel:
B###M# by
#Q # Zmpq
# # aaa
@ m #
# ##P#
# ####
# ####
#M ###
######
Output yang sesuai:
.B #M
.# .. Z pq
.#.#.aaa..
@..m.#
#.##P#
.#
.#
M.
#
Input sampel:
w
O l gg rT
QQL Ag #b
qqqqq XqQ
x V# f@aa
Y aaa
uU E l TaKK
e dd FF d opi
e d
Output yang sesuai:
.......... .....
......... .....
O..l...gg..rT
...QQL......Ag..#b..
...qqqqq.........XqQ
#.f@aa......
Y........aaa.....
...uU..E..l.TaKK....
d..FF.d.op
.... .d. ...
Jawaban:
GolfScript, 171 karakter
Masukan harus diberikan di STDIN.
Output untuk contoh yang diberikan di atas sedikit berbeda. Saya memverifikasi jawaban dengan tangan dan berpikir itu benar.
Contoh 1:
Contoh 2:
Contoh 3:
sumber
n+
ke kode.Ruby - 510 karakter
Cukup besar; tapi ini adalah percobaan golf saya yang pertama.
Input dengan file ditentukan sebagai argumen; Saya menganggap file input terdiri dari blok karakter persegi panjang (jadi, termasuk spasi tambahan), dan memiliki baris baru tambahan.
Versi ini menggunakan ekstensif
catch-throw
untuk keluar dari loop mendalam; Saya mungkin dapat memperbaiki masalah dengan batas-memeriksa loop sebagai gantinya.Kode tidak terotorisasi:
Edit
Ilmari Karonen mencatat dalam komentar pertanyaan bahwa algoritma penglihatan yang diberikan tidak melihat semua kotak, bahkan ketika tidak ada kendala. Berikut ini adalah demonstrasi dari itu, ke (40,40) jauh dari pemain.
sumber
XqQ
. Yang mengatakan, jawaban yang Anda berikan untuk 3 tidak cocok dengan testcase sama sekali - itu setidaknya memiliki garis tambahan di atas, dan hanya satu ruang antaraO
danl
.