dary!
Dans des événements totalement indépendants de ce qui, espérons-le, m'arrivera dans les prochains jours, je vous charge d'écrire du code qui:
Impression
Legen... wait for it...
immédiatement, avec un retour à la ligne.
Attendez jusqu'à l'heure complète suivante (lorsque le travail cron pour l'attribution du badge sera exécuté).
Impression
dary!
avec un retour à la ligne optionnel .
Règles supplémentaires
Vous pouvez écrire un programme ou une fonction, mais la sortie doit être imprimée sur STDOUT (ou son alternative la plus proche de votre langue).
Vous devez attendre jusqu'à l' heure complète suivante , pas seulement pour 60 minutes. Si le code est exécuté à 6h58, il devrait imprimer la deuxième ligne à 7h00.
La dernière ligne doit être imprimée au plus tard une seconde après l'heure complète suivante.
Dans le cas où le programme est démarré dans la première seconde d'une heure complète, il devrait attendre une heure complète.
Vous pouvez interroger l'heure locale ou l'heure UTC.
Les règles standard de code-golf s'appliquent.
Réponses:
Pyth,
4241Ci-dessous, un hexdump du code:
Enregistré 1 octet grâce à @isaacg
Utilise la
.d
fonction pour obtenir les valeurs liées à l'heure locale..d6
renvoie l'heure actuelle. Cela permet d’imprimer la première chaîne, puis d’attendre que l’heure soit différente de l’heure du début du programme, puis d’imprimer la deuxième chaîne.Vous pouvez l'essayer en ligne avec
.d7
ou.d8
pendant quelques minutes / secondes, mais le compilateur en ligne n'imprime quoi que ce soit à la fin du programme.Félicitations, Dennis! :)
la source
0000000: 2e22 2077 0c10 89e2 ab1b ad68 0f8c d660 ." w.......h...` 0000010: d9e1 a968 82b4 5e22 0a ...h..^".
.
le rende de la même longueur. Silly off-by-one erreurs: Pdary
, mais nonlegen
! Et pyth affirme être plus facile à comprendre pour ceux qui sont habitués à la programmation conventionnelle ...."
indique que certaines opérations doivent être effectuées sur la chaîne pour obtenir la chaîne réelle. C'est juste un truc de compression pour jouer au golf. Si vous décidez d'essayer d'apprendre Pyth, bonne chance! N'oubliez pas qu'il y a aussi une salle de discussion pour cela :)JavaScript (ES6), 74 octets
Vous voudrez peut-être modifier votre horloge système avant les tests. Félicitations si vous arrivez ici à 59 minutes.
la source
36e5
travailler à la place de3.6e6
?setTimeout
feraiseval
. Vrai ... J'essayais à l'origine d'utiliserconsole.log
mais cela ne fonctionne même pas lorsqu'il est stocké dans une variable en raison du contexte. Toi aussi tu es belle!setTimeout
correctement et même économiser un octet:alert`Legen…`;setTimeout(alert,36e5-new Date%36e5,"dary!")
CJam,
4948 octetsUtilise l'heure locale. À des fins de test, vous pouvez remplacer les deux instances de
3
avec4
ou5
pour le faire imprimer au début de la minute / seconde suivante.Testez-le ici. Mais notez que l'interprète en ligne ne montre aucune sortie jusqu'à la fin du programme. Vous pouvez également l'exécuter sur Essayez-le en ligne , où le résultat est affiché presque immédiatement au lieu d'être mis en mémoire tampon (mais lorsque vous le testez avec des secondes au lieu de plusieurs heures, le délai est perceptible). Dans tous les cas, si vous l'exécutez localement avec l'interpréteur Java, cela fonctionne comme un charme.
Explication
Ceci utilise CJam
et
qui vous donne un tableau deVoici le détail du code:
Prime
Cela fonctionne également pour le même nombre d'octets:
Au lieu de sélectionner l'heure, nous sélectionnons le préfixe avec la date et l'heure et conservons la boucle en cours tant que le tableau datetime possède toujours ce préfixe.
la source
AppleScript,
157149 octetsHuh. Étonnamment en lice.
Depuis l'
log
impression dans la sous-fenêtre Messages de Script Editor, je considère que c'est la sortie la plus proche de STDOUT. Fondamentalement, si vous obtenez la chaîne temporelle de la date actuelle, cela produira quelque chose comme ceci:Code:
Sortie:
Il prendra le premier nombre (
5
) avant les deux points.Je pensais que ce serait beaucoup plus long que ça, en fait. xD
la source
"1"
denumber 1 in time string of(current date)
…first number in time string of (current date)
.first number
me donne aussi juste le premier chiffre du temps ("0"
maintenant, à 04:38).Bonhomme de neige 1.0.2 ,
7069 octetsExplication:
la source
PHP,
76, 70, 65, 6251 octetsLogique précédente (63b):
Ce type de codage vous fait perdre votre travail, mais cela se répète jusqu’à 1 heure de plus que init.
-1 octet en remplaçant
{}
afer le temps pour;
(grâce manatwork)-5 octets par le remplacement
echo'dary!';
de?>dary!
(manatwork de grâce)-4 octets par le remplacement
<?php
de la version courte<?
(primo remerciements)-1 octet en remplaçant le
while
pendantfor
-3 octets par substitution ,
date(G)!=$h+1
àdate(G)==$h
(merci primo)la source
{}
→;
etecho
→?>
le réduiraient un peu. Bien que je préfèreLegen... wait for it...↵<?php while(+date('is'));?>dary!
<?
plutôt que<?php
). Utiliser afor(;;)
la même longueur quewhile()
, mais vous permet de déplacer l’$h
affectation sans avoir besoin d’un point-virgule (for($h=date(h);...
). Ce{}
n'était pas nécessaire, mais le;
précédent non plus?>
. Vous pouvez avoir un problème avec$h
est 12, cependant (date(h)
ne sera jamais 13).date(G)!=$h+1
endate(G)==$h
. Plus court, et résout le problème de l'heure;) En outre, supprimez le point-virgule avant?>
.HH:00:00
, c'est-à-dire dans la première seconde d'une heure complète.Perl 6 , 60 octets
la source
60²
été ajouté il y a quelques joursJavascript
94 9087 octetsPas beaucoup joué au golf ...
La version de Downgoat:
Il enregistre l'heure actuelle et les boucles tant que "l'ancienne" heure est égale à l'heure actuelle. Dès que l'heure aura changé, le reste sera imprimé! :RÉ
Avertissement: Si votre navigateur ne l'aime pas, vous avez été averti.
la source
(a=alert)`Legen... wait for it...`,l=new Date,z=(b=l.getHours)();for(;z==b(););a`dary!`
(a=alert)`Legen... wait for it...`,z=(b=new Date().getHours)();for(;z==b(););a`dary!`
for((a=alert)`Legen... wait for it...`,z=(b=new Date().getHours)();z==b(););a`dary!`
MATLAB - 89 octets
Assez explicite. Commencez par créer une poignée de fonction pour saisir l'heure actuelle de l'horloge système. Ensuite, affichez
Legen... wait for it...
avec un retour chariot, puis nous entrons dans unewhile
boucle où nous vérifions sans cesse si l’heure actuelle ajoutée à 1 n’est pas égale à l’heure actuelle. Si c'est le cas, continuez à boucler. Seulement jusqu'à l'instant où l'heure suivante se produit, nous affichonsdary!
et un retour chariot se produit après.L’heure de MATLAB étant basée sur l’indexation sur 24 heures, l’
mod
opération avec la base 24 est nécessaire pour gérer les débordements de 23 h (23 h) à minuit (00 h).Note mineure
Cette
hour
fonction nécessite la boîte à outils Série financière. Lanow
fonction n'est pas soumise à cette restriction, mais elle récupère la date et l'heure actuelles sous forme de numéro de série, qui permethour
ainsi de calculer l'heure actuelle.Voulez-vous exécuter ceci dans Octave?
Sûr! Comme Octave ne dispose pas de cette boîte à outils, il suffit de modifier la
hour
fonction pour qu’elle appelledatevec
un vecteur de 6 éléments - un pour l’année, le mois, le jour, l’heure, les minutes et les secondes. Il vous suffira d'extraire le quatrième élément de la sortie:Les caractères supplémentaires font passer la solution à 98 octets, mais vous pourrez l'exécuter dans Octave. Notez l'indexation sur place sans variable temporaire dans le descripteur de fonction.
Pas de boîte à outils de séries chronologiques financières?
Si vous souhaitez exécuter ceci dans MATLAB sans la boîte à outils Financial Time Series, car vous ne pouvez pas indexer immédiatement dans des variables sans variable temporaire, l'écriture nécessite un peu plus d'octets:
Cette première obtient l’heure et la date actuelles et les stocke dans la variable
h
, ainsi que dans la variable automatique appeléeans
. Après, nous continuons à boucler et à vérifier si l'heure actuelle n'est pas égale à l'heure suivante. A chaque itération, nous continuons à mettre à jour la variable automatique avec l'heure et la date actuelles. Dès que l'heure suivante correspond à l'heure et à la date actuelles, nous affichons la dernière partie de la chaîne et nous quittons. Cela pousse le nombre d'octets à 114.Prenez également note que vous ne pouvez pas essayer ceci en ligne. Les interprètes d’Octave en ligne auront une limite de temps pour l’exécution du code, et comme il s’agit d’une
while
boucle attendant la prochaine heure, vous obtiendrez un délai d’attente en attendant l’exécution du code. La meilleure chose à faire est de l'exécuter sur votre propre ordinateur et de vérifier qu'il fonctionne.la source
now
dans la boucle while:a=@()disp('Legen... wait for it...');while floor(mod(now*86400,3600))end;disp('dary!')
. Vous pouvez également économiser 5 octets supplémentaires en supprimant lea=@()
bit, car le code constitue un programme complet. Le code joint ne nécessite pas non plus la boîte à outils FTS.hour
fonction Boîte à outils financière ? :-)Mathematica,
858481 octetsla source
C, 163 octets
la source
Microscript II, 45 octets
Enfin, une utilisation pour l'
D
instruction.Imprime la première chaîne, prend à plusieurs reprises l’heure UTC en millesecondes modulo 3 600 000 jusqu’à obtenir 0, puis génère la deuxième chaîne imprimée implicitement. Les 3 600 000 sont représentés dans le code sous la forme 36x10 5 .
la source
TI-BASIC,
7064 octetsMaudissez ces lettres minuscules à deux octets!
getTime
renvoie une liste de trois éléments{hours minutes seconds}
, ainsi la somme du premier élément au premier correspond aux heures. Lorsqu'il y a une différence entre les heures de début et les heures actuelles, la boucle se termine. Merci à @FryAmTheEggman pour cette observation.la source
R - 97 octets
la source
Python 3 -
9289 octetsla source
Python 2,
8281 octetsUne réputation trop basse pour commenter. Version Python 2 de la solution d'Alexander Nigl. Enregistre les caractères perdus sur des crochets. En outre, 3 600 non nécessaires au calcul du temps de sommeil.
7 caractères enregistrés au total.
Edit: -1 octet grâce à @ Kevin Cruijssen
la source
;
à la fin du programme. Semble bien fonctionner sans cela. :) Bonne réponse cependant, donc +1 de moi (maintenant vous pouvez commenter).Script de commande Windows, 87 octets
Ceci compare continuellement une variable horaire stockée au début avec l'heure actuelle et réussit si elle est différente.
la source
Perl, 62 octets
La variable spéciale
$^T
(aka$BASETIME
) enregistre le nombre de secondes écoulées depuis le début du script. Heureusement, les secondes intercalaires ne sont pas comptées dans le total. Par conséquent, les valeurs suivantes sont équivalentes:Étonnamment, cette variable n’est pas en lecture seule.
la source
-E
semble être banal ici, vous pouvez donc économiser 5 octets en utilisantsay
.perl -E
soumissions et les langues n’ayant que des interprètes en ligne.-E
devrait être autorisé par défaut. Dans la plupart des cas, l’amélioration est triviale et sans intérêt, de toute façon.Japt ,
7261 octetsChacun
?
représente un caractère Unicode non imprimable. Voici comment obtenir le texte intégral:Alternativement, voici un hexdump (espérons-le réversible):
Ce code est basé sur la réponse JavaScript de George Reith , avec quelques modifications spécifiques à Japt. J'ai découvert l'autre jour que si vous compressez le code et l'insérez dans une chaîne encapsulée par un backtick, il se décompressera automatiquement. Voici comment cela est traité lors de la compilation:
Dans JS, une paire de parenthèses renverra la dernière valeur à l'intérieur; ainsi, ce code définit l'événement timed, puis renvoie la
'Legen...'
chaîne, qui est automatiquement envoyée à STDOUT. Comme Japt n'a actuellement aucun moyen d'ajouter du contenu à STDOUT autre que la sortie automatique lors de la compilation, j'ai plutôt utilisé la fonction vanilla JSalert
pour la sortie minutée. J'espère que cela est permis.la source
Powershell,
5251 octets-1 octet merci @Veskah
Cette expression
Date|% M*e
obtient la valeur de laMinute
propriété à partir de la valeur DateTime actuelle. La boucle se termine lorsqu'elle estMinute
égale à 0.la source
Python, 112 octets
Assez explicite.
la source
Python - 159 octets
la source
Souris-2002 , 62 octets
Requiert que l'utilisateur appuie sur Entrée. Je pense.
Bon, bien, alors que nous prenons beaucoup d'octets et que nous ne gagnons rien, amusons-nous un peu.
Échantillon:
Vous voyez, c'est un compte à rebours actualisé sur place jusqu'à la prochaine heure! Il fait bon usage de la boucle while, qui même ne rien faire occupera une place de choix.
la source
BASIC, 90 octets
Simple, joué au golf en utilisant les préfixes de type et la
End
déclaration implicite . Le coût est que cela ne fonctionne que dans le dialecte FreeBasicfblite
.la source
Befunge 98 -
6963 octetsLe code contient un caractère non imprimable (représenté par
<ETB>
les mots non imprimables ne semblent pas apparaître dans les blocs de code). Son code de caractère est 23 (caractère de fin de bloc de transmission ).Avertissement: Le code précédent s'exécutera dans une boucle occupée, la pile devenant de plus en plus grosse, ce qui entraînerait une consommation importante de mémoire.
la source
Gelée ,
4847 octets , non en compétition-1 octet grâce à Erik le golfeur (utilisez "Leg" comme mot dans la compression)
TryItOnline! ou exécutez une version de test avec une chaîne codée en dur de
“59:57”
("mm: ss").Le premier engagement de Jelly a été effectué par Dennis quelques jours à peine après avoir créé ce défi. Je ne sais pas à quelle date ce code aurait fonctionné pour la première fois, mais il n’est en aucun cas concurrentiel.
Il y a, au moment de l' écriture, une seule façon d'accéder au temps qui est au moyen d'une chaîne formatée,
ŒT
.Ce code calcule combien de temps attendre, puis dort. Si elle est appelée à
hh:00:00
elle attend quelques3600
secondes: il convertit"00:00"
à[0,0]
soustraient alors que de59
Céder[59,59]
, convertit que de la base de soixante pour donner3599
, ajoute ensuite un pour une durée totale d'attente de3600
secondes.Peut-être qu'une boucle pourrait être faite; ou une chaîne compressée utilisant le mot entier "légendaire" pourrait être utilisé en quelque sorte?
la source
“ÇỴġƒḃhlḂṀ⁷*Ḣ¡w*Jḷv»
au lieu de“¤ßƇṪOƭ!½ȯƤxEẹ<Ȯ¹z7⁷»
.Leg
(deLegen
) est aussi un mot :) En outre, cette réponse est invalide, car elle dépend des minutes et des secondes00
. Vous devriez faire quelque chose avec la4ŒT
place, car il existe une règle stipulant que,In the event that the program is started in the first second of a full hour, it should it wait for the next full hour.
00:00
il est appelé car il ne teste pas cette condition. Il calcule le nombre de secondes avant la suivante"00:00"
, puis attend. Donc, il convertira"00:00"
pour[0,0]
soustraire de59
pour obtenir[59,59]
que convertir de base soixante pour obtenir3599
et ensuite en ajouter un pour obtenir3600
(testez-le en utilisant la version de test avec"00:00"
à la place de"59:57"
)60*(59-m)+(59-s)
doit être à la60*(59-m)+(59-s)+1
place, la deuxième fois, cela apparaît?sleep x seconds then return y
- parce que<dyad>@
peut être défini comme une autre dyade avec des arguments échangés.MathGolf , 39 octets
Essayez-le en ligne!
Presque battre pyth ...
Explication
la source
Pyth - 36 octets
Attend que les minutes soient 0 avec une boucle while.
la source
:00:00
Java, 136 octets
Le nombre de millisecondes écoulés depuis la dernière heure est le résultat de la
System.currentTimeMillis()
modification de 3 600 000.Le programme monolithique équivalent a une longueur de 159 octets:
la source
QBIC , 58 octets
Explication
la source