J'aime vraiment les moments qui suivent certains modèles. En particulier, j'aime les moments où tous les chiffres sont identiques, ou tous les chiffres augmentent de manière arithmétique de un de gauche à droite. De plus, je déteste viscéralement quand les gens mettent des lettres à mon époque, donc tout ce non-sens AM / PM est mort pour moi. Ainsi, mes moments préférés sont:
0000 0123 1111 1234 2222 2345
Pour ma tranquillité d'esprit, j'ai besoin que vous m'écriviez un seul programme qui, étant donné l'heure actuelle en entrée, à la fois: (A) si ce n'est pas maintenant l'un de mes moments préférés, me dit à la fois (i) combien de minutes c'est depuis mon dernier temps favori ainsi que (ii) combien de minutes à partir de maintenant mon prochain temps favori se produira; et (B) si elle est maintenant l' un de mes moments préférés, fournit une « valeur de signal » unique.
Contribution
Votre programme doit accepter (par n'importe quelle méthode: argument de fonction,, stdin
argument de ligne de commande, etc.) l'heure actuelle, dans l'un des formats suivants:
Un temps à quatre chiffres sous forme de chaîne
Un entier qui peut être complété par un zéro sur la gauche pour créer un temps à quatre chiffres sous forme de chaîne
Une séquence de quatre (ou moins) entiers, ordonnée de telle sorte que le premier entier de la séquence soit le chiffre le plus à gauche (significatif) dans l'entrée de temps (par exemple,
0951
pourrait être valablement représenté par[0, 9, 5, 1]
ou[9, 5, 1]
)- Représenter
0000
comme une séquence de longueur nulle est acceptable
- Représenter
Dans le cas d'une entrée de chaîne, elle ne doit contenir que des chiffres, pas de deux-points ou d'autres signes de ponctuation. On peut supposer que les entrées sont toujours valides sur 24 heures:, HHMM
où 0 <= HH <= 23
et 0 <= MM <= 59
. Ignorez la possibilité d'une seconde intercalaire.
Production
Votre programme doit fournir (les retours de fonction stdout
, etc. sont très bien) soit (A) ou (B) , selon que la valeur entrée est ou non une heure cible.
Pour un):
Fournissez deux valeurs numériques dans n'importe quel format raisonnable, telles que:
Sortie à une chaîne avec un délimiteur approprié
Sorties séquentielles entières / chaînes, par exemple,
bash
impression de deux lignes pourstdout
:49 34
Valeurs de retour ordonnées de longueur deux, telles qu'une liste Python, un tableau C, etc.:
[49, 34]
Les valeurs peuvent venir dans l'un ou l'autre ordre. Par exemple, les deux éléments suivants seraient des sorties valides pour une entrée de 1200
:
49 34
34 49
Cependant, l'ordre et le séparateur doivent être les mêmes pour toutes les valeurs d'entrée!
Pour (B):
Produisez tout résultat autrement inaccessible. Le même résultat doit cependant être produit pour les six temps cibles. Les boucles infinies sont exclues.
Exemples d'entrées / sorties
YAY!!!
est utilisé ici comme exemple démonstratif et n'est pas normatif.
Input Output
------ --------
0000 YAY!!!
0020 20 63
0105 65 18
0122 82 1
0123 YAY!!!
0124 1 587
0852 449 139
1111 YAY!!!
1113 2 81
1200 49 34
1234 YAY!!!
1357 83 505
1759 325 263
1800 326 262
1801 327 261
2222 YAY!!!
2244 22 61
2345 YAY!!!
2351 6 9
C'est le code-golf , donc le code le plus court en octets l'emporte. Les failles standard ne sont pas autorisées.