Le défi est simpliste, étant donné un temps d'entrée sous forme de chaîne dans l'un des formats suivants:
hh
, hh:mm
ou hh:mm:ss
avec 0 ≤ hh ≤ 23
, 0 ≤ mm ≤ 59
et 0 ≤ ss ≤ 59
.
Afficher l'heure à laquelle il utilise actuellement les symboles suivants:
AA LABEL FOR CHARACTER CODE POINT HEXADECIMAL
== ==================== ========== ===========
🕐 Clock Face 01 Oclock 128336 0x1F550
🕑 Clock Face 02 Oclock 128337 0x1F551
🕒 Clock Face 03 Oclock 128338 0x1F552
🕓 Clock Face 04 Oclock 128339 0x1F553
🕔 Clock Face 05 Oclock 128340 0x1F554
🕕 Clock Face 06 Oclock 128341 0x1F555
🕖 Clock Face 07 Oclock 128342 0x1F556
🕗 Clock Face 08 Oclock 128343 0x1F557
🕘 Clock Face 09 Oclock 128344 0x1F558
🕙 Clock Face 10 Oclock 128345 0x1F559
🕚 Clock Face 11 Oclock 128346 0x1F55A
🕛 Clock Face 12 Oclock 128347 0x1F55B
Dans le format suivant:
It is currently {Clock Face 1} with {mm} minutes and {ss} seconds until {Clock Face 2}.
Exemples (y compris tous les cas marginaux):
Cas avec seulement des heures ...
f("12") = "It is currently 🕛."
Affaire avec heures et minutes ...
f("12:30") = "It is currently 🕛 with 30 minutes until 🕐."
Boîtier avec seulement des heures, mais avec des minutes incluses comme 00 ...
f("12:00") = "It is currently 🕛."
Boîtier avec heures, minutes et secondes ...
f("12:30:30") = "It is currently 🕛 with 29 minutes and 30 seconds until 🕐."
Affaire avec heures et minutes, mais avec secondes incluses comme 00 ...
f("12:30:00") = "It is currently 🕛 with 30 minutes until 🕐."
Affaire avec heures et minutes, avec moins d'une minute jusqu'à l'heure suivante ...
f("12:59:59") = "It is currently 🕛 with 1 seconds until 🕐."
Il n'est pas nécessaire de passer du pluriel au singulier.
Affaire avec heures et minutes, avec 1 minute à l'heure suivante ...
f("12:59") = "It is currently 🕛 with 1 minutes until 🕐."
Il n'est pas nécessaire de passer du pluriel au singulier.
Cas utilisant le temps militaire (oui, vous devez gérer cela) ...
f("23:30:30") = "It is currently 🕚 with 29 minutes and 30 seconds until 🕛."
Cas non valides ...
f("PPCG") = This cannot occur, you are guaranteed a valid format by the definition of the problem.
f(66:66:66) = This cannot occur, you are guaranteed valid numbers by the definition of the problem.
f(24:60:60) = This cannot occur, you are guaranteed valid numbers by the definition of the problem.
Vous n'avez à vous conformer à aucun style de sortie pour les cas non valides, les erreurs sont correctes.
Dans l'ensemble, le défi est plutôt simpliste, mais semblait être suffisamment dynamique pour être amusant à mon avis. Le code le plus court ici est le gagnant car il n'y a pas beaucoup d'aspect variable du code autre que la longueur.
0 < hh < 24
,0 < mm < 60
et0 < ss < 60
, vous vouliez dire0 ≤ hh ≤ 23
,0 ≤ mm ≤ 59
et0 ≤ ss ≤ 59
.AM
ouPM
balises?Réponses:
Befunge,
256250 octetsEssayez-le en ligne!
Les résultats sont encodés en utf-8, car cela fonctionne mieux avec TIO, mais si vous testez localement, vous devrez peut-être ajuster la page de codes par défaut de votre système pour voir correctement l'horloge. Sinon, redirigez simplement la sortie vers un fichier et ouvrez-le dans un éditeur compatible utf-8.
Explication
Les trois premières lignes lisent les heures minutes et secondes à partir de stdin, vérifiant EOF ou un saut de ligne après chaque valeur et substituant des zéros aux composants manquants dans l'entrée. Sur la ligne quatre, nous ajustons la valeur des minutes si les secondes ne sont pas nulles, convertissons la valeur des heures dans la plage de 0 à 11 (pour faire correspondre le caractère unicode approprié pour chaque heure) et écrivons la partie initiale de la sortie, y compris le premier cadran d'horloge.
C'est à ce stade que nous devons suivre différentes branches en fonction des composants non nuls. Le premier test, au début de la ligne cinq, vérifie simplement si les minutes et les secondes sont égales à zéro. Si oui, nous écrivons une finale
.
et sortons . Sinon, les lignes six et sept traitent des cas restants - en écrivant le texte et les valeurs appropriés, avant que tous les chemins ne se combinent à nouveau sur la ligne cinq pour écrire le cadran final (exécution de droite à gauche).la source
JavaScript (ES6), 201
Moins golfé
Tester
la source
String
dans votre code par""
une chaîne vide pour vous épargner 4 octets :). Ah, merde, il le peut aussi.It is currently 🕛 with 60 minutes until 🕐
. Je pense que cela devraitIt is currently 🕛.
JavaScript (ES6), 201 octets
226 octets si vous prenez en compte les pluriels:
la source
PowerShell ,
250243 octetsEssayez-le en ligne!
la source
C, 241 octets
Écrit UTF-8 sur stdout.
Essayez-le en ligne!
Code avec espace:
la source