Mertua saya memiliki kolam ikan di halaman mereka, penuh dengan koi. Itu tidak benar-benar terlintas di benak saya sampai saya perhatikan ekstrak berikut dari kode saya.
',') & '_'
... Aku punya wajah ikan yang menatapku dari layar ...
Yang telah memberi saya ide bagus ...
Pencarian saya untuk Anda, pegolf tersayang saya adalah membuat akuarium ASCII satu baris, dengan aturan berikut:
- Ukuran akuarium dari sisi tangki ke sisi lain tangki tidak boleh lebih kecil dari 60 karakter dan tidak lebih besar dari 80 karakter. Sisi tangki perlu diindikasikan menggunakan karakter pipa / bar (
|
). - Ikan harus bisa "berenang" dari kiri ke kanan di antara sisi-sisi tangki. Saat mereka berputar, tampilan depan diperlukan untuk transisi dari satu arah ke arah lainnya.
Ikan harus terlihat seperti berikut:
}}< }} ',')
Ikan berenang dengan benar(',' {{ >{{
Ikan berenang ke kiri}}('_'){{
Ikan menghadap ke depan
Ketika seekor ikan berubah untuk mengubah arah (peluang 30%), ia harus mulai dari satu arah, menghadap ke depan, lalu menghadap ke arah yang lain ... Pastikan ada ruang yang cukup untuk ikan berbalik, yaitu membutuhkan enam ruang sebelum tepi minimum tangki ...
- Kecuali jika seekor ikan meniupkan gelembung atau mengubah arah, ia akan melanjutkan ke arah yang dihadapinya, jika ia berada dalam enam ruang di sisi tangki, ia akan mengubah arah.
- Ikan (menghadap ke kiri atau kanan) kadang-kadang (10% kemungkinan) berhenti untuk meniup gelembung berturut-turut (
.oO*
), sehingga ikan harus memiliki ruang yang tersedia di sebelahnya agar gelembung ada, sehingga ikan dapat hanya berenang sedekat mungkin dengan sisi, menghemat satu ruang. Gelembung harus menghilang sebelum ikan dapat bergerak ...
Serangkaian contoh garis perilaku ikan, dengan -
karakter yang menunjukkan spasi, karena fitur tampilan kode di sini sedikit ketat ... Saya akan berharap tanda hubung ini diganti dengan spasi ketika Anda mengkodekan ini ...
Setiap baris di sini dapat dianggap sebagai kerangka waktu.
|-}}< }} ',')----------|
|--}}< }} ',')---------|
|---}}< }} ',')--------|
|----}}< }} ',')-------|
|-----}}< }} ',')------|
|-----}}< }} ',').-----|
|-----}}< }} ',')o-----|
|-----}}< }} ',')O-----|
|-----}}< }} ',')*-----|
|---------}}('_'){{----|
|-----------(',' {{ >{{|
|----------(',' {{ >{{-|
|---------(',' {{ >{{--|
|--------.(',' {{ >{{--|
|--------o(',' {{ >{{--|
|--------O(',' {{ >{{--|
|--------*(',' {{ >{{--|
|--------(',' {{ >{{---|
|-------(',' {{ >{{----|
|------(',' {{ >{{-----|
dll. Contoh di atas adalah, seperti yang saya katakan, kecil, tetapi Anda mendapatkan ide umum ...
Kode terpendek menang ...
Saya mengharapkan output pada baris yang sama (jika mungkin), jika tidak, menampilkan bingkai demi bingkai berturut-turut adalah baik-baik saja ... Apakah Anda pergi satu baris atau beberapa baris terserah Anda. Jika Anda melakukan banyak baris, mereka harus dipisahkan oleh baris baru.
Juga timer dikenakan antara frame, 2000 ms. Ini wajib .
Ayo lihat apa yang kamu punya!
sumber
Jawaban:
Python 3 (278)
Sebelumnya: 334, 332, 325, 302, 300, 299, 291, 286, 284, 281
Golf di Python selalu sulit karena persyaratan lekukan pernyataan, tetapi meskipun begitu, ini berjalan sangat baik!
Terima kasih banyak kepada Volatility dan DSM karena telah membantu saya bermain golf lebih jauh.
Versi bersih
sumber
Rubi,
291289Panjang ikan itu sebelas karakter, membuat akuarium 6 * 9 + 11 + 2 = 67 karakter lebar, yang cocok dengan toleransi yang diperlukan.
Fungsi
f
lambda melakukan semua pengangkatan berat: ia menerima substitusi sebagai sepasang argumen, kemudian mencoba menerapkan substitusi pada akuarium. Jika berhasil, itu melukis satu bingkai animasi. Ini kemudian melaporkan nilai keberhasilan sebagai2
(penundaan diambil) ataunil
(penundaan tidak dilakukan).Ikan tidak akan meniup gelembung dua kali berturut-turut. (Perbaiki:
...while rand>0.1
- 4 karakter)Ikan bisa meniupkan gelembung bahkan sebelum belok paksa. (Perbaiki: atur ulang struktur percabangan)
Ada bingkai di mana gelembung benar-benar hilang (termasuk
*
) tetapi ikan belum pindah ke dalam kekosongan yang dihasilkan. Ini mengikuti surat, tetapi bukan contohnya. (Perbaiki: gantif[?*,w]
denganq[?*]=w
- gratis)Tidak menghapus konsol. Perbaiki: tambahkan
`clear`
(Unix) atausystem 'cls'
(konsol Windows) sebelumputs q
memperbaiki ( Ref. ) Atau gunakanprint
sebagai gantiputs
dan tambahkan\r
ke akuarium ( disarankan oleh @manatwork ).Versi yang dapat dibaca:
sumber
\r
ke awal q:q="\r|#{r+s*9}|"
. Kemudian gunakan$><<q
sebagai gantiputs q
. Lebih panjang 1 karakter, tetapi terlihat lebih baik tanpa menggunakan perintah eksternal.\r
membersihkan layar? Tidak dalam kasus saya. Atau, mengapa kamu tidak sukaputs
?\r
apakah carriage return. Dengan menggunakan$><<q
untuk output, kursor akan tetap berada di baris yang sama (puts
memaksa\n
setelah output) sehingga memulai output berikutnya dengan\r
akan melompat kembali ke awal baris saat ini dan mulai untuk output dari sana. Dengan demikian menimpa "gambar" sebelumnya garis akuarium.\r
.R, 451 karakter
Upaya pertama:
Bertakuk:
Ini mencetak akuarium sebagai stdout pada satu baris (kemudian 2s istirahat dan carriage kembali sebelum akuarium pada t +1 dicetak).
sumber
Perl, 281
atau lebih jelas
Ikan berputar dengan benar. Gelembung bertiup.
285 - jika Anda menyukai nuansa akuarium asli dan bukan versi gulir:
sumber
$d=0
dalam kasing "diperlukan".sleep2
(tanpa ruang) tidak berfungsi untuk saya; juga saat Anda berputar, Anda tidak menjaga wajah ikan tetap rata. Dan gelembung-gelembung itu tampaknya tidak pernah muncul.C,
400394373 karakterDengan spasi putih:
sumber
i==l?(c=r):(c=l)
disingkat menjadic=i==l?r:l
?#define p printf(