Desafio
Dado que o Natal é:
- dezembro
- Mês 12
- Dia 25
Todo ano, determine a data de hoje e se hoje é Natal ou não. Se for Natal, você deve imprimir "It's Christmas"
. Se não for Natal, você deve esperar até o Natal e depois imprimir "It's Christmas"
.
Exemplo
A partir desta pergunta de estouro de pilha
import time
while time.strftime("%b, %d", time.localtime()) != "Dec, 25":
time.sleep(60)
print "It's Christmas"
Python em 115 caracteres
Regras
Aqui estão as regras:
- Suponha que o relógio do computador esteja sempre certo.
- Seu código deve poder ser iniciado a qualquer momento.
- Seu código deve ser impresso
"It's Christmas"
no Natal. - O loop não é certamente necessário, mas uma vez iniciado, seu código não deve parar até que seja impresso.
- O menor código vence.
Respostas:
Perl + Unix, 40 caracteres
É o mesmo que a solução Perl do JB , exceto que eu salvo alguns caracteres usando o
date
comando externo em vez do Perllocaltime
.fonte
Bash, 39
Para quem não pode esperar:
Isso segue todas as regras, especialmente a primeira.
fonte
Unix, 39 bytes
Com a ajuda de Dennis, obrigado por isso.
fonte
echo{,} "It\'s Christmas"|at -t12252359
, isso é mais curto que a resposta aceita. (A barra invertida é necessária por forma a.)PowerShell, 45
46caracteresCertamente não é muito eficiente em termos de energia; portanto, uma bateria de laptop pode morrer antes do Natal (motivo para desejar uma nova, talvez). Mas não dormir é definitivamente mais curto .
Isso também é independente de local. E obrigado a Jaykul por um bom truque para reduzir ainda mais isso.
Abusando um pouco das regras, 45 caracteres
Isso imprimirá linhas vazias até o Natal, nas quais será impresso "É Natal".
Isto ...
fonte
-match
e sem o caractere curinga, sem ganho / perda de caracteres.Python (36 caracteres)
No espírito de abusar das regras:
Definitivamente imprime "It's Christmas" no Natal
Se não for Natal, passe o tempo imprimindo "É Natal"
fonte
while 1:print"It's Christmas"
.PostScript, 90
Não funcione em uma impressora, ela não imprime uma página e apenas fará DoS sua impressora até o dia de Natal. Por outro lado, recuperar a impressora seria um belo presente.
fonte
Mathematica, 47
fonte
Perl, 44
45O tempo GMT não seria suficiente? (3 caracteres desativados ;-)
fonte
1until localtime=~/c 25/;
pouparia um char. :)-E
na época. Obrigado!localtime
seguir Sinta-se livre para roubá-lo se quiser, mas eu senti a dependência adicional justifica uma resposta em separado..)Perl, 45
Perl, 44
usando operador ternário (Agradecimentos a Ilmari Karonen).
fonte
? :
em vez de&& ;
você economizaria um caractere também. (E eu usaria emsay
vez dedie
uma saída mais bonita.)say
invés de morrer, o script nunca termina.Javascript, 51 caracteres
É um assassino de CPU:
fonte
Eu queria fazer isso sem analisar as strings. Posteriormente, há muitos números mágicos no meu código.
Fiz algumas aproximações para explicar os anos bissextos. Ninguém disse que tinha de imprimi-lo às 00:00:00 de 25 de dezembro!
Perl,
806957 caracteresEditado para um loop mais conciso!
fonte
R (47)
fonte
Python, 66
68fonte
1
no final da segunda linha parece bastante suspeito para mim. : P1
fornece um corpo para o loop while. É basicamente uma espera movimentada até 25 de dezembro. Tem o mesmo efeitowhile 1:if'c 25'in time.asctime():break
.time.ctime()
que faria.TI-BASIC,
4238Espera que o formato da data seja AAAA / MM / DD.
getDate cria uma lista de três elementos
{year,month,day}
; somente no Natal o mês ^ 2 + dia ^ 2 é igual a 769.23 bytes são usados para a sequência porque as letras minúsculas têm dois bytes cada, exceto i, que é exibido como o token da unidade imaginária.
fonte
Arquivo em lote, 68 caracteres
Não é utilizável interativamente, pois mata a sessão. Resolução que exigiria mais 5 caracteres.
Também sensível à localidade. Isso funciona no meu código do idioma que usa o formato de data ISO 8601.
Mas, ei, é um arquivo em lotes (pela maioria nem sequer é considerado uma linguagem de programação). E menor que o Javascript (e no mesmo nível do Python).
fonte
Groovy, 55
Acho que funciona, mas ainda está esperando a saída.
fonte
.*
são totalmente desnecessários. (. Ps Você pode testá-lo à espera de 05 de dezembro, em vez de 25.)(pdf) eTeX - 180 caracteres apenas de 1 a 25 de dezembro.
O TeX tem apenas uma maneira de acessar a data em que o programa é iniciado e o tempo decorrido desde o início, limitado a 32768 segundos. Por isso, preciso calcular o número de segundos a esperar e, a cada segundo, fazer um loop que aguarde o tempo decorrido para alcançar
1s
e redefinir o tempo. (Precisamente, estou fazendo blocos de 900 segundos.)Trabalhar para qualquer mês requer mais trabalho: 355 caracteres.
fonte
MySQL, 180 caracteres
Porque para que você está usando seu mecanismo de banco de dados?
Não é muito competitivo longitudinalmente, mas ei, é factível!
fonte
DELIMITER /
,RETURNS TEXT
eCURDATE()LIKE'%12-25'
; e tente remover algum espaço em branco.Ruby, 53
fonte
PHP, 40 bytes
Loop até 25 de dezembro; depois saia para o modo comum e imprima.
Execute com as configurações padrão (não exiba avisos).
fonte
Código de máquina 8086, 33 bytes
fonte
Javascript,
93897877 caracteresfunction x(){Date().match("c 25")?alert("It's Christmas"):setTimeout(x,1)}x()
fonte
setInterval('/c 25/.test(Date())&&alert("It\'s Christmas")',9)
com 61 caracteres ... a única desvantagem é que será oalert()
dia todo no Natal.setInterval
que 1?setInveral
a1000*60*60*24
e ambos não fará com que o processo de sofrer e irá notificar apenas uma vez no Natal.D, 130
fonte
t.month^12|t.day^25
(se eu conseguir minhas prioridades direito)Q, 63 caracteres
vai trabalhar no dia de natal todos os anos
fonte
SQL * Plus + PL / SQL - 100
SERVEROUTPUT ON
DBMS_OUTPUT.put
vez de,DBMS_OUTPUT.put_line
mas isso não imprime nada.fonte
C # (126)
Melhor para a sua bateria:
C # (163)
editar
A segunda versão ("melhor para a bateria") tem um pouco de um problema de dezembro. 26 a dez. 31 eu apenas pensei em: P
Ambas as versões provavelmente podem ser reduzidas um pouco mais.
fonte
Japt , 27 bytes (não concorrente)
Para testar a data de hoje: Substitua
c 25
pela última letra deste mês (taquigrafia) + espaço + dia do mês.Feb 02
==b 02
Experimente online! Não competir porque Japt é muito mais novo que esse desafio.
fonte
VBA, 58 bytes
O VBE anônimo inicia a função de janela que não recebe entrada e é executada até o dia de Natal, quando sai
It's Christmas
para a janela do VBE.fonte
bash-n-date: 69 caracteres:
Mas falhará de 26 a 31 de dezembro.
fonte
Q (60)
fonte