Иногда мне хочется хот-дога (не мы все), и поэтому я его делаю. Теперь сделать хот-дог очень просто.
1) Положите хот-доги в кипящую воду
2) Подождите некоторое время (подробности ниже)
3) Ешьте хот-дог по истечении времени.
Вы могли заметить, что я сказал
определенное время (подробно ниже)
и так подробно опишу.
Многие разные бренды имеют много разных рекомендаций относительно того, как долго мы должны готовить хот-доги, но я нашел, что лучше всего готовить их ровно 4 минуты и 27 секунд (не спрашивайте). Я пробовал много разных таймеров, но обнаружил, что программа, которая непрерывно выводит, является лучшим способом привлечь мое внимание.
ТВОЕ ЗАДАНИЕ
Вы должны составить программу, которая будет выводить сообщение Not ready yet
ровно за 4 минуты и 27 секунд. По истечении этого времени вы должны выводить данные Eat your hot dog
до конца времени. Пожалуйста, не принимайте никакой информации.
КАК ПОБЕДИТЬ
Вы должны написать кратчайший код в байтах, чтобы выиграть, потому что это код-гольф
Not ready yet\nNot ready yet\n...
), или мы можем просто вывести его один раз и изменить выход после того, как 4м 27 с закончится?Ответы:
Скретч,
9378 байтКод:
Сгенерировано https://scratchblocks.github.io/ , который, кажется, является стандартом для Scratch скоринга.
Довольно понятно, Когда программа запускается, говорите «Еще не готов», пока таймер (который считается в секундах) больше 267. Затем запускается бесконечный цикл, где он говорит
Eat your hot dog
.Это является непрерывным выводом, потому что
say
блок не работает вечно , если васsay []
илиsay
что - то другое.источник
Баш + кореутилс, 50
объяснение
Я думаю, что это довольно очевидно, но на всякий случай:
yes
Coreutil непрерывно многократно выводит любые переданные ей параметры в командной строкеtimeout
Coreutil принимает числовой параметр тайм - аута , затем по команде. Команда запускается, а затем уничтожается по истечении указанного времени ожидания.источник
Язык сценариев работы Flashpoint , 67 байт
Сохранить как
"hotdog.sqs"
(или что-то еще) в папке миссии и позвонить с[] exec "hotdog.sqs"
.Объяснение:
Это решение должно быть особенно полезным для привлечения вашего внимания, поскольку
hint
команда воспроизводит цепляющий звуковой эффект при каждом вызове, что звучит очень раздражающе, когда одновременные звуки обрезаются в тесной петле.источник
JavaScript ES6, 76 байт
объяснение
Это выводит что-то на консоль каждые 517 миллисекунд. Сначала он печатает
'Not ready yet'
и уменьшает счетчик. После 517 итераций (= 517 * 517 = 267289 ms
) начинается печать'Eat your hot dog'
.Тестовое задание
источник
setTimeout
выполняет функцию только один раз. Задача состоит в том, чтобы непрерывно выводить строку, поэтомуsetTimeout
она будет недействительной.(--_?
works instead of(--_>0?
(-2)_
will be decremented every time something is printed, so it will also go below zero. All negative integers are truthy, so those would print'Not ready yet'
as well (which is not what we want).Powershell,
857159 bytesThere's probably a much better way, so criticism welcome! This is my first golf attempt :)
EDIT Down a whole 14 bytes thanks to AdmBorkBork! And definitely a technique to remember!
EDIT 2 Another 12 bytes gone thanks to Matt. Not calling write twice also removed 2 spaces, very helpful!
источник
1..276|%{}
instead of afor
loop with an increment. Check out some other tips on that page, too!write-output
cmdlet.GameMaker' scripting language variant used in Nuclear Throne Together mod, 68 bytes
Explanation
0while
parses as0
,while
and thus is ok)var
(same as with JS).GML variant used in NTT introduces a
wait
operator, which pushes the executing "micro-thread" to a list for the specified number of frames, resuming afterwards. Coroutines, basically.The game is clocked at 30fps, so 4m27s == 267s == 8010 frames.
If you have the videogame+mod installed, you can save that as some
test.mod.gml
, and do/loadmod test
to execute it, flooding the chat with "status reports":источник
Python 2, 92 bytes
Try it online!
источник
while 1:print'ENaott yroeuard yh oyte td o g'[time()-t<267::2]
for 90 byteswhile 1:print['Eat your hot dog','Not ready yet'][time()-t<267]
would also be 90 (while being clearer and not printing the extra white space).TI-Basic, 75 bytes
Explanation
источник
Batch, 99 bytes
Batch has no date arithmetic so as a simple 267 second timeout isn't permitted the best I can do is 267 one-second timeouts.
источник
C# 144 bytes
Ungolfed full program:
Unfortunately I could not use the
?:
-operator as I have not found a way to stop incrementingi
without theif
.источник
if(i++<267e3)
to save a few bytes.i
every millisecond. And onceint.MaxValue
is reached the program would either crash or start printingNot ready yet
again.C#,
174172147 bytesSaved 25 bytes by "borrowing" some ideas from raznagul's C# answer and merging them with the sum of first n numbers trick!
Saved 2 bytes by using the sum of first n numbers trick for a loss of precision of 185 milliseconds.
Ungolfed program:
Explanation:
Since the total time to wait is hardcoded at 267 seconds, one can consider this number as a telescopic sum of the first n natural numbers,
n * (n + 1) / 2
, which must equal 267000 milliseconds.This is equivalent to
n^2 + n - 534000 = 0
.By solving this second order equation,
n1 = 730.2532073142067
,n2 = -n1
. Of course, only the positive solution is accepted and can be approximated as 730.The total time can be calculated as
730 * (730 + 1) / 2 = 266815 milliseconds
. The imprecision is 185 milliseconds, imperceptible to humans. The code will now make the main (and only) thread sleeps for 1 millisecond, 2 milliseconds and so on up to 730, so the total sleep period is ~267 seconds.Update:
The program's logic can be simplified further - basically it needs to continuously display a message and wait a specified time until switching to the second message.
The message can be change by using a ternary operator to check the passing of the specified time (~267 seconds).
The timing aspect is controlled by using an increasing counter and pausing the execution thread.
However, since the counter variable continues increasing indefinitely without any conditions to check its value, one can expect an integer overflow at some point, when the message reverts to
Not ready yet
.A condition can be added to detect and mitigate the issue by assigning a positive value greater than 730 when the overflow occurs - like
i=i<1?731:i
inside thefor
loop. Sadly, it comes at the cost of 11 additional bytes:Ключевым моментом здесь является использование значения счетчика в миллисекундах, чтобы значительно задержать момент переполнения.
Время до переполнения можно рассчитать по
sum(1..n)
формуле, где n = максимальное 32-разрядное целое число со знаком в C # (и .NET Framework) или 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
Через 73 миллиона лет может не иметь значения, если в системе появится сбой - хот-дог, голодный ОП и, возможно, сама человеческая раса давно исчезли.
Предыдущая версия (172 байта):
Нежелтая программа:
Предыдущая версия (174 байта):
Нежелтая программа:
Кроме того, программа может отображать
Not ready yet
только один раз, подождать, пока не истечет указанное время, и затем вывестиEat your hot dog
ее, переписав предыдущее сообщение, в то время как оно на несколько байт короче:C #, 145 байт
Нежелтая программа:
источник
Ruby,
807167 BytesEdit: Thanks to manatwork for shaving off 13 whole bytes
источник
267.times{…}
?{
. That would result 67 bytes.05AB1E,
432928 bytes (Thanks to Adnan)Does not work online, since it times out. Offline it will work.
267F
: Loop 267 times…€–Žä‡«ª
: First string with dictionaryw,
: Wait one second and print}[
: End if loop and start infinite loop“Eat€ž…ß‹·“
: Second string with dictionary,
: Printисточник
“NotŽä‡«“
can be replaced by…€–Žä‡«ª
Python, 115 bytes
My first time trying something like this. I am also a beginner so here it goes in Python 3 for 115 bytes:
источник
for
will finish looping overrange(267)
much faster than 4 minutes 27 seconds and the solution becomes invalid. ☹JavaScript Blocks Editor for micro:bit, 90 Bytes
The code:
You can try it here.
Got inspired by the Scratch answer to solve the task with my micro:bit. The only Problem is that the pause-block starts after outputting the first string so i needed to reduce the pause by 13s.
Note: The old Microsoft Block Editor for micro:bit is shorter to create but produces more code so is in fact longer.
источник
On the basis that the OP wants hotdogs continuously, until the end of time - which I understand from the phrase:
This is my answer:
C++,
187188224167 bytesWhitespace removed (167 bytes):
readable form (224 bytes):
If, on the other hand, OP enjoys his hot dogs in moderation, then this is my answer:
Whitespace removed (158 bytes):
readable form (198 bytes):
источник
delay
?Excel VBA, 82 Bytes
Anonymous VBE immediates window function that takes no input and outputs whether or not you should eat your hot dog to cell
[A1]
.источник
Excel VBA
12294 bytesThanks Taylor Scott
источник
CDate("00:04:28")
can be condensed to#0:4:27#
, you can replace yourWhile ... Wend
loop with aDo .. Loop
Loop and you can replace yourif
clause with aniif
clauseJavascript, 83 Bytes
Alertz for everyone!
источник
267000
to267e3
and save a byte.new Date
in place ofDate.now()
, and another few by usingfor(d=new Date;;)alert...
PERL, 76 bytes
источник
PHP 88 bytes
источник
Eat your hot dog
until the end of time.” So you have to repeat the 2nd message too. That will add to its length, but fortunately there is place to shorten it:for($t=267;$t--;sleep(1))echo"Not ready yet";for(;;)echo"Eat your hotdog";
. By the way, running code withphp -r
is accepted, so no need for the PHP tags (especially not the closing one, which is considered bad habit in that case: “The closing?>
tag MUST be omitted from files containing only PHP” – PSR-2).REXX, 82 bytes
источник
Java 7, 152 bytes
Explanation:
источник
PHP, 68 bytes
continuous output;
←
is ASCII 10 = LF. Run with-r
.one-time output, 50 bytes
where
←
is ASCII 13 = CR. Save to file or use piping to run.источник
RBX.Lua, 69 bytes
RBX.Lua is the language used on ROBLOX.com. It is a modified version of Lua 5.1 that features a built-in 'Wait' function. The above code is pretty self-explanatory, below is a more readable version:
The code outputs "Not ready yet" continuously into STDOUT, for 267 seconds (4 minutes 27 seconds) before outputting "Eat your hot dog".
источник
C - 130 bytes
It could be slightly shorter (128bytes), but I thought it neater to overwrite "Not ready yet"
источник
#include<unistd.h>
(it will emit a warning but still compile). Doing as you do (overwriting the previous message) is your right, but since the challenge doesn't really ask for it, I'd suggest not to do it. It would allow you to doint main(){puts("Not ready yet");sleep(267);puts("Eat your hot dog");}
(with no includes, they aren't needed) - but no obligation to do it of course.VBA,126 Bytes
источник
Python 2.7,
9088 bytesисточник