Tantangan ini didasarkan pada salah satu yang diusulkan pada grup usenet, rec.games.roguelike.development beberapa tahun yang lalu. Saya tidak dapat menemukan posting newsgroup asli, tetapi Anda dapat melihat repo Github solusi . Itu hanya bermain golf dalam beberapa bahasa dan saya ingin melihat lebih banyak lagi!
Objektif
Tujuannya adalah untuk membangun program yang menyajikan tampilan bawah-atas dari ruang bawah tanah menggunakan karakter ascii. Akan ada @
tanda yang mewakili pemain yang dapat dipindahkan melalui ruang bebas di ruang bawah tanah (diwakili oleh ), meskipun tidak dapat melewati dinding (diwakili oleh
#
).
Peta ruang bawah tanah harus terlihat seperti ini:
#### ####
# # # #
# #### #
# #
## ##
# #
# #
## ##
# #
# #### #
# # # #
#### ####
Pemain harus mulai di lokasi {2,2}, di mana {0,0} adalah sudut kiri atas.
Antarmuka
Pengguna harus dapat menggerakkan pemain di empat arah mata angin menggunakan tombol panah pada keyboard.
Perlu ada beberapa cara bagi pengguna untuk keluar dari program. Tidak perlu keluar dengan anggun (misalnya, tidak masalah jika pengecualian dicetak).
Peta dan pemain harus ditarik sebelum input diambil, dan pemain perlu diperbarui setelah setiap input.
Perpustakaan
Jangan ragu menggunakan pustaka yang mapan untuk input atau output konsol, seperti Kutukan. Sebutkan saja dalam jawaban Anda apa yang Anda gunakan.
Mencetak gol
Ini golf kode, kode terpendek menang!
Jawaban:
C,
257 253 222220Gunakan
system("cls")
alih-alih kutukan (gunakansystem("clear")
untuk sistem Linux) dan algoritme pintar untuk menyesuaikan peta menjadi angka 8 digit. Kunci yang tidak diperpanjang mengakhiri program, misalnya melarikan diri.EDIT: Sekarang juga tunjukkan pahlawan Anda di bawah peta dengan menggunakan
a<230
alih-aliha<132
:Kode:
sumber
putch
, adaputchar
yang melakukan hal yang sama, tapi saya tidak tahu bagaimana cara menggantigetch
- adagetchar
juga, tetapi tidak berfungsi untuk saya - sepertinya tidak mengenali kunci kursor.Ruby 1.9 + Curses (248)
sumber
Python
332319317Pustaka kutukan python hanya didukung secara resmi di linux. Ada yang tidak resmi tersedia untuk windows, tetapi saya tidak dapat menjamin bahwa ini akan bekerja dengannya.
Untuk menyimpan beberapa karakter, saya membuat kode kunci kode ke atas, bawah, kiri, dan kanan. Ini dapat menyebabkan masalah bagi sebagian orang. Jika ini tidak berhasil untuk siapa pun, saya dapat memposting versi yang seharusnya.
Gunakan ctrl + c untuk keluar. Anda mungkin harus mengatur ulang terminal Anda setelah keluar, tetapi tantangannya secara khusus mengatakan bahwa pintu keluar tidak harus anggun.
sumber
QBasic,
314313 byteMasalah semacam ini hanya meminta solusi QBasic.
Ini QBasic golf, yang akan diperluas secara signifikan oleh autoformatter. Tetapi, jika Anda mengetikkan kode persis ini ke dalam IDE dan menekan F5, itu harus dijalankan. Diuji pada QB64 .
Penjelasan:
Peta dikodekan dengan baris-bijaksana sebagai bit dari bilangan bulat dalam
DATA
pernyataan (1 untuk ruang, 0 untuk dinding).FOR
Loop bersarang membongkar mereka, menyimpan nilai kebenaran dalam array 2Dw
, dan mencetak#
atausesuai. (Perhatikan bahwa yang benar dalam QBasic adalah
-1
, jadi mengapa kita menambahkan ke 35 bukannya mengurangi!) Pemain mulai dari 3,3 karena sebagian besar hal 1-diindeks dalam QBasic.Kami kemudian memasukkan
GOTO
loop: mencetak@
, mendapatkan input keyboard, mengkonversi ke kode karakter yang diperluas, dan memodifikasix
dany
berdasarkan apakah pengguna menekan L / U / R / D. Jikaw(x,y)
benar, maka itu adalah ruang dan kita bisa pindah ke sana; jika tidak, tetap tinggal. Akhirnya, cara terpendek yang saya temukan untuk keluar adalah dengan menekan tombol tab (ASCII9
). Input lain apa pun akan membuat kami kembali keLOCATE
pernyataan pertama .Saya harus mengatakan, saya agak geli telah mengalahkan Python dengan jawaban QBasic.
sumber