Banyak perangkat elektronik, khususnya yang lama, akan berkedip 12:00
ketika waktu belum ditentukan. Tujuan dari tantangan ini adalah untuk menciptakan kembali ini.
Secara khusus, tugasnya adalah untuk menampilkan 12:00
dan sebagai --:--
alternatif dalam infinite loop .
The Periode harus 1 detik, dibagi secara merata dalam dua periode dari 0,5 detik. Di sini "1 detik" dan "merata" dapat diartikan secara longgar. Misalnya, dapat diterima jika kode berhenti selama 0,5 detik antara menampilkan string, bahkan jika periode yang dihasilkan kemudian akan sedikit lebih tinggi dari 1 detik. Jeda awal sebelum menampilkan string pertama dapat diterima.
Setiap string baru dapat ditampilkan dengan mengganti string sebelumnya atau di baris baru . Trailing whitespace diperbolehkan, kecuali bahwa jika setiap string baru pada baris yang berbeda tidak boleh ada garis kosong antara string berturut-turut.
Kode terpendek dalam byte menang.
Jawaban:
Jelly , 20 byte
Bagaimana itu bekerja
sumber
HTML / CSS,
131108106101 +1817 =149126125123118 byteSunting: Disimpan 23 byte berkat @insertusernamehere. Disimpan 1 byte dengan beralih dari
<pre>
ke<tt>
. Disimpan 2 byte berkat @darrylyeo. Disimpan 5 byte berkat @DBS.sumber
a{position:absolute}
tapi benar-benar lupa tentangpre
...<tt>
.}}
sepenuhnya.margin-left
untukmargin
karena Anda bekerja dari atas kiri pulamargin:-5ch;
harus memiliki efek yang sama.Shell dan
pv
, 26 byteIni menggunakan
yes
alat standar danpv
elemen pipa Shell untuk mengukur data yang lewatsumber
-qlL2
untuk membuat 2 baris per detik, bukan-qL12
: 12 karakter per detik. Panjang skripnya samaPython2,
807573696766 byteSaya perhatikan bahwa magic string saya mendapatkan sedikit lebih lama daripada mengambil string dari array.Nevermind, menemukan jawabannya.Penjelasan :
Saya mengatur penghitung n ke 0, yang akan beralih antara 0 dan 1.
Saya berulang tanpa henti dengan loop
while 1
.Saya membuat string
1-2-::0-0-
, yang berisi string12:00
dan--:--
saling bertautan.Mulai dari indeks 0 dengan langkah 2, kita dapatkan:
12:00
Mulai dari indeks 1 dengan langkah 2, kita dapatkan:
--:--
Saya menggunakan n untuk membuat urutan berulang 0 , 1 , 0 , 1 , 0 ... yang akan menjadi indeks awal dari string.
n^=1
, di setiap loop, kita mendapatkan urutan itu.^
menjadi operator XOR.n^=1
hasil dalam 1n^=1
hasil dalam 0.5
->0.5
) detik.@FlipTack menyimpan 4 byte! -> Letakkan loop dalam satu baris.
@Rod menyelamatkan 2 byte! ->
n+=1
untukn^=1
, dengan demikiann%2
untukn
.@ xnor menyimpan satu byte! ->
while 1
->while[time.sleep(.5)]
.sumber
n+=1
dengann^=1
, dan kemudian menggunakan[n::2]
, menyimpan 2 byte dan menghindari angka besar c:print"1-2-::0-0-"[n::2]
untukprint"\b"*6+"1-2-::0-0-"[n::2],
itu akan menambah beberapa byte tetapi akan berkedip di tempat\r
alih-alih\b\b\b...
pindah ke awal baris. Tapi bagaimanapun, ini hanya akan menambah byte ke solusi saat ini.while[time.sleep(.5)]:
.Oktaf,
63626155 byteDisimpan dua byte berkat Tom Carpenter! Menggunakan string tunggal alih-alih dua string dalam array sel lebih pendek.
Penjelasan:
Beberapa byte disimpan karena Oktaf tidak memerlukan titik dua atau titik koma antara
flip(c)
dandisp()
, dan antarapause(.5)
danend
.sumber
flip
sebagai ganti penghitung!JavaScript, 59 byte
Penjelasan
setInterval('...',500)
menetapkan interval untuk mengeksekusi kode dalam string setiap 500 milidetik, atau 1/2 detik.y=1
setel variabely
,, ke 1 pada awalnya. Dengan begitu, hal pertama yang dicetak adalah12:00
karenay
digunakan untuk mengakses array.console.log(...)
log apa saja ke konsol, di ini12:00
atau--:--
.["12:00","--:--"][y^=1]
membuat array dengan string yang mengandung kedua negara. Kemudian,y
digunakan untuk mengakses salah satu elemen. Akhirnya,,^=
atau operator gabungan XOR melakukannyay = y ^ 1
. Ini hanya membalikkan bit karena1 ^ 1
0, dan0 ^ 1
1, mirip dengan yang dilakukan @TuukkaX . Dengan cara ini, string yang dicatat berganti-ganti antara dua elemen dalam array dan dengan demikian menciptakan efek berkedip.sumber
y=1;setInterval('console.log(y?"12:00":"--:--");y=!y',500)
You can save some bytes with setInterval(...,i=500) :-)
. Kami pada dasarnya memiliki jawaban yang sama dan itu bekerja untuk Anda juga.V ,
3130272524 byteDisimpan 5 byte berkat @ nmjcman101 dengan menukar urutan
12:00
dan--:--
sehinggak
dapat dihapus dengan menghapusò
sehingga dapat ditambahkan secara implisit di akhirDisimpan 1 byte berkat @DJMcMayhem dengan meletakkan keduanya
12:00
dan--:--
dalam satu barisSolusi lama:
<ESC>
aku s0x1b
Hexdump:
Penjelasan
Gif (kedaluwarsa)
Catatan: Sorotan saya aktifkan
sumber
ò
diberikan secara implisit, sehingga Anda dapat menghapusnya.ò
. Hanya berjalan sekalik
. Maka alih-alihpkdd
Anda hanya dapat menggunakanVp
, sepertip
dalam mode pilih visual secara efektif swap pilihan dengan register default.ò
, tetapi jika itu berfungsi sekarang, saya pikir Anda harus dapat mengubahnyaòVp:sl500m
dan biarkan V menambahkan^Mò
untuk 2 byte.bash,
585645 bytedisimpan 3 byte dengan menekan--
setelahset
sebagai argumen 1 adalah angka.Disimpan 16 byte dengan menggunakan sintaks @DigitalTrauma :
Kemudian kehilangan 5 byte karena komentar zeppelin .
Ini tidak dapat diuji pada baris perintah. Saat kami terlibat
$0
, ini harus ditulis ke dalam skrip untuk dijalankan.Mengalihkan
Dengan sedikit persiapan, ini bisa menjadi bagus ( 412 byte ):
Atau bahkan dua baris yang sama tetapi dengan:
sumber
s(){ echo $1;sleep .5;};for((;;)){ s 12:00;s --:--;}
printf '%%\041\n/Helvetica findfont\n24 scalefont\nsetfont\nnewpath\n%s %s moveto\n(%s) show\nshowpage\n' -2.456 0.550003 12:00 | gs -sDEVICE=pnmraw -r600 -g470x146 -sOutputFile=- -q - | pnmscale -width 160 | ppmtopgm | pgmtopbm | pbmtoascii -2x4
;-)f()(echo $1;sleep .5);f 12:00;f --:--;$0
Perl, 49 byte
Perl
sleep
tidak dapat tidur untuk durasi di bawah 1 detik, karenanya penggunaanselect undef, undef, undef, .5
(golf dengan menggantiundef
dengan$,
) untuk tidur 0,5 detik.Hal menarik lainnya:
$|
hanya bisa menampung0
atau1
. Jadi$|--
cukup matikan nilainya, dari0
menjadi1
.Dan akhirnya,
{... ;redo}
bertindak seperti loop tak terbatas.sumber
*> <> ,
4342 byteCoba di sini!
Saya merasa saya harus bisa membuat ini lebih pendek, saya punya beberapa ide untuk mencoba ... Pada dasarnya ini membuat setumpuk
:1200----
. Ini mengisolasi:
dan membalik tumpukan, memasukkan:
di tengah salah satu----
atau1200
(tergantung mana yang ada di ujung tumpukan).Saya juga harus mencatat bahwa satu-satunya *> <> instruksi yang digunakan adalah
S
(sleep), jika tidak, ini adalah program yang tepat> <>.Pembaruan: Disimpan 1 byte dengan menggeser
:
ke kanan alih-alih melindunginya dengan register.Penjelasan
Inisialisasi
Di sini kita membangun tumpukan yang akan kita gunakan untuk umur program.
Waktu output
Ini adalah bagian di mana waktu sebenarnya dikeluarkan. Pertama 5 didorong ke tumpukan sehingga loop di bawah ini tahu untuk menjalankan 5 kali.
Pulihkan dan tukar
Di sini kita memulihkan
:
dari posisi yang dihasilkan setelah output, dan kita berakhir dengan tumpukan terbalik. Ini sebenarnya keluar menjadi "waktu keluaran" dengan baik, menyebabkan loop tak terbatas.Solusi 45 byte
Coba di sini!
Yang ini pada dasarnya juga merupakan program> <>.
Saya benar-benar berpikir itu akan dapat menghemat beberapa byte dengan pendekatan ini. Ini cukup sederhana keluaran
12:00
, kemudian--:--
. Saya menyimpan byte dengan menggunakan kembali output rutino/!?l
(saya bahkan menggunakan kembali mirror itu sebagai entri dan keluar). Saya menggunakan banyak tumpukan untuk menyimpan status (memiliki keluaran12
atau--
), dan memilih negara mana yang harus saya keluaranv>]?v
.Penjelasan segera hadir! (1/2)
sumber
HTML / CSS (hanya Chrome), 80 + 4 = 84 byte
Sunting : Atribut "content" tidak dapat digerakkan oleh spesifikasi CSS , tetapi ada di browser desktop Chrome.
sumber
Noodel , 16 byte tidak bersaing
Noodel masih sangat banyak pekerjaan yang sedang berjalan. Hanya mencoba membuat kaki saya basah dengan beberapa tantangan.
Cobalah:)
Bagaimana itu bekerja
Berikut ini cuplikan kode :)
sumber
QBIC ,
3733 byteQBasic sayangnya hanya bisa tidur selama satu detik penuh. Saya akan melihat tentang merancang metode untuk memungkinkan lebih banyak fleksibilitas segera. Saya sudah input 1
01
untuk mensimulasikan.5
.Penjelasan:
Dalam versi lama QBIC,
$
dan(spasi) karakter yang dipesan. Memanggil fungsi QBasic yang membutuhkan spasi (seperti
sleep x
) atau$
(left$(..)
) membutuhkan kode literal:Kode dalam blok kode literal diteruskan langsung ke QBasic tanpa diuraikan oleh QBIC. Dengan membongkar fungsi dari simbol-simbol tersebut (
$
menjadi'
, dan baris baru sekarang┘
(alt-217) alih-alih, simbol tidak lagi dilihat oleh QBIC sebagai karakter khusus dan hanya diteruskan. Hal yang sama berlaku juga untuk alfabet huruf kecil: digunakan untuk mewakili variabel numerik dalam QBIC dan QBasic dan tidak berubah. Menggunakan fungsionalitas QBasic yang tidak diimplementasikan dalam QBIC (seperti
SLEEP
) ada hanya masalah tidak menggunakan karakter yang dipesan QBIC. Ini menjadi lebih mudah dengan perubahan terbaru pada simbol perintah.sumber
JavaScript,
777672 byteTerima kasih kepada Kritixi Lithos untuk 1 byte dan L. Serne untuk 4 byte!
sumber
1000
dapat disingkat menjadi1e3
setInterval
dansetTimeout
menerima string dengan kode sebagai argumen pertama, sehingga Anda dapat menyimpan 4B lainnya:setInterval('l=console.log,l("12:00"),setTimeout("l(
-:)",500)',1e3)
`
s berarti ini sekarang ES6, sedangkan jawaban sebelumnya hanya diperlukan ES5.Python 2,
88857371 byteCoba di sini!
Dengan meminjam gagasan Stewie Griffin untuk membalik daftar, program itu dimungkinkan. Versi tidak dikoleksi dengan penjelasan:
Terima kasih @FlipTack untuk menghemat 14 byte!
sumber
PHP,
51 50471 byte disimpan karena manatwork dan 3 lainnya disimpan oleh insertusername di sini. Terima kasih!
sumber
usleep(5e5)
panggilan kefor
parameter ke-3,,
pemisah menjadi tidak perlu, menghemat 1 karakter.while(1)
Awalnya saya punya .echo
dan$i
dan ganti\n
dengan baris baru yang sebenarnya.Pyth, 23 byte
Dalam pseudocode:
Menggunakan variabel yang diinisialisasi
Z
sebagai flip-flop, dan membalikkan keadaannya setiap kaliif
mencoba memeriksa kondisi.sumber
ruby,
4742 byteBelum ada jawaban ruby, jadi ini adalah percobaan pertama saya:
sumber
GNU sed, 39 byte
EDIT:
Golf
Dijelaskan
Cobalah secara Online!
sumber
dc (bash), 37 byte
Ini bekerja dengan mendorong dua senar "12:00" dan "-: -" pada tumpukan dan kemudian berulang kali menukar nilainya, mencetak item di bagian atas tumpukan, dan tidur setengah detik.
Untuk menjalankan ini, Anda dapat menyimpannya dalam file dan kemudian ketik
atau Anda dapat menjalankannya langsung dari baris perintah bash dengan mengetik
sumber
Perl 6 ,
48 4134 bytesumber
for
loop dapat membuatnya sedikit lebih pendek:for |<12:00 --:-->xx* {sleep .5;.say}
say
mengembalikan 1:sleep .say/2 for |<12:00 --:-->xx*
Jelly, 22 byte
Tidak berfungsi di TIO. Mendapatkan Jelly untuk berjalan di Android dengan QPython3 juga merupakan pengalaman yang menyenangkan.
Penjelasan
sumber
Mathematica, 38 byte
Penjelasan
Menghasilkan variabel jam yang terus-menerus berputar dari 0 hingga 1 setiap detik.
Jika variabel jam lebih besar dari 0,5, output "12:00." Jika tidak, keluaran "-: -".
Jadikan program dinamis (terus-menerus memperbarui)
sumber
Javascript,
57552 byte disimpan berkat produk ETH
sumber
setInterval(...,i=500)
:-)Catatan tambahan
225214Hanya untuk bersenang-senang! Jangan kirim ini ke printer sungguhan !!
Cobalah:
atau
kemudian
Tapi jangan coba membukanya dengan pemirsa yang lebih canggih dan peduli dengan thumbnailer desktop!
sumber
gs -c '...'
perintah meminta halaman putih, Anda mungkin harus menumbuhkan jendela tampilan atau menggunakan resolusi yang lebih kecil:gs -r45 -c '...'
atau ukuran kertas yang lebih kecilgs -r600 -g360x200 -c '...'
Javascript (di browser),
17416015912211211110910766 (91) byteSaya telah mengambilnya
pre
karena menggunakan font monotipe bukan bagian dari persyaratan, jadi jumlah baru saya adalah 66 . Beberapa karakter ditambahkan untuk menggunakan font monospaced tetapi karena ini tidak diperlukan, saya tidak akan menghitung 25 ini karakter lagi.Berkat produk ETH untuk menghemat 14 byte,
untuk Kritixi Lithos untuk menghemat 1 byte,
untuk manatwork untuk menghemat
13 byte,kepada Christoph karena menyimpan dua byte lagi dan
kepada saya sendiri untuk menghemat 37 byte dengan menggunakan
[..][b^=1]
alih-alihsetTimeout
... dan 10 lainnya dengan menggantifunction(){..}
dengan tanda kutip ganda ...... lebih buruk:
Dari 66 ke sesuatu yang lebih ...
... tapi untuk bersenang-senang, dalam semangat tampilan yang berkedip:
sumber
1000
dapat menjadi1e3
window.
;window.setTimeout
sama dengansetTimeout
.tt
lebih pendek daripre
dan juga menyiratkan penggunaan font monospace. (Hanya itu elemen inline, bukan blok, tapi ini seharusnya tidak membuat perbedaan di sini.)b=document.body.append(a=document.createElement('tt'))
d=document;d.body.append(a=d.createElement('tt'));setInterval("a.innerHTML=++b%2?'12:00':'--:--'",b=500)
menghemat 5 bytesetInterval("document.body.innerHTML=++b%2?'12:00':'--:--'",b=500)
hanya tertinggal monospace mewah tetapi hanya 66 byte.QuickBASIC , 167 gigitan (enak)
Saya tidak akan pernah menang. QB tidak memiliki lantai (), dan juga tidak memiliki fungsi untuk tidur selama x milidetik. Oleh karena itu, ini bekerja dengan meraih bagian titik mengambang TIMER (mengembalikan detik berlalu sejak tengah malam, ditambah sebagian kecil dari detik saat ini dinyatakan sebagai desimal dua digit). Kami kemudian menambahkan loop-sekitar "50 unit" untuk menentukan kapan fase harus beralih dari "-: -" ke "12:00", dan menggunakan desimal TIMER asli untuk beralih dari "12:00" ke "-: -".
Akhirnya, bahkan menjalankan ini sesuai dengan QB4.5, di DOSBox pada mesin yang agak kuat akan melewatkan ketukan. Itu karena QB benar-benar tidak cukup cepat untuk melakukan DO-LOOP dan evaluasi di dalam MS yang sedang kami lakukan perbandingan. Butuh kotak dari MASA DEPAN!
Bagaimanapun, saya sekarang terlihat 100, dan saya membuat setiap mahasiswa Universitas Amerika senang karena mereka mungkin punya jawaban untuk kelas Comp Sci mereka - karena mereka masih mengajar ini ...
sumber
b% = b% - 99
untukb%=b%-99
?Clojure,
7962 byteV2
-17 byte dengan mengubah dari pengindeksan mengerikan ke pengulangan daftar tak terbatas.
Membuat daftar tak terhingga
"12:00"
dan"--:--"
mengulangi lagi dan lagi, lalu gunakandoseq
untuk terus-menerus menarik pesan berikutnya, dan mencetaknya.V1
Saya tidak bisa memikirkan cara yang baik untuk memadatkan konstanta "12:00" dan "-: -", jadi saya harus mengkodekannya dengan keras.
Tidak Disatukan:
sumber
Pushy , 22 byte (tidak bersaing)
Jawaban ini memanfaatkan kedua tumpukan, dengan membalik di antara keduanya, mencetak karakter secara bergantian:
The
oW
Perintah merupakan bagian dari satu set perintah eksperimental yang mengundurkan tantangan, membuat jawaban ini non-bersaing.sumber
Windows PowerShell,
4655 byteKode Asli:
sumber