Às vezes me pego querendo um cachorro-quente (não todos nós) e então faço um. Agora, para fazer um cachorro-quente, é muito simples.
1) Coloque os cachorros-quentes em água fervente
2) Aguarde um certo período de tempo (detalhado abaixo)
3) Coma o cachorro-quente após o tempo decorrido.
Você deve ter notado que eu disse
certo tempo (detalhado abaixo)
e por isso vou detalhar.
Muitas marcas diferentes têm recomendações diferentes por quanto tempo devemos cozinhar os cachorros-quentes, mas achei melhor cozinhá-los por exatamente 4 minutos e 27 segundos (não pergunte). Eu tentei muitos timers diferentes, mas descobri que um programa que gera continuamente é a melhor maneira de atrair minha atenção.
SUA TAREFA
Você precisa criar um programa que produza a mensagem Not ready yet
por exatamente 4 minutos e 27 segundos. Após esse período, elas devem ser impressas Eat your hot dog
até o final dos tempos. Por favor, não aceite nenhuma entrada.
COMO GANHAR
Você deve escrever o código mais curto em bytes para ganhar, porque este é um código-golfe
Not ready yet\nNot ready yet\n...
) ou podemos apenas produzi-lo uma vez e alterar a saída quando os 4m 27s terminarem?Respostas:
Zero,
9378 bytesCódigo:
Gerado por https://scratchblocks.github.io/ , que parece ser o padrão para a pontuação do Scratch.
Bastante auto-explicativo. Quando o programa iniciar, diga "Ainda não está pronto" até que o timer (que é contado em segundos) seja maior que 267. Em seguida, inicia um loop infinito onde está indicado
Eat your hot dog
.Ele é saída contínua, porque o
say
bloco é executado para sempre a menos que vocêsay []
ousay
qualquer outra coisa.fonte
Bash + coreutils, 50
Explicação
Bastante auto-explicativo, eu acho, mas apenas no caso:
yes
coreutil gera repetidamente continuamente todos os parâmetros passados para ele na linha de comandotimeout
coreutil usa um parâmetro de tempo limite numérico seguido por um comando. O comando é executado e, em seguida, eliminado após o tempo limite especificado.fonte
Linguagem de script da operação Flashpoint , 67 bytes
Salve como
"hotdog.sqs"
(ou o que for) na pasta da missão e ligue com[] exec "hotdog.sqs"
.Explicação:
Essa solução deve ser especialmente boa para atrair sua atenção, pois o
hint
comando reproduz um efeito sonoro persistente toda vez que é chamado, o que soa muito irritante quando os sons simultâneos são cortados em um loop apertado.fonte
JavaScript ES6, 76 bytes
Explicação
Isso imprime algo no console a cada 517 milissegundos. Inicialmente, imprime
'Not ready yet'
e diminui o contador. Após 517 iterações (= 517 * 517 = 267289 ms
), inicia a impressão'Eat your hot dog'
.Teste
fonte
setTimeout
somente executa a função uma vez. O desafio é gerar continuamente uma string, o quesetTimeout
seria inválido.(--_?
funciona em vez de(--_>0?
(-2)_
será diminuído toda vez que algo for impresso, também ficará abaixo de zero. Todos os números inteiros negativos são verdadeiros, portanto esses também seriam impressos'Not ready yet'
(o que não é o que queremos).Powershell,
857159 bytesProvavelmente existe uma maneira muito melhor, então as críticas são bem-vindas! Esta é a minha primeira tentativa de golfe :)
EDITAR 14 bytes inteiros graças ao AdmBorkBork! E definitivamente uma técnica para lembrar!
EDIT 2 Mais 12 bytes desaparecidos graças a Matt. Não chamar escrever duas vezes também removeu 2 espaços, muito útil!
fonte
1..276|%{}
vez de umfor
loop com um incremento. Confira também outras dicas nessa página!write-output
cmdlet.Variante da linguagem de script do GameMaker usada no mod Nuclear Throne Together, 68 bytes
Explicação
0while
analisa como0
,while
e portanto, está ok)var
(o mesmo que com JS).A variante GML usada no NTT introduz uma
wait
operador, que envia o "micro-thread" em execução a uma lista para o número especificado de quadros, retomando posteriormente. Corotinas, basicamente.O jogo tem clock de 30fps, então 4m27s == 267s == 8010 quadros.
Se você tem o videogame + mod instalado, você pode salvá-lo como alguns
test.mod.gml
e/loadmod test
executá-lo, inundando o bate-papo com "relatórios de status":fonte
Python 2, 92 bytes
Experimente online!
fonte
while 1:print'ENaott yroeuard yh oyte td o g'[time()-t<267::2]
para 90 byteswhile 1:print['Eat your hot dog','Not ready yet'][time()-t<267]
também teria 90 (sendo mais claro e sem imprimir o espaço em branco extra).TI-Basic, 75 bytes
Explicação
fonte
Lote, 99 bytes
O lote não tem data aritmética, portanto, um simples tempo limite de 267 segundos não é permitido, o melhor que posso fazer é 267 tempos limite de um segundo.
fonte
Bytes em C # 144
Programa completo não destruído:
Infelizmente, não pude usar o
?:
-operator porque não encontrei uma maneira de parar de incrementari
sem oif
.fonte
if(i++<267e3)
salvar alguns bytes.i
cada milissegundo. E uma vezint.MaxValue
alcançado, o programa falhará ou começará a imprimirNot ready yet
novamente.C #,
174172147 bytesEconomizou 25 bytes "emprestando" algumas idéias da resposta C # do raznagul e mesclando-as com a soma do primeiro truque dos números n!
Economizou 2 bytes usando o truque da soma dos primeiros n números para uma perda de precisão de 185 milissegundos.
Programa não destruído:
Explicação:
Como o tempo total de espera é codificado em 267 segundos, pode-se considerar esse número como uma soma telescópica dos primeiros n números naturais,
n * (n + 1) / 2
, que devem ser iguais a 267000 milissegundos.Isso é equivalente a
n^2 + n - 534000 = 0
.Ao resolver esta equação de segunda ordem,
n1 = 730.2532073142067
,n2 = -n1
. Obviamente, apenas a solução positiva é aceita e pode ser aproximada como 730 .O tempo total pode ser calculado como
730 * (730 + 1) / 2 = 266815 milliseconds
. A imprecisão é de 185 milissegundos , imperceptível aos seres humanos. O código agora fará com que o encadeamento principal (e somente) seja suspenso por 1 milissegundo, 2 milissegundos e assim por diante até 730, portanto o período total de suspensão é de ~ 267 segundos.Atualizar:
A lógica do programa pode ser simplificada ainda mais - basicamente, ele precisa exibir continuamente uma mensagem e aguardar um tempo especificado até mudar para a segunda mensagem.
A mensagem pode ser alterada usando um operador ternário para verificar a passagem do tempo especificado (~ 267 segundos).
O aspecto do tempo é controlado usando um contador crescente e pausando o encadeamento de execução.
No entanto, como a variável do contador continua aumentando indefinidamente, sem condições para verificar seu valor, pode-se esperar um estouro de número inteiro em algum momento, quando a mensagem reverter para
Not ready yet
.Uma condição pode ser adicionada para detectar e atenuar o problema, atribuindo um valor positivo maior que 730 quando o estouro ocorrer - como
i=i<1?731:i
dentro dofor
loop. Infelizmente, tem o custo de 11 bytes adicionais:A chave aqui é usar o valor do contador em milissegundos para atrasar bastante o momento do estouro.
O tempo até o estouro pode ser calculado de acordo com a
sum(1..n)
fórmula, em que n = o valor inteiro máximo assinado de 32 bits em C # (e na estrutura .NET) ou 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
Depois de 73 milhões de anos , pode não importar se uma falha no sistema aparecer - o cachorro-quente, o OP com fome e talvez a própria raça humana já se foi há muito tempo.
Versão anterior (172 bytes):
Programa não destruído:
Versão anterior (174 bytes):
Programa não destruído:
Como alternativa, o programa pode ser exibido
Not ready yet
apenas uma vez, aguarde até que o tempo especificado termine e depois saiaEat your hot dog
substituindo a mensagem anterior, sendo alguns bytes mais curtos:C #, 145 bytes
Programa não destruído:
fonte
Ruby,
807167 BytesEdit: Graças à manatwork por remover 13 bytes inteiros
fonte
267.times{…}
?{
. Isso resultaria em 67 bytes.05AB1E,
432928 bytes (Agradecimentos a Adnan)Não funciona online, pois atinge o tempo limite. Offline funcionará.
267F
: Loop 267 vezes…€–Žä‡«ª
: Primeira string com dicionáriow,
: Aguarde um segundo e imprima}[
: Finaliza o loop se e inicia o loop infinito“Eat€ž…ß‹·“
: Segunda string com dicionário,
: Impressãofonte
“NotŽä‡«“
pode ser substituído por…€–Žä‡«ª
Python, 115 bytes
Minha primeira vez tentando algo assim. Eu também sou iniciante, então aqui está o Python 3 por 115 bytes:
fonte
for
loop terminarárange(267)
muito mais rápido que 4 minutos e 27 segundos e a solução se tornará inválida. ☹Editor de blocos JavaScript para micro: bit, 90 bytes
O código:
Você pode tentar aqui.
Fui inspirado pela resposta do Scratch para resolver a tarefa com o meu micro: bit. O único problema é que o bloco de pausa começa após a saída da primeira string, então eu precisava reduzir a pausa em 13s.
Nota: O antigo Microsoft Block Editor para micro: bit é mais curto para criar, mas produz mais código e, na verdade, é mais longo.
fonte
Com base no fato de que o OP deseja cachorro-quente continuamente, até o fim dos tempos - o que entendo da frase:
Esta é a minha resposta:
C ++,
187188224167 bytesEspaço em branco removido (167 bytes):
formato legível (224 bytes):
Se, por outro lado, o OP gosta de seus cachorros-quentes com moderação, então esta é a minha resposta:
Espaço em branco removido (158 bytes):
formulário legível (198 bytes):
fonte
delay
?Excel VBA, 82 bytes
O VBE anônimo imediata a função da janela que não recebe nenhuma entrada e gera se você deve ou não comer seu cachorro-quente na célula
[A1]
.fonte
Excel VBA
12294 bytesObrigado Taylor Scott
fonte
CDate("00:04:28")
pode ser condensado para#0:4:27#
, você pode substituir o seuWhile ... Wend
laço com umDo .. Loop
laço e você pode substituir suaif
cláusula com umaiif
cláusulaJavascript, 83 bytes
Alertz para todos!
fonte
267000
para267e3
e salvar um byte.new Date
em lugar deDate.now()
, e outro alguns usandofor(d=new Date;;)alert...
PERL, 76 bytes
fonte
PHP 88 bytes
fonte
Eat your hot dog
até o final dos tempos.” Portanto, você também deve repetir a segunda mensagem. Que irá adicionar ao seu comprimento, mas felizmente não é o lugar para encurtá-lo:for($t=267;$t--;sleep(1))echo"Not ready yet";for(;;)echo"Eat your hotdog";
. A propósito, executar código comphp -r
é aceito, portanto, não há necessidade das tags PHP (especialmente a que fecha, que é considerada um mau hábito nesse caso: “A?>
tag de fechamento DEVE ser omitida dos arquivos que contêm apenas PHP” - PSR-2 )REXX, 82 bytes
fonte
Java 7, 152 bytes
Explicação:
fonte
PHP, 68 bytes
saída contínua;
←
é ASCII 10 = LF. Corra com-r
.saída única, 50 bytes
onde
←
é ASCII 13 = CR. Salve no arquivo ou use a tubulação para executar.fonte
RBX.Lua , 69 bytes
RBX.Lua é o idioma usado no ROBLOX.com . É uma versão modificada do Lua 5.1 que apresenta uma função interna 'Wait'. O código acima é bastante auto-explicativo, abaixo está uma versão mais legível:
O código gera "Ainda não está pronto" continuamente em STDOUT , por 267 segundos (4 minutos e 27 segundos) antes de emitir "Eat your hot dog".
fonte
C - 130 bytes
Poderia ser um pouco mais curto (128 bytes), mas achei melhor substituir "Não está pronto ainda"
fonte
#include<unistd.h>
(ele emitirá um aviso, mas ainda será compilado). Fazer o que você faz (sobrescrever a mensagem anterior) é seu direito, mas como o desafio realmente não exige isso, sugiro que não faça isso. Isso permitiria que você fizesseint main(){puts("Not ready yet");sleep(267);puts("Eat your hot dog");}
(sem incluir, eles não são necessários) - mas nenhuma obrigação de fazê-lo, é claro.VBA, 126 bytes
fonte
Python 2.7,
9088 bytesfonte