Raffaele Cecco adalah programmer yang menghasilkan beberapa dari yang terbaik video game untuk ZX Spectrum komputer di akhir tahun delapan puluhan. Di antara yang lain, ia mengembangkan Cybernoid dan Exolon yang sangat terkenal .
Raffaele berusia 50 tahun pada 10 Mei 2017 . Tantangan ini merupakan penghargaan kecil baginya, untuk jam-jam bahagia yang banyak dari kita habiskan memainkan game-game hebat itu, dan untuk motivasi yang mereka bawa.
Tantangan
Tujuannya adalah untuk menghasilkan tenda persegi panjang yang terinspirasi oleh yang terlihat di layar menu utama Cybernoid , tetapi dalam seni ASCII.
Secara khusus, string "Happy birthday Raffaele Cecco "
(perhatikan ruang terakhir) akan ditampilkan berputar di sepanjang tepi persegi panjang 12 × 5, dengan waktu jeda yang konstan antara foto.
Misalnya, dengan asumsi teks ditampilkan searah jarum jam dan diputar berlawanan arah jarum jam (lihat opsi di bawah), berikut adalah tiga potret berturut-turut tenda persegi panjang:
Happy birthd
a
o y
c
ceC eleaffaR
kemudian
appy birthda
H y
o R
cceC eleaffa
kemudian
ppy birthday
a
H R
a
occeC eleaff
dan seterusnya.
Aturan
Tidak ada input yang akan diambil. Output akan melalui STDOUT atau setara, atau dalam jendela grafis.
Keluaran harus benar-benar menggambarkan teks berputar; artinya, setiap snapshot baru harus menimpa yang sebelumnya untuk memberi kesan gerakan. Ini dapat dilakukan dengan cara apa pun, misalnya, dengan menulis jumlah baris baru yang sesuai untuk membersihkan layar secara efektif. Dapat diterima jika ini hanya berlaku untuk ukuran layar tertentu; sebutkan saja dalam jawaban.
Opsi berikut diterima:
- Teks dapat ditampilkan searah atau berlawanan arah jarum jam, dan dapat diputar searah atau berlawanan arah jarum jam (contoh foto di atas menganggap tampilan searah jarum jam dan berputar berlawanan arah jarum jam).
- Rotasi harus berjalan secara siklikal dalam infinite loop (hingga program dihentikan), dan dapat dimulai pada fase apa pun.
- Jeda waktu antara foto harus kira-kira konstan, tetapi dapat dipilih secara bebas antara 0,1 dan 1 detik. Jeda awal sebelum menampilkan foto pertama dapat diterima.
- Huruf dapat berupa huruf besar, huruf kecil atau campuran (seperti pada contoh di atas).
- Ruang kosong terkemuka atau tertinggal diizinkan.
Program atau fungsi diizinkan, dalam bahasa pemrograman apa pun . Celah standar dilarang.
Jika memungkinkan, berikan file gif yang memperlihatkan output, atau tautan untuk menguji program.
Kode terpendek dalam byte menang.
Jawaban:
Jelly ,
7465 byteVersi Windows berjalan di konsol 6 baris cp-65001 tinggi.
Ada jeda setengah detik (plus evaluasi) antara iterasi:
Bagaimana?
sumber
HTML + ES6, 200 byte
sumber
ZX Spectrum BASIC, 187 byte
Kesal karena Philip mengalahkan saya dalam beberapa menit :-) Angka-angka seperti
\{15}
adalah kode kontrol yang tidak dapat dicetak - kompilasi dengan zmakebas jika Anda ingin bermain-main. Perhatikan bahwa persegi panjang penuh tidak segera dicetak, tetapi jatuh ke tempatnya setelah beberapa frame pertama.Cobalah di sini (versi emulasi JS online, tekan enter untuk memulai) ... http://jsspeccy.zxdemo.org/cecco/
Anda juga dapat menyimpan empat byte dengan membersihkan layar di antara bingkai alih-alih melakukan PRINT AT, tetapi terlalu kedipan untuk sia-sia ...
sumber
V,
757170 byte4 byte disimpan berkat @DJMcMayhem
Berikut ini adalah tautan TIO, tetapi perhatikan bahwa ini tidak akan berfungsi pada TIO karena programnya loop tanpa batas. Cobalah online!
Karena kode ini mengandung unsintables, inilah hexdump.
Waktu tidur adalah 500 milidetik.
sumber
H|
->{
.<C-v>êx
->dê
, dan5L
->}
±± a
,o° y
danc±±<space>
5L
=>}
.ZX Spectrum BASIC, 274 byte
Ya, seseorang harus melakukannya. Pedant mungkin ingin mendiskualifikasi ini karena terlalu lambat dan tidak memiliki jeda antara animasi, tapi saya mengklaim kasus khusus di sini :-)
Tidak terlalu golf juga. 274 byte adalah jumlah byte yang disimpan oleh Spectrum untuk direkam saat menyimpan program ini.
sumber
SGN PI
untuk1
(menghemat 5 byte) tetapi Anda lupaNOT PI
untuk0
danVAL
untuk konstanta lainnya ...NOT PI
Saya baru saja melewatkan. Sengaja tidak melakukanVAL
apa yang lambat, danVAL
sangat lambat.SVG (HTML5), 267 byte
Yah, itu adalah persegi panjang, dan itu adalah tenda, dan itu adalah teks ASCII ...
sumber
PHP, 184 byte
mencetak 39 baris baru untuk menghapus layar; jalankan bersama
-nr
.Jeda yang sebenarnya adalah 1 detik; tapi aku mempercepat gif.
ungolfed
sumber
Python 2,
230184 byteCobalah di repl.it
sumber
Python 3 , 160 byte
Cobalah online! (Tidak ada animasi)
sumber
Python 2,
218200190181176 byte-18 byte dengan menghapus
str
pemformatan-10 byte, terima kasih atas saran @Uriel dan @ElPedro
-9 byte dengan menghapus pengindeksan negatif
-5 byte dengan menyimpan terbalik
f
sebagaiv
danwhile
kondisirepl.it
sumber
while 1:
danprint
dan mengganti yang berikutnya;
dengan baris (aktual). Jugaf='H..
. Jugaf[:1]
sebenarnyaf[0]
.time.sleep(1)
mengambilnya di bawah 200?Ruby + GNU Core Utils, 136 byte
sumber
Python 2,
182179173160 byteCobalah di repl.it
Tidak berfungsi pada TIO jadi upaya pertama saya menggunakan repl.it
Edit Menggunakan loop "membuang-buang waktu" untuk menghitung hingga 1000000 memberikan penundaan yang konsisten antara 0,1 dan 1 pada mesin saya dan pada repl.it dan menyimpan impor
time
. Saya kira jika Anda menjalankannya pada komputer 286 tua dengan RAM 64MB mungkin akan lebih dari 1 detik tapi saya cukup yakin itu tidak akan terjadi. Jika tidak maka cukup kurangi 1000000 dan selamatkan saya beberapa byte :-)Edit 2 -6 untuk mengingat bahwa daftar pemahaman dalam Python 2 membocorkan nilai terakhir
s
sehingga saya dapat menggunakannya nanti dan juga mengingat bahwa apa pun selain 0 dan "" benar. Bug atau fitur? Tidak peduli Ini menyelamatkan saya 6 byte :-)Sunting 3 Lain-lain 13 dengan menghormati rotasi dan dengan menggunakan pemahaman daftar untuk baris tengah di dalam bergabung dan berubah
3000000
menjadi40**4
. Terima kasih kepada @FelixDombek untuk yang terakhir. Harus kehilangan trik pemahaman daftar saya.sumber
999999
alih-alih1000000
untuk byte: VKode mesin ZX81 Z80,
158130 byteOK jadi ia memiliki banyak byte hingga terpasang tetapi kemudian turun menjadi 130 byte. Tidak yakin apakah itu melanggar aturan? Ini adalah posting pertama saya dan hanya sebagai tamu.
Program ini menggunakan 'brute force' untuk menampilkan pesan daripada penggunaan fungsi pintar seperti yang dapat dilihat dari cara ia memiliki potongan kode yang terpisah untuk baris atas, vertikal tangan kanan, garis bawah dan vertikal tangan kiri. Animasi ini dicapai dengan memutar konten pesan dan kemudian hanya menampilkannya setelah jeda singkat yang seharusnya cukup tepat 0,2 detik karena menunggu 10 frame dari kecepatan 50 (untuk spesifikasi Inggris Zeddys tetap).
Saya harus menghargai kmurta untuk konsep memutar pesan untuk mendapatkan animasi - yang menyelamatkan 28 byte !!!
Maaf saya tidak dapat memposting tautan untuk menjalankannya karena ini adalah program yang dikompilasi dalam format .P untuk EightyOne (atau emulator lain) atau Zeddy yang sebenarnya jika Anda memiliki ZXPand atau sejenisnya untuk memuatnya.
.P dapat diunduh di http://www.sinclairzxworld.com/viewtopic.php?f=11&t=2376&p=24988#p24988
sumber