Baru-baru ini (beberapa tahun yang lalu) beberapa buzz di situs web pemrograman tentang implementasi Tetris dalam 140 Bytes . ...
Ternyata meskipun kecil, ini adalah versi Tetris yang disederhanakan, dan bahkan bukan implementasi yang lengkap. Hanya fungsi logika inti yang cocok dengan 140 byte Javascript. Untuk benar-benar menjalankannya, Anda memerlukan ~ 840 karakter HTML lainnya.
Kita bisa berbuat lebih baik!
Tantangan ini adalah untuk mengimplementasikan versi lengkap "Tetris Biner" dalam sesedikit mungkin tweet.
Aturan Tetris Biner:
- Program harus menampilkan bidang bermain yang mengandung setidaknya 5 kolom dan 6 baris sel.
- Metode tampilan apa pun dapat digunakan, selama blok dan tepi bidang ditandai dengan jelas.
- Paling tidak harus ada dua jenis blok:
#
dan##
. Dukungan blok tambahan seperti###
atau blok sudut berbentuk seperti L akan ter-upgrade oleh saya: P dan permainan biner tetris paling lengkap (blok paling banyak seperti fitur rotasi dan asli) akan memenangkan kebahagiaan saya dan kemungkinan hadiah hingga 50 rep. - Blok baru ditambahkan ke bidang di baris atas, dan satu sel blok harus menempati kolom tengah.
- Blok turun menuju baris paling bawah pada tingkat yang tetap. Blok harus turun bahkan tanpa input pengguna.
- Ketika blok menyentuh bagian bawah bidang atau blok yang lebih rendah, mereka berhenti jatuh dan diperbaiki di tempatnya. Blok baru ditambahkan.
- Ketika semua kolom di baris diisi dengan blok, baris dikosongkan, dan semua blok tetap di atas drop down satu baris.
- Program harus merespons penekanan tombol. Harus ada 3 tombol unik yang menjalankan fungsi berikut
- menggeser blok saat ini ke kiri 1 kolom
- menggeser blok saat ini ke kanan 1 kolom
- menggeser blok saat ini ke bawah 1 baris
- Setiap tweet mungkin hanya memiliki 140 karakter. Menggunakan karakter multi-byte yang dapat dimasukkan ke dalam tweet diperbolehkan.
Aturan untuk apa yang bisa di tweet itu sederhana. Jika Anda bisa tweet, Anda bisa menggunakannya.
Bahasa yang ditafsirkan mengikuti aturan yang sama. Setiap bagian harus mengikuti spesifikasi. Selama tidak ada kesalahan run time (dan sisanya valid mengikuti spesifikasi) jawaban Anda adalah Aturan Golf yang valid :
Karena implementasi asli "tweetable", tantangan ini memerlukan hal yang sama. Entri harus dapat ditransmisikan sebagai serangkaian tweet (garis 140 karakter atau kurang).Tweet pertama harus berisi nama kompiler / juru bahasa, nama program, dan argumen baris perintah apa pun
- itu akan disimpan sebagai file "P0"
- N tweet berikut harus mengandung program sebagai serangkaian baris.
- Setiap tweet akan disimpan dalam file dengan nama T <n>, dengan n adalah 1..N
- Setiap baris akan ditambahkan ke baris sebelumnya dan dikompilasi atau ditafsirkan. Itu harus menghasilkan file objek atau program yang valid.
- Program tidak perlu berfungsi sampai baris terakhir ditambahkan.
Program akan dijalankan dengan cara berikut (pseudo-bash)
interp,prog,args = split P0 /\s/ touch $prog for file in ./T* do cat $prog file > $prog $interp $prog $args die("FAIL") if $? #detect error done
Penerjemah harus merupakan program yang dapat dieksekusi yang tersedia secara umum yang belum mengimplementasikan Tetris.
Penilaian :
Tweet Paling Sedikit, termasuk P0. Ikatan terputus oleh jumlah karakter cadangan terbesar (tweet 140 * num - jumlah karakter total).
Entri Contoh
chrome a.htm
<html><div id="output"></div></html>
<script>cool java script here</script>
Nilai = 3 (334 cadangan)
cc a.c ;a.out
main(){/*cool prog here*/}
Nilai = 2 (241 cadangan)
tetris
Nilai = 1 (134 cadangan) jika itu sah, padahal tidak
Terima kasih khusus
Saya diizinkan memposting ini atas persetujuan Ashelly di sini
sumber
Jawaban:
Python 3, Skor 5 Tweet (242 cadangan, menghitung P0)
-19 byte, terima kasih kepada Jonathan Allan !
Hitungan cadangan tidak memperhitungkan baris baru akun di antara tweet.
Tweet 1 (Deklarasi, 12 byte)
Tweet 2 (70 byte)
Kicauan 3 (129 byte)
Kicauan 4 (113 byte)
Tweet 5 (134 bytes)
Program Lengkap (449 byte)
Apakah beberapa titik jahat peretasan dan menyimpan bidang dan potong dalam dua bilangan bulat. Saya akan mencoba dan mengirim penjelasan segera.
Catatan: Ini hanya berjalan pada Windows, tetapi bisa dialihkan ke Linux melalui
msvcrt
→getch
dan"cls"
→"clear"
. Selain itu, input karakter tidak berfungsi pada IDLE Python, jadi saya sarankan menjalankannya di tempat lain.sumber
\xe0
adalah empat byte bukan satu sehingga tweet 3 harus 130. Anda tampaknya telah melewatkantime.sleep(.1);c+=1
tweet 4 dan mengubah urutannya (Saya tidak tahu apakah perubahan urutannya disengaja) dan sekali lagi\n
dua byte bukan satu, jadi seharusnya 134 .sleep
di komputer saya.c%10<1
dan menghapusc=0
.JavaScript (4 Tweet /
343317 byte / 243 cadangan)Tidak begitu yakin tentang persyaratan format tajuk & Tweet, jadi harap beri tahu jika perlu diperbaiki. Masih sedikit lagi yang bisa dicukur. Aku yakin.
Tweet 1 - P0 (11 byte)
Tweet 2 (82 byte)
Tweet 3 (126 byte)
Kicauan 4 (98 byte)
Jalankan di JSFiddle: https://jsfiddle.net/CookieJon/7Lenhcge/
(Klik pada panel output untuk memberikan fokus untuk acara keyboard)
sumber