Terinspirasi oleh ini .
Latar Belakang
The petani jahat telah memutuskan untuk membakar ladang gandum Anda ke bawah untuk menaikkan harga. Untuk memastikan kehancuran total, ia juga merendam ladang Anda dengan bensin. Yang lebih sialnya, Anda kebetulan berjalan di lapangan saat dinyalakan, dan Anda harus keluar dengan cepat untuk bertahan hidup.
Tantangan
Mengingat ladang yang berisi gandum, api, dan lokasi Anda, tentukan apakah Anda bisa keluar dari ladang tepat waktu.
Ladang terdiri dari gandum (diwakili oleh .
) dan api ( F
). Di sini lokasi Anda ditandai dengan a O
. Sebagai contoh:
...F...F
F.......
........
.F......
....O...
...F....
........
.F....F.
Setiap detik Anda pindah ke sel yang berdekatan (tetapi tidak secara diagonal), dan setiap api menyebar ke setiap sel yang berdekatan. Jika Anda tidak bisa pindah ke sel yang tidak akan terbakar, Anda mati. Jika Anda berhasil keluar dari lapangan, Anda bertahan hidup. Mari kita lihat apa yang terjadi dalam contoh ini:
...F...F
F.......
........
.F......
....O...
...F....
........
.F....F.
..FFF.FF
FF.F...F
FF......
FFF.....
.F.F.O..
..FFF...
.F.F..F.
FFF..FFF
FFFFFFFF
FFFFF.FF
FFFF...F
FFFF....
FF.FF.O.
.FFFFFF.
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFF.FF
FFFFF.FF
FFFFFFFO
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFFO <-- you made it out and survived, barely
FFFFFFFF
FFFFFFFF
FFFFFFFF
Aturan
- Input Anda adalah bidang sebagai kisi. Anda dapat memilih format input apa pun, termasuk string dengan pemisah garis atau array 2D.
- Anda tidak boleh memasukkan lokasi untuk kebakaran dan / atau diri Anda sebagai masukan.
- Anda dapat menggunakan 3 nilai berbeda seperti gandum, api, dan posisi Anda, termasuk non-string untuk input array.
- Bidang selalu berukuran setidaknya 1x1, persegi panjang dan tidak mengandung karakter yang tidak valid.
- Setiap bidang akan berisi persis salah satu nilai yang mewakili lokasi Anda, dan setiap posisi lainnya mungkin atau mungkin tidak terbakar.
- Keluaran Anda adalah salah satu dari dua nilai berbeda untuk "Anda bertahan hidup" atau "Anda mati", seperti biasa dalam masalah pengambilan keputusan .
- Aturan standar kode-golf berlaku.
Uji kasus
Selamat
O
....
.O..
....
FFFFF
.....
..O..
.....
FFFF
FFFO
FFFF
.F....
......
......
.F....
..O...
.FF...
.F....
..FF..
...F...F
F.......
........
.F......
....O...
...F....
........
.F....F.
Tidak bertahan
FFF
FOF
FFF
F.F
.O.
F.F
....F
.....
..O..
.....
F....
.F....F.
........
........
F..O....
........
.....F..
...F...F
F......F
........
.F......
....O...
...F....
........
.F....F.
F..F
.O..
FF..
sumber
Jawaban:
Siput, 15 byte
Cobalah online!
1
berarti bertahan hidup sementara0
berarti mati.Karena tidak mungkin untuk berlari lebih cepat dari api, tidak pernah berguna untuk mencoba mengelilinginya. Rute terbaik selalu berupa garis lurus. Jadi hanya ada empat kemungkinan pilihan rute pelarian. Untuk menentukan apakah arah aman, kami memeriksa ada
F
di "kerucut api" yang menunjuk ke arah itu.sumber
Python 2 ,
283218209208 byteCobalah online!
Mengambil input sebagai string yang dipisahkan baris baru, dan kembali
True/False
untukDead/Alive
Bekerja dengan memeriksa setiap arah (udlr) untuk
F
ire in dengan melihat ke luar:Contoh:
Memasukkan:
Pemeriksaan kebakaran:
Jika semua arah mengandung api Anda mati, jika tidak ada jalan keluar.
Sunting: Kembali untuk mengambil string sebagai input, dan sekarang hanya memeriksa atas / kanan, tetapi juga memeriksa input ke belakang (menyerah / kiri)
Menyimpan banyak byte berkat Tn. Xcoder dan Felipe Nardi Batista
sumber
JavaScript, 174 byte
Masukkan format:
F
, 1 untuk.
, 0 untukO
Keluaran:
Cobalah:
Tampilkan cuplikan kode
Pertimbangkan otomat seluler. Ada 3 status untuk sel
O
(dapat dijangkau oleh orang-orang),F
(tangkapan ditembakkan),.
(tidak ada yang terjadi begitu saja). Aturan untuk membuat generasi berikutnya adalah:Begitu ada sel di tepi memiliki
O
negara, orang-orang bertahan hidup. Jika ini tidak terjadi dalam jumlah generasi yang cukup, maka orang-orang mati.sumber
Oktaf, 71 byte
Cobalah online!
atau
Verifikasi semua kasus uji!
Masukkan format:
1
untuk.
,2
untukO
dan3
untukF
Keluaran:
true
danfalse
Penjelasan:
Penjelasan:
sumber
Retina , 243 byte
Cobalah online! Membutuhkan latar belakang menjadi spasi daripada
.
s (atau karakter regexp-safe lainnya dapat digunakan). Penjelasan:Jika ada
O
di tepi manapun, hapus semua yang lain (survival case)Tempatkan
#
di ruang mana pun di atas yang sudah adaO
.Dan
#
di setiap ruang di bawah yang sudah adaO
.Mengubah
#
s keO
s, dan juga ruang di sebelah kiri atau kanan yang sudah adaO
.Tempat
#
di atas semua yang adaF
. Ini dapat menimpaO
ruang dan juga s.Tempat
#
di bawah setiap yang adaF
, juga timpaO
serta spasi.Ubah
#
s keF
s, dan juga apa sajaO
ruang di sebelah kiri atau kanan yang sudah adaF
. Ulangi sampai semuaF
telah dikonsumsi.Kembali
1
untuk bertahan hidup,0
jika tidak.sumber