pengantar
Untuk yang belum pernah mendengar game ini sebelumnya. Anda memainkan bola yang harus bertahan selama mungkin. Ini dilakukan dengan bergerak ke kiri atau ke kanan, ke lubang. Karena peta bergerak ke atas, Anda harus turun untuk bertahan lebih lama. Jika Anda mencari gambar, Anda mungkin tahu game mana yang saya maksud.
Tugas
Diberikan bilangan bulat positif n , menghasilkan peta bola jatuh dari n lapisan. Di antara lapisan, ada 4 baris baru. Lebar lapisan terdiri dari 25 karakter garis bawah, dengan panjang satu lubang 5. Itu berarti bahwa lebar total sama dengan 30. Ini secara acak digeser setelah setiap lapisan. Contoh dari layer yang valid adalah:
_______________ __________
Lubangnya juga bisa di tepinya, seolah-olah lapisannya seperti silinder:
_________________________
Perhatikan bahwa ada 2 spasi utama dan 3 spasi tambahan. Membuat satu lubang lebar 5.
Uji kasus
Untuk n = 4, ini adalah output yang valid:
_______________ __________
______ ___________________
_______________________ __
_________________________
Catatan: lubang harus didistribusikan secara seragam . Trailing dan / atau baris baru terkemuka diizinkan.
Ini adalah kode-golf , jadi pengiriman dengan jumlah byte paling sedikit menang!
Jawaban:
Pyth, 19 byte
Coba di sini!
Penjelasan
sumber
Rubi,
747159Terima kasih kepada Alex A. untuk mengingatkan saya bahwa pada dasarnya satu baris berarti saya bisa menggunakan lambda yang stabby
sumber
puts
menambahkan baris baru ke akhir (sementara Rubyprint
tidak), jadi5
baris tersebut diperbarui ke baris baru.times
fungsi untuk menyelamatkan saya 3 byte selamafor
loop: D->n{n.times{puts (('_'*25+' '*5)*2)[rand(30),30]+"\n"*5}}
Coba di sini(->n{n.times{puts (('_'*25+' '*5)*2)[rand(30),30]+"\n"*5}})[input]
atau hanya menentukan bahwa Anda perlu menetapkannya untuk menyebutnya. Ini sangat umum di situs.Julia, 72 byte
Ini adalah fungsi anonim yang menerima integer dan mengembalikan string. Untuk menyebutnya, tetapkan ke variabel.
Kami membuat string dengan 25 garis bawah diikuti oleh 5 spasi, lalu memercikkannya ke dalam array karakter. Kami menggesernya secara acak beberapa kali secara acak (antara 1 dan 30), menggabungkannya kembali menjadi string, dan menempel pada 5 baris baru. Proses ini diulangi n kali, di mana n adalah input. Array yang dihasilkan bergabung dan dikembalikan.
Coba di sini
sumber
PowerShell 65 Bytes
Jalankan loop untuk n iterasi. Dapatkan nomor acak dan buat string garis bawah dengan 5 spasi di akhir. Indeks ke dalam string sebagai array untuk menarik mulai dari lokasi acak. Pengindeksan negatif membungkus dari akhir. Gabung kembali itu dan tambahkan 5 baris baru.
Sunting: Saya tidak tahu mengapa saya pikir saya perlu parameter untuk
-Maximum
karena posisinya. Berkat TimmyD saya mencukur beberapa byte dan lupa untuk mendapatkan input sehingga mendorong saya kembali ke 65.sumber
Pyth, 19 byte
Coba di sini
Terima kasih kepada FryAmTheEggman karena telah menangkap bug.
sumber
SpecBAS - 93 byte
Membuat string dengan 25 garis bawah + 5 spasi, mengambil titik awal acak dan menyambungkan string pada posisi itu dan memotong awal string hingga akhir.
Apostrof memaksa baris baru, jadi 1 di akhir string dan 4 baris kosong.
sumber
MATL , 23 byte
Cobalah online!
Penjelasan
sumber
Java,
177140 byte-1 byte ke Biru memindahkan i ++
-2 byte bagi saya meninggalkan spasi kosong yang tidak ada artinya dalam aslinya
-34 byte ke Blue untuk menyadari aku tidak butuh char [] sama sekali
Karena, Anda tahu, Jawa.
Sedikit tidak berbulu:
Karena Java tidak memiliki String 'rotate', saya harus mengambil pendekatan yang berbeda. Saya menghasilkan int 0-29 acak yang mewakili indeks awal lubang (OBO karena
>
lebih pendek dari>=
). Setiap karakter individu kemudian ditentukan oleh logikaIni menangani sifat "pembungkus" dari keseluruhan.
sumber
s = ""
). Keduanya sudah diperbaiki sekarang.Python 3.5 -
109113 byte (+4 untuk mencetak 4 baris baru di antara setiap hasil):Formulir Tidak Terkumpul:
Pada dasarnya apa yang terjadi adalah bahwa string 'j', yang terdiri dari 25 garis bawah diikuti oleh 5 spasi, diberikan sebagai argumen untuk fungsi "g". Kemudian, modul acak diimpor, dan, sebanyak yang ditentukan oleh pengguna, angka acak dipilih dalam kisaran
0 => 29
, dan string, "j", bergeser ke kanan sebanyak itu. Hasilnya kemudian dicetak setelah setiap iterasi, dengan 4 baris baru di antara setiap hasil.sumber
'\r'
ke'\r'*4
mungkin harus bekerja. Juga, saya pikir Anda bisa berubahrange(a+1)
menjadirange(a)
.range(a)
benar - benar mencetaka-1
jumlah garis, jadirange(a+1)
adalah cara terbaik untuk mencetak jumlah garis persis yang disediakan pengguna. Juga, sekarang mencetak 4 baris baru di antara setiap hasil.g(5)
dan mencetak 6 string bukannya lima, sehingga mengubaha+1
kea
mungkin akan memperbaikinya.Python,
119103 bytesumber
n
kali