Atualmente, os computadores estão em toda parte - em carros, trens, skates e até reatores nucleares. A possibilidade de o seu software ser executado em um dispositivo de viagem no tempo é apenas uma questão de tempo. Você pode lidar com isso? Você pode pelo menos detectá-lo?
Sua tarefa:
- Escreva um programa que faça loops e continue consultando a hora do sistema, a fim de detectar a viagem no tempo.
- Se o tempo avançar um dia ou mais entre duas consultas consecutivas, será uma viagem no tempo. Nesse caso, seu programa deve imprimir:
TS TS: YYYY? You mean we're in the future?
- Se o tempo retroceder, em qualquer valor, entre duas consultas consecutivas, será uma viagem no tempo retrógrada. Nesse caso, seu programa deve imprimir:
TS TS: Back in good old YYYY.
TS TS
são os carimbos de data e hora antes e depois da viagem no tempo.YYYY
é o ano de destino.- Os carimbos de data e hora podem estar em qualquer formato, que inclua pelo menos o ano, mês, dia, dia, hora, minuto e segundo com quatro dígitos, separados por não dígitos.
Limitações:
- Você deve apoiar datas nos séculos 19, 20 e 21, pelo menos.
- Você deve usar um idioma que existia antes que este desafio fosse lançado.
- Você deve postar suas respostas somente após este desafio ter sido lançado.
- Você deve usar um idioma que existia antes de sua resposta ser publicada.
- Você pode editar sua resposta somente depois de publicá-la.
- Seu programa não deve imprimir nenhuma saída além da saída necessária. Um ocasional "Grande Scott!" é permitido.
Isso é código-golfe. A resposta mais curta vence.
Referências relevantes a filmes provavelmente tornarão sua resposta muito longa, mas podem levar a votos positivos.
Respostas:
CJam, 118 bytes
Isso não funciona com o intérprete online.
Exemplo de saída após ajustar o tempo do meu computador duas vezes:
fonte
Python 2, 210 bytes
Os carimbos de data e hora são impressos em
YYYY-MM-DD HH:MM:SS
formato, separados por ponto e vírgula. Mudou para Python 2 de 3, uma vez que são 2 caracteres mais curtos para imprimir. Os spams costumamGreat Scott!
serusadosparanormas quenão viajam no tempo, já que é mais fácil e mais barato fazer isso do que configurar uma impressão condicional.fonte
JavaScript (ES6), 263 bytes
Provavelmente, isso poderia ter relação com alguma reescrita para torná-la mais eficiente / pequena.
Fonte:
fonte
now()
chamadas, ele pode perder um evento de viagem.o=(n=Date).now()
.8.64e+7
tem dois caracteres a mais que86400
.Python 3, 195
Atualmente não imprime Great Scott porque não consigo encontrar uma boa maneira de torná-la ocasional.
fonte
Bash + coreutils, 177
fonte
Ruby, 194 bytes
Ainda não tive tempo de reduzir isso. Tenho certeza de que há algumas otimizações escondidas lá.
Ungolfed (e muito mais legível):
Editar: corrigido para pedir tempo ao SO, em vez de um ser humano.
fonte
loop{}
vez dewhile 1...end
e tente usar+
para concatenação de cadeias de caracteres em vez de interpolação.Lua 5.3, 174 bytes
Isto está jogando muito fora da regra "Timestamps pode estar em qualquer formato" ... o que eu tomei a liberdade de utilizar o formato de "segundos desde primeiro de janeiro de 1970"
Se eu continuar a minha interpretação de má qualidade de impressão de data e hora, e adotar o estrutura do MeepDarknessMeep, eu posso (sem ética) comprimir isso até ...
155 bytes
fonte
Timestamps may be in any format, that includes at least the 4-digit year, month, day, hour, minute and second, separated by non-digits.
- isso não permite segundos desde a época.Back in good ol YYYY
mas deve ser impressoBack in good old YYYY
. (Note o d no antigo)Lua 5.3,
179178173171169168163 bytesNota lateral: se você precisar de um número de ano inteiro, subtraia seis bytes. O motivo é que% c de lua (ou janelas ou de alguém!) Não produz o ano inteiro. Por esse motivo, os registros de data e hora podem parecer estranhos!
Isso também tira proveito dos carimbos de data / hora que podem ser separados por qualquer caractere que não seja um dígito!
Obrigado por me notificar da minha antiga referência math.abs e outras melhorias @thenumbernine :)
Lua 5.3, 151 bytes
Isso é 'copiar' o método de exibir a hora do @ thenumbernine, apenas mostrando o carimbo de data e hora em vez da data real. Isso não é competitivo, já que acho um pouco trapaceiro, basta postá-lo aqui para exibir meu trabalho :)
fonte
C: 363 bytes
Minificado usando este script útil :
Original:
Exemplo de execução:
Eu poderia me livrar de 10 bytes removendo o
sleep
eu acho.A propósito, alguma praticidade que salta no tempo para Mac / Linux:
fonte
sleep
.JavaScript (ES6)
181174170 BytesNota: Não foi testado com uma máquina de tempo real.
Esse código é executado no Firefox, Chrome, Edge, Node.js Harmony (ou io.js ). Mas, eu uso
alert
, de modo que terá que ser substituído por Suporteconsole.log
para Node e Io : (187 bytes)Explicado:
fonte
Python,
170165 bytesIsso deve muito à resposta de Morgan Thrapp. O principal truque aqui é a normalização do timedelta, que convenientemente torna o timedelta.days negativo quando se move um pouco até o passado e 0 quando se move menos de um dia para o futuro.
fonte
import*
você não precisa dodatetime.
prefixo.import*
permite escrever emdatetime.now()
vez dedatetime.datetime.now()
. É o tipo de faz sentido, de uma forma ...Objeto Caché, 199 bytes
Esse problema é solucionável em MUMPS antigos simples, mas seria excessivamente longo, já que o ANSI MUMPS não possui a
$ZD[ATE]T[IME]
função intrínseca para formatar datas em registros de data e hora legíveis por humanos.Esse programa provavelmente não detectará viagens no tempo antes de 1 de janeiro de 1841, nem viagens após 31 de dezembro de 9999, pois esses são os limites intrínsecos da
$H[OROLOG]
cronometragem . Este programa também possui apenas precisão de segundo nível; as falhas de tempo anteriores ao sub-segundo nível provavelmente escaparão ao seu conhecimento.fonte
TSQL, 355 bytes
No trabalho, nenhum idioma legal sofisticado fica com o servidor de produção do SQL Server =)
Versão Golfed
Versão mais legível com pequenas alterações.
O SQL não é tão ruim em relação aos carimbos de data e hora, pois é um tipo de dados de primeira classe.
Para o bem do golfe, estamos usando um tipo com precisão de 3 milissegundos. O loop em si leva menos que isso para iterar (dependendo do seu servidor). A chave aqui é que o registro de data e hora é flutuante e o tipo inteiro conta quantos dias se passaram. Ele funcionará bem de 1º de janeiro de 1753 a 31 de dezembro de 9999.
fonte
VBA, 258 bytes
Correu com: Excel 2007 no Windows 7
305 bytes se a Usabilidade for necessária
Se você deseja que este código seja "testável", adicione
Application.Wait (Now() + TimeValue("0:00:01"))
depoish=t
Resultado
Abaixo está o arquivo de teste que eu usei. Estou sinceramente impressionado com a pouca segurança do Windows às vezes. Pode não funcionar como esperado em todos os computadores
fonte
Javascript
173 169162 bytesJavascript é bastante popular ...
Explicação (Versão mais antiga do código):
fonte
Processando, 270 bytes
Expandido:
Saída de amostra:
fonte
Ruby,
160157155154 bytesMuitas coisas para jogar golfe aqui
fonte
Mathematica, 295 bytes
O programa solicita ao sistema operacional a cada segundo novos TS.
Resultado
Testado pela alimentação manual de data / hora.
Definitivamente poderia ter o formato da saída melhor. Ele atende aos requisitos conforme indicado.
fonte
LocalTime[]
? Aparece apenas uma vez no código a seguir.Groovy, 244 bytes
fonte
Java, 378 bytes.
fonte