Terkadang saya mendapati diri saya menginginkan hot dog (bukan kita semua) dan saya membuatnya. Sekarang untuk membuat hot dog, ini sangat sederhana.
1) Masukkan hot dog ke dalam air mendidih
2) Tunggu waktu tertentu (dirinci di bawah)
3) Makan hot dog setelah waktu berlalu.
Anda mungkin memperhatikan bahwa saya katakan
waktu tertentu (dirinci di bawah)
dan jadi saya akan detail.
Banyak merek yang berbeda memiliki banyak rekomendasi yang berbeda untuk berapa lama kita harus memasak hot dog, tetapi saya telah menemukan cara terbaik untuk memasaknya tepat 4 menit dan 27 detik (jangan tanya). Saya telah mencoba banyak timer yang berbeda, tetapi telah menemukan bahwa program yang terus-menerus menghasilkan adalah cara terbaik untuk menarik perhatian saya.
TUGAS ANDA
Anda harus membuat program yang akan menampilkan pesan Not ready yet
untuk tepat 4 menit dan 27 detik. Setelah waktu ini berlalu, Anda harus mengeluarkan Eat your hot dog
hingga akhir waktu. Tolong jangan mengambil input.
CARA MENANG
Anda harus menulis kode terpendek dalam byte untuk menang karena ini adalah kode-golf
Not ready yet\nNot ready yet\n...
) atau bisakah kita hanya mengeluarkannya satu kali dan mengubah output begitu 4m 27 selesai?Jawaban:
Gores,
9378 byteKode:
Dihasilkan oleh https://scratchblocks.github.io/ , yang tampaknya menjadi standar untuk Scratch scoring.
Cukup jelas. Saat program dimulai, ucapkan "Belum siap" hingga timer (yang dihitung dalam detik) lebih besar dari 267. Kemudian mulailah loop tak terbatas di mana dikatakan
Eat your hot dog
.Ini adalah output yang berkelanjutan, karena
say
blok berjalan selamanya kecuali Andasay []
atausay
sesuatu yang lain.sumber
Bash + coreutils, 50
Penjelasan
Cukup jelas saya pikir, tetapi untuk berjaga-jaga:
yes
coreutil terus berulang output parameter yang dikirimkan ke sana pada baris perintahtimeout
coreutil mengambil parameter timeout numerik diikuti oleh perintah. Perintah dijalankan, kemudian dibunuh setelah batas waktu yang ditentukan.sumber
Operasi bahasa skrip Flashpoint , 67 byte
Simpan sebagai
"hotdog.sqs"
(atau apa pun) di folder misi dan panggil dengan[] exec "hotdog.sqs"
.Penjelasan:
Solusi ini harus sangat baik dengan menarik perhatian Anda, karena
hint
perintah memainkan efek suara kemelekatan setiap kali dipanggil, yang terdengar sangat menjengkelkan ketika suara simultan terpotong dalam lingkaran yang ketat.sumber
JavaScript ES6, 76 byte
Penjelasan
Ini mencetak sesuatu ke konsol setiap 517 milidetik. Pada awalnya, ia mencetak
'Not ready yet'
dan mengurangi penghitung. Setelah 517 iterasi (= 517 * 517 = 267289 ms
), ia mulai mencetak'Eat your hot dog'
.Uji
sumber
setTimeout
hanya menjalankan fungsi satu kali. Tantangannya adalah untuk terus menampilkan string, sehinggasetTimeout
tidak valid.(--_?
berfungsi sebagai ganti(--_>0?
(-2)_
akan dikurangi setiap kali sesuatu dicetak, jadi itu juga akan di bawah nol. Semua bilangan bulat negatif adalah benar, sehingga yang dicetak'Not ready yet'
juga (yang tidak kita inginkan).Powershell,
857159 byteMungkin ada cara yang jauh lebih baik, jadi kritik menyambut! Ini adalah usaha golf pertama saya :)
EDIT Turunkan keseluruhan 14 byte berkat AdmBorkBork! Dan tentu saja teknik yang perlu diingat!
EDIT 2 12 byte lagi hilang berkat Matt. Tidak menelepon menulis dua kali juga menghapus 2 spasi, sangat membantu!
sumber
1..276|%{}
bukanfor
loop dengan kenaikan. Lihat beberapa tips lain di halaman itu juga!write-output
cmdlet.Varian bahasa scripting GameMaker digunakan dalam mod Nuclear Throne Together, 68 byte
Penjelasan
0while
parses as0
,while
dan dengan demikian tidak masalah)var
(sama dengan JS).Varian GML yang digunakan di NTT memperkenalkan
wait
operator, yang mendorong "micro-thread" yang sedang menjalankan ke daftar untuk jumlah frame yang ditentukan, dilanjutkan setelah itu. Coroutines, pada dasarnya.Permainan ini memiliki clock 30fps, jadi 4m27s == 267s == 8010 frame.
Jika videogame + mod terpasang, Anda dapat menyimpannya karena beberapa
test.mod.gml
, dan lakukan/loadmod test
untuk menjalankannya, membanjiri obrolan dengan "laporan status":sumber
Python 2, 92 byte
Cobalah online!
sumber
while 1:print'ENaott yroeuard yh oyte td o g'[time()-t<267::2]
untuk 90 bytewhile 1:print['Eat your hot dog','Not ready yet'][time()-t<267]
juga akan menjadi 90 (sambil menjadi lebih jelas dan tidak mencetak ruang putih ekstra).TI-Basic, 75 byte
Penjelasan
sumber
Batch, 99 byte
Batch tidak memiliki aritmatika tanggal sehingga batas waktu 267 detik sederhana tidak diizinkan yang terbaik yang dapat saya lakukan adalah batas waktu 267 satu detik.
sumber
C # 144 byte
Program lengkap tidak digabungkan:
Sayangnya saya tidak bisa menggunakan
?:
-operator karena saya belum menemukan cara untuk menghentikan kenaikani
tanpaif
.sumber
if(i++<267e3)
menyimpan beberapa byte.i
setiap milidetik. Dan begituint.MaxValue
tercapai, program akan crash atau mulai mencetakNot ready yet
lagi.C #,
174172147 byteDisimpan 25 byte dengan "meminjam" beberapa ide dari jawaban C # raznagul dan menggabungkannya dengan jumlah trik nomor n pertama!
Disimpan 2 byte dengan menggunakan jumlah trik nomor n pertama karena kehilangan presisi 185 milidetik.
Program tidak digabungkan:
Penjelasan:
Karena total waktu untuk menunggu dikodekan pada 267 detik, orang dapat menganggap angka ini sebagai jumlah teleskopik dari n angka pertama,
n * (n + 1) / 2
, yang harus sama dengan 267000 milidetik.Ini setara dengan
n^2 + n - 534000 = 0
.Dengan memecahkan persamaan orde kedua ini
n1 = 730.2532073142067
,,n2 = -n1
. Tentu saja, hanya solusi positif yang diterima dan dapat diperkirakan 730 .Total waktu dapat dihitung sebagai
730 * (730 + 1) / 2 = 266815 milliseconds
. Kesalahannya adalah 185 milidetik , tidak terlihat oleh manusia. Kode sekarang akan membuat utas utama (dan hanya) tidur selama 1 milidetik, 2 milidetik dan seterusnya hingga 730, sehingga total periode tidur adalah ~ 267 detik.Memperbarui:
Logika program dapat disederhanakan lebih lanjut - pada dasarnya perlu untuk terus menampilkan pesan dan menunggu waktu yang ditentukan sampai beralih ke pesan kedua.
Pesan dapat diubah dengan menggunakan operator ternary untuk memeriksa berlalunya waktu yang ditentukan (~ 267 detik).
Aspek waktu dikontrol dengan menggunakan penghitung yang meningkat dan menjeda utas eksekusi.
Namun, karena variabel penghitung terus meningkat tanpa batas tanpa syarat untuk memeriksa nilainya, orang dapat mengharapkan bilangan bulat bilangan bulat di beberapa titik, ketika pesan kembali ke
Not ready yet
.Suatu kondisi dapat ditambahkan untuk mendeteksi dan mengurangi masalah dengan menetapkan nilai positif lebih besar dari 730 ketika terjadi overflow - seperti
i=i<1?731:i
di dalamfor
loop. Sayangnya, itu datang dengan biaya 11 byte tambahan:Kuncinya di sini adalah menggunakan nilai penghitung dalam milidetik untuk sangat menunda momen overflow.
Waktu hingga overflow dapat dihitung sesuai dengan
sum(1..n)
rumus, di mana n = nilai integer maksimum yang ditandatangani 32-bit dalam C # (dan kerangka .NET) atau 2 ^ 31 - 1 = 2147483647:2 147 483 647 * 2 147 483 648 / 2 = 2,305843008 x 10^18 milliseconds = 2,305843008 x 10^15 seconds = 26 687 997 779 days = ~73 067 755 years
Setelah 73 juta tahun , mungkin tidak masalah jika muncul kesalahan dalam sistem - hot dog, OP yang lapar, dan mungkin ras manusia itu sendiri sudah lama hilang.
Versi sebelumnya (172 byte):
Program tidak digabungkan:
Versi sebelumnya (174 byte):
Program tidak digabungkan:
Atau, program
Not ready yet
hanya dapat menampilkan sekali, tunggu sampai waktu yang ditentukan selesai dan kemudian outputEat your hot dog
dengan menimpa pesan sebelumnya sementara beberapa byte lebih pendek:C #, 145 byte
Program tidak digabungkan:
sumber
Ruby,
807167 BytesSunting: Berkat manatwork karena mencukur 13 byte penuh
sumber
267.times{…}
?{
. Itu akan menghasilkan 67 byte.05AB1E,
432928 byte (Terima kasih kepada Adnan)Tidak berfungsi online, karena habis waktu. Offline itu akan berfungsi.
267F
: Loop 267 kali…€–Žä‡«ª
: String pertama dengan kamusw,
: Tunggu sebentar dan cetak}[
: Akhiri jika loop dan mulai infinite loop“Eat€ž…ß‹·“
: String kedua dengan kamus,
: Cetaksumber
“NotŽä‡«“
dapat digantikan oleh…€–Žä‡«ª
Python, 115 byte
Pertama kali saya mencoba sesuatu seperti ini. Saya juga pemula jadi begini dalam Python 3 untuk 115 byte:
sumber
for
perulangan akan selesai lebihrange(267)
cepat dari 4 menit 27 detik dan solusi menjadi tidak valid. ☹JavaScript Blok Editor untuk micro: bit, 90 Bytes
Kode:
Anda bisa mencobanya di sini.
Terinspirasi oleh jawaban Scratch untuk menyelesaikan tugas dengan micro: bit saya. Satu-satunya Masalah adalah bahwa pause-blok dimulai setelah mengeluarkan string pertama jadi saya perlu mengurangi jeda dengan 13s.
Catatan: Editor Blok Microsoft lama untuk mikro: bit lebih pendek untuk membuat tetapi menghasilkan lebih banyak kode sehingga sebenarnya lebih lama.
sumber
Atas dasar bahwa OP ingin hotdog terus menerus, sampai akhir waktu - yang saya mengerti dari frasa:
Ini jawaban saya:
C ++,
187188224167 byteSpasi dihapus (167 byte):
formulir yang dapat dibaca (224 byte):
Jika, di sisi lain, OP menikmati hot dognya dalam jumlah sedang, maka ini adalah jawaban saya:
Spasi dihapus (158 byte):
formulir yang dapat dibaca (198 byte):
sumber
delay
?Excel VBA, 82 Bytes
VBE Anonim segera menjalankan fungsi jendela yang tidak mengambil input dan output apakah Anda harus makan hot dog Anda ke sel
[A1]
.sumber
Excel VBA
12294 byteTerima kasih Taylor Scott
sumber
CDate("00:04:28")
dapat dikondensasi#0:4:27#
, Anda dapat menggantiWhile ... Wend
loop Anda denganDo .. Loop
Loop dan Anda dapat menggantiif
klausa Anda denganiif
klausaJavascript, 83 Bytes
Alertz untuk semua orang!
sumber
267000
ke267e3
dan menyimpan byte.new Date
menggantikanDate.now()
, dan beberapa byte lainnya dengan menggunakanfor(d=new Date;;)alert...
PERL, 76 byte
sumber
PHP 88 byte
sumber
Eat your hot dog
sampai akhir zaman." Jadi, Anda harus mengulangi pesan kedua juga. Yang akan menambah panjangnya, tapi untungnya ada tempat untuk mempersingkat:for($t=267;$t--;sleep(1))echo"Not ready yet";for(;;)echo"Eat your hotdog";
. Ngomong-ngomong, menjalankan kode denganphp -r
diterima, jadi tidak perlu untuk tag PHP (terutama bukan yang penutup, yang dianggap kebiasaan buruk dalam kasus itu: "?>
Tag penutup HARUS dihilangkan dari file yang hanya mengandung PHP" - PSR-2 ).REXX, 82 byte
sumber
Java 7, 152 byte
Penjelasan:
sumber
PHP, 68 byte
output terus menerus;
←
adalah ASCII 10 = LF. Jalankan dengan-r
.output satu kali, 50 byte
dimana
←
ASCII 13 = CR. Simpan ke file atau gunakan perpipaan untuk menjalankan.sumber
RBX.Lua , 69 byte
RBX.Lua adalah bahasa yang digunakan di ROBLOX.com . Ini adalah versi modifikasi dari Lua 5.1 yang menampilkan fungsi 'Tunggu' bawaan. Kode di atas cukup jelas, di bawah ini adalah versi yang lebih mudah dibaca:
Kode ini menampilkan "Belum siap" terus menerus ke dalam STDOUT , selama 267 detik (4 menit 27 detik) sebelum mengeluarkan "Makan hot dog Anda".
sumber
C - 130 byte
Mungkin sedikit lebih pendek (128 byte), tapi saya pikir lebih baik untuk menimpa "Belum siap"
sumber
#include<unistd.h>
(itu akan memancarkan peringatan tetapi masih mengkompilasi). Melakukan seperti yang Anda lakukan (menimpa pesan sebelumnya) adalah hak Anda, tetapi karena tantangannya tidak benar-benar memintanya, saya sarankan untuk tidak melakukannya. Ini akan memungkinkan Anda untuk melakukanint main(){puts("Not ready yet");sleep(267);puts("Eat your hot dog");}
(tanpa menyertakan, mereka tidak diperlukan) - tetapi tidak ada kewajiban untuk melakukannya tentu saja.VBA, 126 Bytes
sumber
Python 2.7,
9088 bytesumber