MATLAB - 89 octets
a=@()hour(now);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')
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 une while
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 affichons dary!
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. La now
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 permet hour
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 appelle datevec
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:
a=@()datevec(now)(4);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')
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:
disp('Legen... wait for it...');h=datevec(now);ans=h;while(mod(h(4)+1,24)~=ans(4)),datevec(now);end;disp('dary!');
Cette première obtient l’heure et la date actuelles et les stocke dans la variable h
, ainsi que dans la variable automatique appelée ans
. 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.