Ya, ternyata nama pengguna Doorknob di GitHub, Reddit, dan situs lainnya adalah KeyboardFire . Itu memberi saya ide ...
Tugas
Anda bekerja di KeyboardFire Inc., perusahaan yang membuat keyboard khusus. Dan, dengan "spesial", maksud saya, setiap kali Anda menekan tombol, sesuatu di rumah Anda menyala! Dengan seri KeyboardFire Doorknob yang baru, objek yang menyala adalah gagang pintu.
Namun , karena peraturan pemerintah yang bodoh, pengguna Anda perlu tahu gagang pintu mana yang akan menyala.
Pertimbangkan seni ASCII ini dari sebagian keyboard QWERTY:
1|2|3|4|5|6|7|8|9|0
q|w|e|r|t|y|u|i|o|p
a|s|d|f|g|h|j|k|l
z|x|c|v|b|n|m
(Tanda |
mewakili batas antara kunci.)
Kita dapat memperlakukan gambar ASCII yang tepat ini sebagai "grafik" macam, di mana setiap karakter dalam rentang [a-z0-9]
memiliki indeks x (horizontal) dan y (vertikal), di mana (0,0)
ada 1
. Misalnya surat itud
memiliki koordinat (2,6)
(pipa dan spasi dimasukkan dalam perhitungan koordinat).
Sekarang mari kita pikirkan rumah masing-masing pengguna. Setiap rumah dapat digambarkan dari atas ke bawah sebagai seni ASCII 20x4 (di dunia ini tempat menjual keyboard yang merusak secara legal, setiap rumah memiliki ukuran yang sama). Kita dapat menggunakan D
untuk menandai posisi setiap gagang pintu di rumah. Ini sebuah contoh:
D D D D
D
D D
Kami akan menyebutnya "peta rumah". (Ya, itu banyak kenop pintu!)
Menekan tombol apa saja akan menyalakan gagang pintu terdekat yang menyala. Misalnya, jika kita mengambil koordinat surat sebelumnya d
, kenop pintu terdekat (dengan jarak Manhattan) ada di koordinat (1,4)
. Ini adalah gagang pintu yang akan menyala ketika surat d
itu mengenai. Jika kita menandai kenop pintu yang menyala dengan F
, hasilnya adalah:
D D D D
F
D D
Spesifikasi
Program Anda akan mengambil dua input:
- String yang cocok dengan polanya
[a-z0-9]+
. - Peta rumah. Ini bisa berupa string, daftar string, atau sesuatu yang setara.
Anda harus membaca setiap huruf dari string dan menyalakan masing-masing gagang pintu terbakar (ubah hurufnya menjadi F
). Jika kenop pintu terdekat sudah terbakar, biarkan apa adanya. Jika ada lebih dari 1 kenop pintu yang dapat dinyalakan menggunakan metode ini, Anda dapat menyalakan yang mana saja yang Anda inginkan.
Setelah seluruh string diproses dengan cara ini, Anda perlu mencetak peta rumah yang dihasilkan.
Code-golf, sehingga program terpendek menang. Celah standar dilarang seperti biasa.
Contoh
Tali:
helloworld123
Peta rumah:
D D D D
D
D D
Kemungkinan hasil:
F F F D
F
D F
Atau:
F D F D
F
D F
Atau:
F F D D
F
F F
Atau:
F D D D
F
F F
EDIT: Uh ... apakah ada alasan saya punya satu jawaban, bahkan dengan hadiah +50? Jika Anda menemukan arahan rumit / tidak jelas, saya akan senang jika Anda memposting di komentar atau sesuatu ... atau saya melakukan kesalahan ...
EDIT 2: Bounty berakhir dalam waktu kurang dari sehari! Posting sesuatu yang lain! Silahkan! SILAHKAN!!!! :(
d
coord (2, 6) dan tidak (2, 2)? 2) Mengapa contoh itu memiliki begitu banyak jawaban yang memungkinkan? 3) Ketika Anda menjelaskan bagaimana hal-hal akan menyala, mengapa Anda bahkan berbicara tentangd
? Mengapa tidak langsung mengatakan bahwa menekana
akan membuat rumah terbakar? Apakahd
melakukannya juga?Jawaban:
JavaScript (ES6), 204 byte
Baik, saya akan menjawabnya. ;)
Penjelasan
Uji
sumber
Ruby, 229 byte
Tidak terlalu bagus, tetapi saya hanya harus mendapatkan jawaban pertama.
Versi sedikit ungolfed / berkomentar:
sumber