Ini adalah tantangan pertama saya, jadi saya menjaganya agar tetap sederhana.
Jika Anda pernah mengetik telnet towel.blinkenlights.nl
pada baris perintah dan menekan enter, Anda akan mengalami sukacita asciimation. Asciimation adalah, cukup sederhana, melakukan animasi dengan seni ascii. Hari ini kita akan melakukan asciimation yang sangat mendasar dari seseorang yang melakukan jumping jacks.
Akan ada dua gambar ascii yang akan kita satukan menjadi satu asciimation. Nomor 1:
_o_
0
/ \
Nomor 2:
\o/
_0_
<blank line>
Perhatikan bahwa yang kedua memiliki garis kosong di bagian akhir.
Jadi program Anda harus melakukan langkah-langkah ini:
- Kosongkan layar konsol.
- Cetak gambar seni ascii yang benar.
- Tetapkan bendera atau sesuatu agar Anda tahu untuk melakukan gambar lainnya di lain waktu.
- Tunggu sebentar (sekitar satu detik).
- Lanjutkan pada 1.
Aturan
- Program Anda harus berupa loop tak terbatas (secara teoritis).
- Bahasa pemrograman yang Anda gunakan harus telah dibuat sebelum tantangan ini diposting.
- Ini adalah kode-golf , jadi kode terpendek dalam byte menang.
- Celah standar berlaku.
Nikmati!
clear
) berbeda dengan Windows satu (cls
)Jawaban:
CJam,
5145423836 byteDi atas menggunakan notasi caret; urutan
^[
sebenarnya adalah karakter ASCII dengan titik kode 27.Saya telah meminjam urutan pelarian (
^[c
) dari jawaban @HomHastings ( dengan izinnya ) untuk menghemat 4 byte.Verifikasi
Anda dapat membuat ulang file seperti ini:
Untuk menjalankan kode, unduh juru bahasa CJam dan jalankan ini:
Ini akan bekerja pada terminal apa pun yang mendukung console_codes atau subset yang sesuai. 1
Bagaimana itu bekerja
1 Jack melompat akan terlihat lebih baik jika Anda menyembunyikan kursor terminal sebelum menjalankan program. Dalam Konsole, misalnya, Anda dapat mengatur warna kursor agar sesuai dengan warna latar belakang. Ini harus dilakukan melalui pengaturan terminal Anda, karena
^[c
me-reset terminal.sumber
Calculate the factorial of 60,000 and discard the result. This takes "about a second".
;)2Fm*
merupakan alternatif satu-byte-lebih baik6e4m!
untuk "operasi tidak masuk akal yang mengembalikan nilai kebenaran dan membutuhkan waktu satu detik untuk menghitung".e!
, tetapi mereka sepertinya mendapatkan memo. Setelah iterasi pertama, Jack yang malang mendapat serangan jantung ...Pyth -
414039 byte(Saya menghitung
\x1b
's sebagai satu byte sejak SO menghancurkan karakter khusus).Jelas tidak bekerja secara online karena a) loop tak terbatas dan b) menggunakan kode pelarian terminal.
Saya terkejut mengetahui bahwa augmented-assign bekerja dengan post-assign. Pyth itu luar biasa.
sumber
.V0
as infinite loopQBasic, 58 byte
Diuji pada QB64 .
Bahasa yang tepat untuk masalah itu bisa sangat kompetitif, bahkan jika itu biasanya bertele-tele. Jalan
?
pintas untukPRINT
membantu juga, tentu saja.CLS
adalah cl ear s creen;RUN
tanpa argumen me-restart program, yang merupakan cara terpendek untuk mendapatkan loop tak terbatas.Satu-satunya trik lain di sini adalah mencetak
0
untuk bagian tengah gambar pertama. QBasic menempatkan spasi di depan (dan setelah) nilai numerik non-negatif ketika mencetaknya, menghasilkan0
. Menyimpan 3 karakter" 0"
.Saya juga dapat menunjukkan bahwa keterlambatan dalam kode ini secara harfiah adalah yang kedua , dan tidak bergantung pada mesin. ; ^ P
sumber
Perl (* nix) , 54 byte
(
\x1b
dihitung sebagai 1 byte tetapi lolos untuk pengujian lebih mudah.) Di atas telah diuji dengan Bash dan disingkat oleh byte lain berkat @Dennis !Perl (Windows) , 56 byte
Terima kasih kepada @Jarmex atas pengujian dan sarannya!
sumber
print"@[2J"
:, mengganti @ di dalam tanda kutip dengan ASCII 27 (untuk tujuan pengujian,print"\033[2J"
mungkin lebih mudah).\e
dengan byte ESC literal. - Apakah Anda keberatan jika saya menggunakan\ec
trik dalam jawaban saya?"\e"
itu hanya jalan pintas untuk itu. Tolong pergilah!Javascript (ES6),
109937970 byte + HTML,1210 byte =1201069180 byteCukup mudah. Menggunakan string template untuk menyimpan gambar, dan mengganti nilai boolean untuk menentukan yang akan digunakan.
CATATAN: Solusi ini mungkin tidak valid, karena sebenarnya tidak menggunakan konsol. Namun, saya tidak percaya itu mungkin untuk menghapus konsol browser menggunakan JS, setidaknya tidak saat menggunakan Firefox.
sumber
<pre id="a"/>
bagian HTML, Anda tidak perlu<pre>
tag dalam kode.document.getElementById`a`
dengandocument.body
.<pre>
dan melakukandocument.all[4]
. Ini memungkinkan Anda menyingkirkan string pembungkus dan membuatnyainnerHTML=a?`...`:`...`}
.Bash,
8684 bytesumber
Python 2, 99 byte
Berjalan di Windows
Untuk mesin UNIX, tambahkan dua byte:
sumber
awk -
95 92 86 8483Latihan yang bagus: D Hanya ingin tahu apakah ini bisa dilakukan. Tidak ada harga yang didapat ...;)
Jika seseorang ingin menguji ini: setelah Anda menjalankan program ini, Anda harus menekan Ctrl + D (akhir input) untuk benar-benar memulai blok END. Untuk menghentikannya saya harus menggunakan Ctrl + Z.
Saya juga punya ini, yang hanya 74 byte, tetapi dimulai dengan menjeda sedetik yang saya pikir bukan perilaku yang diinginkan
sumber
Batch - 82 byte
Sunting: Membisukan perintah batas waktu dan menghapus baris baru ekstra.
Saya telah melihat 2 jawaban batch serupa lainnya sehingga saya tidak benar-benar ingin memposting ini, tetapi ini adalah golf pertama saya.
sumber
timeout 1
akan menempatkan banyak output yang tidak>mul
itu jenis kesalahan, atau mungkin Anda tidak tahu apanul
itu. en.wikipedia.org/wiki/Null_deviceBBC BASIC, 75 byte
Perhatikan bahwa tokenisasi menariknya hingga 75 byte. Spasi ditambahkan oleh IDE.
sumber
JavaScript ES6,
10095 byteLog ke konsol. Diuji di Safari Nightly
sumber
Batch,
151130118 bytesumber
@PING 127.0.0.1 -n 2>NUL
sebagai gantinya. Ping default untuk menunggu sekitar satu detik antara upaya, jadi ini dalam beberapa milidetik menjadi akurat, cukup dekat untuk tantangan ini. ReferensiCBM 64 BASIC V2,
121119112117 bytesumber
?CHR$(147)
menghapus layar? Jika demikian, Anda mungkin dapat menyimpan 2 byte sekarang karena OP telah mengkonfirmasi bahwa baris kosong tidak perlu dicetak secara eksplisitJulia, 70 byte
(pada Windows , dengan mengganti
clear
dengancls
, berkat undergroundmonorail)Di Linux, 72 byte
Ini menggunakan baris baru yang sebenarnya daripada
\n
untuk menyimpan byte; jika tidak,i
ini bisa 1 atau -1 sebagai "bendera", dan menggunakan rekursi untuk mencapai loop tak terbatas. Sebut saja sebagai salah satun(1)
atau hanyan()
.Juga,
run(`clear`)
/run(`cls`)
menggunakan perintah shell untuk membersihkan jendela, karena Julia tidak memiliki jendela command-jelas built-in.sumber
clear
kecls
(saya berasumsi, saya tidak tahu apa-apa tentang Julia).cls
berfungsi (lihat jawaban saya)Windows Batch, 83
89Edit menghapus baris kosong setelah klarifikasi oleh OP
Jika Anda menyingkirkan garis kosong di pria melompat (yang tidak bisa dilihat lagi), skornya adalah 83Catatan:
timeout
tidak ada di Windows XP. Ini bekerja di Vista atau versi yang lebih baru. Selaintimeout
itu tidak tepat untuk yang kedua, jadi itu adalah pilihan yang sempurna untuk menerapkan langkah 4 (Tunggu sebentar ( sekitar satu detik ))sumber
Javascript (ES6), 82 byte
Modifikasi dari jawaban saya sebelumnya yang menggunakan konsol. Bekerja sebagian di Firefox, tetapi hanya membersihkan konsol di Chrome, AFAIK.
Seperti biasa, saran diterima!
sumber
JavaScript,
929189 bytec
ditampilkan alih-alih membersihkan konsol, memecahkan output)Menghapus
"\033c"+
dari kode di atas, berikut ini berfungsi di browser, tetapi tidak menghapus konsol.sumber
x=0;setInterval(_=>console.log("\033c"+[`_o_<line break> 0<line break>/ \\`,`\\o/<line break>_0_`][x^=1]),1e3)
Untuk beberapa alasan, JS tidak akan membiarkan saya lulusconsole.log
sebagai fungsi dan manusia ASCII sebagai param tambahan.console.log
untuksetInterval
, alasannya adalah bahwa kita tidak melewati fungsi, tetapi menyebutnya. Itu akan dievaluasi sebelumsetInterval
dipanggil, dan karenaconsole.log
tidak kembali, pada dasarnya akan diteruskanundefined
kesetInterval
. Masuk akal? Dan terima kasih telah memperpendeknya!x=0;setInterval(console.log,1e3,"\033c"+[
_o_ <line break> 0 <line break> / \ `,\\o/<line break>_0_
] [x ^ = 1])` Sebenarnya, itu tidak membawa kesalahan jika saya ganticonsole.log
denganalert
."\033c"+[`_o_<line break> 0<line break>/ `,\\o/<line break>_0_`][x^=1]
dievaluasi sebelum panggilansetInterval
.Ruby, 79 byte
Membutuhkan kode pelarian.
sumber
Keempat, 86 byte
Membutuhkan GNU Forth untuk string yang lolos. Untuk menjalankan dalam Forth non-GNU, cukup ubah
S\"
keS"
, dan karakter yang lolos tidak akan mencetak dengan benar.sumber
CBM BASIC v2.0 (68 karakter)
Di atas memerlukan beberapa penjelasan, karena markup Stack Exchange tidak benar mewakili karakter PETSCII:
sumber
lilin lebah ,
119113 bytePenjelasan bagian-bagian penting dari program:
The
f
's mendorong nilai-nilai pada gstack (tumpukan global) untuk digunakan nanti. Nilai-nilai ini diakses oleh instruksi0gh
(atau yang dicerminkanhg0
) danhg
(gh
).h
memutar gstack ke atas,g
membaca nilai tertinggi gstack dan mendorongnya ke lstack (tumpukan lokal) dari lebah (penunjuk instruksi).Penjelasan mendalam mengikuti nanti, jika perlu. Mungkin dengan animasi.
sumber
Deadfish , Non-Competing (658 bytes)
Ini solusi yang tidak bersaing , karena tidak sepenuhnya memenuhi persyaratan tantangan. Deadfish adalah bahasa terjemahan yang sangat aneh, yang hanya memiliki 4 perintah dan akumulator. Akumulator adalah variabel byte tunggal yang diinisialisasi pada 0. Perintah 4 adalah:
i
= Menambah akumulatora = a + 1
d
= Mengurangi akumulatora = a - 1
s
= Kuadratkan akumulatora = a * a
o
= Keluarkan akumulatorprint(a)
Karena bahasa tidak termasuk pengulangan, membersihkan layar, atau penundaan, bahasa tidak memenuhi persyaratan. Output yang diharapkan:
Penjelasan kode:
Penafsir Deadfish dalam Python 3:
sumber
Noodel , 24 byte tidak bersaing
Tidak bersaing karena Noodel lahir setelah tantangan diciptakan :)
Cobalah:)
Bagaimana itu bekerja
Saat ini tidak ada versi Noodel yang mendukung sintaks yang digunakan dalam tantangan ini. Berikut adalah versi yang dapat digunakan:
24 byte
sumber