Les ordinateurs sont partout de nos jours - dans les voitures, les trains, les planches à roulettes, même les réacteurs nucléaires. La possibilité que votre logiciel fonctionne sur un périphérique de voyage dans le temps n’est qu’une question de temps. Pouvez-vous vous en occuper? Pouvez-vous au moins le détecter?
Ta tâche:
- Ecrivez un programme qui effectue une boucle et continue à interroger l'heure du système, afin de détecter les voyages dans le temps.
- Si le temps avance d'un jour ou plus entre deux requêtes consécutives, c'est un voyage dans le temps. Dans ce cas, votre programme doit imprimer:
TS TS: YYYY? You mean we're in the future?
- Si le temps recule, de quelque montant que ce soit, entre deux requêtes consécutives, il s'agit d'un voyage dans le temps en arrière. Dans ce cas, votre programme doit imprimer:
TS TS: Back in good old YYYY.
TS TS
sont les horodatages avant et après le voyage dans le temps.YYYY
est l'année de destination.- Les horodatages peuvent être de n'importe quel format, comprenant au moins l'année, le mois, le jour, l'heure, les minutes et les secondes à 4 chiffres, séparés par des chiffres non digitaux.
Limites:
- Vous devez au moins soutenir les dates des 19e, 20e et 21e siècles.
- Vous devez utiliser une langue qui existait avant que ce défi ne soit publié.
- Vous devez poster vos réponses uniquement après la publication de ce défi.
- Vous devez utiliser une langue qui existait avant que votre réponse ne soit publiée.
- Vous ne pouvez modifier votre réponse qu'après l'avoir postée.
- Votre programme ne doit imprimer aucune sortie autre que la sortie requise. Un occasionnel "Great Scott!" est autorisée.
C'est du code-golf. La réponse la plus courte gagne.
Les références de film pertinentes rendront probablement votre réponse trop longue, mais vous obtiendrez peut-être des votes positifs.
Réponses:
CJam, 118 octets
Cela ne fonctionne pas avec l'interprète en ligne.
Exemple de sortie après avoir ajusté le temps de mon ordinateur deux fois:
la source
Python 2, 210 octets
Les horodatages sont imprimés au
YYYY-MM-DD HH:MM:SS
format séparé par des points-virgules. Basculé de 3 à Python 2 car il est 2 caractères plus courts à imprimer. Spams stdout avecGreat Scott!
pour non-temps voyageursnormaux, car il est plus facile et moins coûteux de le faire que de mettre en place une impression conditionnelle.la source
JavaScript (ES6), 263 octets
Cela pourrait probablement être fait avec une réécriture pour le rendre plus efficace / plus petit.
La source:
la source
now()
appels multiples, il peut manquer un événement de voyage.o=(n=Date).now()
.8.64e+7
est deux caractères plus long que86400
.Python 3, 195
Actuellement, n’imprime pas Great Scott parce que je ne trouve pas un bon moyen de le rendre occasionnel.
la source
Bash + coreutils, 177
la source
Ruby, 194 octets
Je n'ai pas encore eu le temps de le réduire vraiment. Je suis sûr que quelques optimisations se cachent là-dedans.
Ungolfed (et beaucoup plus lisible):
Edit: corrigé pour demander du temps à l'OS, plutôt qu'un humain.
la source
loop{}
plutôt que d'while 1...end
essayer et essayez d'utiliser+
pour la concaténation de chaînes plutôt que l'interpolation.Lua 5.3, 174 octets
Cela joue beaucoup au large de la règle « Horodatage peut être dans un format » ... que je pris la liberté d'utiliser le format de « secondes depuis le 1er janvier 1970 »
Si je garde mon interprétation de mauvaise qualité de l' impression horodatages, et d' adopter la structure de MeepDarknessMeep, je peux (de manière non éthique) réduire cette ...
155 octets
la source
Timestamps may be in any format, that includes at least the 4-digit year, month, day, hour, minute and second, separated by non-digits.
- Cela ne permet pas de secondes depuis l'époque.Back in good ol YYYY
mais il devrait imprimerBack in good old YYYY
. (Notez le d dans le vieux)Lua 5.3,
179178173171169 169168163 octetsNote latérale: Si vous supprimez la nécessité d'un numéro d'année complète, soustrayez-en six. La raison en est que lua (ou les fenêtres ou quelqu'un!)% C ne produit pas l'année complète. Pour cette raison, les horodatages peuvent paraître bizarres!
Cela tire également parti du fait que les horodatages peuvent être séparés par des caractères autres que des chiffres!
Merci de m'avoir informé de mes anciennes références math.abs et autres améliorations @thenumbernine :)
Lua 5.3, 151 octets
Il s'agit d'une copie de la méthode d'affichage de l'heure de @thumbernine en affichant simplement l'horodatage au lieu de la date réelle. Ce n'est pas compétitif car je pense que c'est un peu de tricherie, il suffit de l'afficher ici pour afficher mon travail :)
la source
C: 363 octets
Minified en utilisant ce script pratique :
Original:
Exemple d'exécution:
Je pourrais me débarrasser de 10 octets en supprimant le
sleep
je suppose.Soit dit en passant, une maniabilité qui prend du temps pour Mac / Linux
la source
sleep
.JavaScript (ES6)
181174170 OctetsRemarque: N'a pas été testé avec une machine en temps réel.
Ce code fonctionne dans Firefox, Chrome, Edge, Node.js Harmony (ou io.js d'ailleurs). Mais, j'utilise
alert
, donc cela devra être remplacé parconsole.log
pour Node et Io Suport: (187 Bytes)A expliqué:
la source
Python,
170 à165 octetsCela doit beaucoup à la réponse de Morgan Thrapp. L’astuce principale ici est la normalisation timedelta, qui rend timedelta.days négatif lorsqu’on se déplace même légèrement vers le passé et à 0 lorsqu’il se déplace moins d’un jour à l’avenir.
la source
import*
vous n'avez pas besoin dudatetime.
préfixe.import*
permet d'écrire à ladatetime.now()
place dedatetime.datetime.now()
. Cela a du sens, d'une certaine manière ...Caché ObjectScript, 199 octets
Ce problème peut être résolu dans MUMPS, mais il serait excessivement long, car ANSI MUMPS ne dispose pas de la
$ZD[ATE]T[IME]
fonction intrinsèque permettant de formater les dates en horodatages lisibles par l'homme.Ce programme détectera probablement pas le temps Voyage à avant le 1 janvier 1841, ni le temps Voyage à après le 31 décembre 9999, étant donné que ce sont les limites de la
$H[OROLOG]
intrinsèque Chronométrage . Ce programme n’a également qu’une précision de second niveau; Des problèmes de temps dans l’arrière, inférieurs à une seconde, échapperont probablement à son attention.la source
TSQL, 355 octets
Au travail, évitez donc de vous en tenir à votre serveur de production SQL Server =)
Version golfée
Version plus lisible avec des modifications mineures.
SQL n'est pas si mauvais en ce qui concerne les horodatages puisqu'il s'agit d'un type de données de première classe.
Pour le golf, nous utilisons un type avec une précision de 3 millisecondes. La boucle elle-même prend moins que cela pour itérer (selon votre serveur). La clé ici est que l’horodatage est un float et que le type entier compte le nombre de jours écoulés. Il ne fonctionnera pas bien du 1er janvier 1753 au 31 décembre, date limite 9999.
la source
VBA, 258 octets
A accompagné: Excel 2007 sous Windows 7
305 octets si l'utilisabilité est requise
Si vous voulez que ce code soit "testable", ajoutez
Application.Wait (Now() + TimeValue("0:00:01"))
aprèsh=t
Sortie
Ci-dessous le fichier de test que j'ai utilisé. Honnêtement, je suis étonné du peu de sécurité que Windows a parfois. Peut ne pas fonctionner comme prévu sur tous les ordinateurs
la source
Javascript
173 169162 octetsJavascript est très populaire ...
Explication (ancienne version du code):
la source
Traitement, 270 octets
Étendu:
Exemple de sortie:
la source
Ruby,
160157155154 octetsBeaucoup de choses à jouer au golf ici
la source
Mathematica, 295 octets
Le programme demande à l'OS toutes les secondes pour un nouveau TS.
Sortie
Testé en introduisant manuellement la date et l'heure.
Pourrait certainement avoir mieux formater la sortie. Il répond aux exigences énoncées.
la source
LocalTime[]
? Il apparaît une seule fois dans le code suivant.Groovy, 244 octets
la source
Java, 378 octets.
la source