Seperti yang kami pelajari dari IBM PC AT, YouTube (lihat video) , Wikipedia (lihat artikel) , dan Sesame Street:
Surat itu H
adalah huruf alfabet yang paling tanpa ampun !
(Bahkan ketika sebenarnya terdiri dari dua elemen dalam Kode Page 437. Faktanya, bahkan LEBIH BAIK tanpa ampun.)
Seperti Alien di, uhm ... eh ... Alien , Beasts tanpa henti mengejar semua yang berani mendekati telur mereka. Tidak ada alasan untuk itu. Anda harus menekan mereka jika tidak binasa.
Untuk skenario ini, kami akan menganggap Anda hidup sampai akhir, dan Anda telah bertemu Beasts polos di medan tanpa telur (seperti pada tangkapan layar Wikipedia). Anda tidak memiliki tombol angka dan hanya dapat bergerak langsung ke atas / bawah / kiri / kanan ... tetapi binatang buas itu memiliki satu, dan dapat bergerak secara diagonal pada gilirannya.
Pilihan bergerak Beast di antara opsinya adalah yang meminimalkan jarak dari pemain. Jika jaraknya sama maka tie breaking dilakukan dengan mengunggulkan + kiri atas + kanan ke bawah, tapi inilah matriks disambiguasi untuk menjadi eksplisit tentang hal itu ... angka terendah untuk tie-break:
1 3 4
2 H 5
6 8 7
Seekor binatang buas tidak pernah tidur, tapi untungnya mereka sedikit lebih lambat dari pemain. Mereka menggerakkan setiap belokan lainnya (memberi pemain start pertama dengan memulai pergantian mereka pada belokan kedua). Mereka harus bergerak jika mungkin, terlepas dari apakah itu membawa mereka lebih jauh dari pemain.
Anda menghancurkan binatang buas jika Anda memindahkan kereta dinding bergerak di mana ia duduk di celah tertutup. Binatang buas polos ini bernilai 2 poin per kepala.
Memasukkan
Sepasang bilangan bulat yang menunjukkan ukuran peta dalam kolom lalu baris.
Hitungan jumlah baris input, masing-masing ukuran kolom ... berisi dinding padat (
#
), dinding bergerak (~
), binatang (H
), pemain (O
), atau hanya spasi.Input yang akan berupa U, D, L, R menunjukkan upaya yang dicoba oleh pemain ... atau W untuk hanya menunggu. Perhatikan bahwa berusaha mendorong dinding bergerak yang diblokir adalah input legal, itu hanya akan menghasilkan tindakan.
Keluaran
aHHHH!
jika binatang buas membunuh pemain ... atau tidak ada jika pemain menang tanpa binatang buas yang tersisaNilai
(Catatan: Untuk tujuan debug dan / atau hiburan, Anda mungkin ingin dapat menampilkan status pada setiap langkah; tapi itu terlalu lama untuk dikirim di sini.)
Klarifikasi
Peta dijamin akan dibatasi oleh dinding yang kokoh.
Urutan siapa yang bergerak pada gilirannya penting bagi hasil. Dengan demikian: Pemain selalu pergi dulu, maka binatang diberi urutan berdasarkan posisi peta awal mereka jika Anda menyapu layar atas ke bawah kiri ke kanan. (Satu baris 1 binatang bergerak di depan satu baris 2 binatang, dan dua binatang pada baris yang sama itu akan menjadi satu dengan nomor kolom terendah yang akan bergerak sebelum yang lain)
Binatang-binatang yang bergerak diagonal dapat bergerak ke ruang diagonal terbuka yang berdekatan, terlepas dari apakah itu memerlukan peras di antara dinding.
Seorang pemain dapat mendorong sejumlah dinding bergerak dalam satu garis asalkan ada ruang atau binatang di ujung lainnya. Tetapi mencoba untuk mendorong kereta dinding ke Beast yang tidak disematkan di antara dinding memperlakukan Beast sebagai dinding, dan tidak akan membiarkan bergerak.
Keputusan kepindahan Beast selama belokan didasarkan pada lokasi pemain di awal belokan. Optimalisasi yang diinginkan dari "jarak ke pemain" adalah melalui perhitungan "saat gagak terbang". Setiap perkiraan yang akan memberikan hasil yang sama seperti yang diukur dari pusat kotak ke pusat kotak pemain baik-baik saja.
Jika Beast tidak dapat membuat apa yang akan menjadi langkah pertama yang dipilihnya pada gilirannya karena Beast prioritas yang lebih tinggi mengambil tempatnya, ia akan mengambil pilihan terbaik berikutnya daripada bertahan di tempat (jika langkah masih mungkin).
Contoh Kasus
Hancurkan sederhana
Memasukkan
5 3
#####
#O~H#
#####
R
Keluaran
2
Matriks Preferensi -> Kematian
Memasukkan
5 5
#####
#O #
# ~ #
# H#
#####
WWDW
Keluaran
aHHHH!
0
Matriks Preferensi -> Menang
Memasukkan
5 5
#####
#O #
# ~ #
# H#
#####
WRD
Keluaran
2
Menunggu Penuai
Memasukkan
5 5
#####
#O #
# ~ #
# H#
#####
WWW
Keluaran
aHHHH!
0
Kekalahan yang Berhasil dalam Skenario Wikipedia
Memasukkan
40 23
########################################
#~ ~ ~~ ~ ~ ~~ ~ ~~ ~ ~ ~~ #
#~~ ~ ~~ ~ ~ ~~ ~ #
#~# ~~ ~~~~ ~ ~~~~ ~ ~~~ ~#
# ~ ~ ~ ~~ #~~ ~ #
#~~ ~~~ ~ ~ ~ ~ ~~ ~ ~ ~ ~ #
# ~~ ~ ~ ~ ~~~ H ~ #~ #
# O~ ~ # ~~~ ~ ~ ~~ ~ ~ ~~ #
# ~ ~H~~ ~~ ~ # ~~ ~ #
# ~~ ~ ~~~ ~~ ~~~~ ~ ~#
#~ ~ ~~~ ~ ~ ~ ~ ~~ ~~#
# ~ # ~ ~~ ~~~ ~ ~ ~ # ~#
#~ ~ ~~ ~ ~ H ~~ ~~ ~ ~ ~~~ #
# ~ ~ ~ ~ ~ ~~~ ~ #
# ~~ ~ ~ ~~ ~ ~ ~ ~ ~ #
# ~~ ~ ~ ~ ~ ~~ #
#~ ~ # ~~~~ ~ ~~~H # ~ #
# ~ ~ ~ ~ ~ ~~ ~ #
# ~ ~ #~ ~ ~~ ~ ~ ~#
# ~~ ~ ~ ~~ ~ ~ #
# ~~~ ~ ~~ ~ ~ ~ ~ #
# ~ ~ ~ ~~ ~ ~ ~ #
########################################
RRRUWWWRRRURWWWWRDRRWWRDWWWWD
Keluaran
8
Peta disediakan oleh saya, bergerak dan keluaran oleh @bobbel, dikuatkan oleh saya sendiri dan @Allbeert.
Kriteria Menang
Saya pikir ini golf, jadi saya akan pergi dengan aturan kode golf kecuali orang mengeluh.
Kredit tambahan
Implementasi Unicode yang dapat dimainkan dengan karakter double-lebar menyerupai gambar!
Jawaban:
Perl 6: 741 karakter, 758 byte
Versi golf berada di bagian bawah, karena pada dasarnya linenoise. Di atasnya adalah versi pra-golf saya. Keduanya interaktif (mereka akan membaca sebanyak mungkin perintah dari file input yang mereka bisa dan kemudian beralih menggunakan STDIN untuk mendapatkan perintah). Mereka mencoba menggunakan karakter dan warna asli.
Penggunaannya seperti
perl6 beast.p6 beast-input
:Versi golf:
Selamat Hari Paskah!
sumber
Jawa, 1,843
Percobaan pertama saya untuk memecahkan teka-teki ini dengan Java. Saya tahu, bahwa ada banyak perbaikan untuk membuatnya lebih pendek. Tetapi pada akhirnya itu berfungsi untuk saat ini.
Untuk mencobanya, Anda harus membuat kelas
C
dan menempelkan kode.args[0]
(Sebenarnyaa[0]
) adalah untuk input. Metode cetak peta tidak termasuk karena tidak perlu untuk hasil puzzle.Untuk menjalankannya, coba misalnya:
Keluaran dari skenario besar terakhir satu belokan sebelum binatang makan pemain:
Tanpa spasi garis konyol: http://pastebin.com/raw.php?i=QhpxKcCT
Jadi cara pemain berakhir setelah bergerak
RRDDDRRRWW
, karena padaW
ait terakhir , binatang buas ke kiri akan pergi ke kanan untuk memakan pemain.Contoh lain dari peta besar asli tetapi gerakan yang berbeda:
http://pastebin.com/raw.php?i=nBWjC3PZ
Lihat animasi ini: http://youtu.be/0DIhEhjWd6s
Dan contoh terakhir dengan peta asli dan gerakan yang berbeda (sesuai dengan aturan pergerakan binatang buas baru):
http://pastebin.com/raw.php?i=NNmgzx7U
Lihat di youtube: http://youtu.be/jXPzL88TU2A
sumber
C -
1004984917Ahh, keindahan C. Mengikuti semangat jawaban yang lain, aku mencoba memformat milikku juga :)
Saya membayangkan masih ada beberapa perbaikan di sana-sini, tetapi ini benar-benar menyenangkan untuk ditulis dan golf. Hitungan karakter mencakup semua ruang yang diperlukan dan baris baru.
Saya menguji ini dengan semua kasing sampel dan beberapa lagi milik saya, dan tampaknya berfungsi dengan baik. Jika ada yang menemukan situasi yang tidak dijawab dengan baik, beri tahu saya.
Input dari stdin, dan output ke stdout. Tidak ada pemeriksaan untuk input yang salah. Dan, itu mengembalikan skor jika pemain dimakan, atau jika pemain masih hidup setelah semua gerakan dieksekusi (bahkan jika masih ada
H
di sekitar.Versi tidak disatukan:
sumber
RRRUWWWRRRURWWWWRDRRWWRDWWWWD
pada peta besar, Anda mendapatkan 6 saat ia mendapat 8. Dia membuat video , Anda mungkin dapat mencetak setiap langkah dan mencari anomali ...