Étant donné un entier compris entre 0 et 141 (inclus), répertoriez toutes les heures de 24 heures dont les unités d'heure, de minute et de seconde s'ajoutent à cet entier.
Règles d'addition
Les nombres sont ajoutés par leurs unités de temps, pas par des chiffres simples.
Par exemple, prenez 17:43:59
17 + 43 + 59 = 119
N'oubliez pas qu'il s'agit d'un exemple de chiffres ajoutés. En réalité, vous saisiriez 119 et 17:43:59 serait l'un des résultats. La sortie doit être donnée en HH: MM: SS ou H: MM: SS.
Gardez également à l'esprit que le nombre le plus élevé possible est 141, soit 23:59:59. C'est le golf de code, donc le montant le plus bas gagne. Les essais et erreurs sont autorisés, mais il peut y avoir une meilleure façon de procéder.
Modifier: veuillez spécifier où se trouve la valeur d'entrée dans votre code.
Réponses:
Gelée ,
16302920 octetsMaintenant avec le format de sortie correct! Un grand merci à Dennis pour son aide dans le débogage de cette réponse. Suggestions de golf bienvenues. Essayez-le en ligne!
Modifier: +14 octets en utilisant le format de sortie correct. -1 octet pour supprimer un espace supplémentaire. -3 de passer de
24,60,60
à“ð<<‘
. -6 octets de passer+100DḊ€€
àd⁵
.Explication
la source
Bash, 71
Essayez-le en ligne .
la source
printf
est coûteux ici. En voust
rapprochant du bon format et en le réparant pour que ça((t-$1))
marche, vous pouvez le ramener à 71:for t in {0..23}+{00..59}+{00..59};{((${t//+0/+}-$1))||echo ${t//+/:};}
Perl 6 ,
6256 octetsVérifie simplement toutes les combinaisons possibles dans le produit croisé de toutes les heures, minutes et secondes.
la source
Python 3 , 91 octets
Il existe des solutions plus courtes utilisant
exec
(Python 2) ou la récursivité (Python 3), mais les deux nécessitent une quantité de mémoire déraisonnable.Essayez-le en ligne!
la source
PowerShell ,
8777 octets10 octets enregistrés grâce à John L. Bevan
Essayez-le en ligne! (cela va expirer, c'est très lent)
Explication
Assez simple, en commençant par le courant
[datetime]
, ajoutez 1 seconde 86 399 fois, formatez-le en chaîne, puis ne gardez que ceux où la somme s'additionne.la source
10000000
par1e7l
pour économiser 4 octets ... ou même1e7
pour un octet supplémentaire (je pense; j'ai dû inclure leL
pour le bénéfice du paramètre; mais soupçonnez que votre approche évite ce besoin.1e7
pendant au moins 30 minutes et c'est leL
suffixe qui m'a manqué; Je l'ai oublié et je ne pouvais pas trouver un moyen de le faire atteindre un entier plus court que la constante. Qui a décidé qu'un[timespan]
interprète un[int]
comme des ticks et un[double]
as days de toute façon ?? Leiex
bit est assez brillant, bien que cela rende tout cela excessivement plus lent.iex
astuce a également été adaptée à partir d'une astuce ici: codegolf.stackexchange.com/a/746/6776Haskell, 77 octets
la source
Haskell, 90 octets
Renvoie une liste de chaînes HH: MM: SS, par exemple
f 140
->["22:59:59","23:58:59","23:59:58"]
.Il s'agit de trois boucles simples à travers les heures, les minutes et les secondes. Conservez et formatez toutes les valeurs où la somme est le numéro d'entrée
x
.la source
Pyth - 30 octets
Prend toutes les heures possibles puis filtre.
Suite de tests .
la source
Julia 0,5 , 69 octets
Essayez-le en ligne!
la source
Lot, 168 octets
Affiche des heures à un chiffre.
la source
Mathematica, 79 octets
la source
Octave,
83, 87 octetsEssayez-le en ligne!
la source
QBIC ,
8272 octetsCela frappe un endroit malheureux dans QBasic, avec le moulage au nombre, le découpage et l'ajout d'un
0
au besoin est vraiment coûteux.Exemple de sortie:
ExplicationJ'ai écrit un roman à ce sujet:la source
PowerShell , 67
79octets (version désagréable)Étant donné que les règles ne disent rien sur l'achèvement dans un certain temps (ou pas du tout), et rien sur aucun doublon, voici une solution horrible:
la source
Raquette 39 octets
Non golfé:
la source
MATL , 29 octets
Essayez-le en ligne!
Explication
la source
JavaScript,
122120 octetsPrend une chaîne vide supplémentaire en entrée,
que je présume ne compte pas pour la taille. Octet mis à jour (y compris l'historique) pour ajouter deux octets pour l'initialisation de la chaîne.la source
JavaScript (ES6), 110
Moins golfé
Tester
la source
JavaScript, 96 octets
Vue étendue:
Parcourez toutes les heures possibles en bouclant 86399 à 1,
Soustrayez les 3 nombres de la valeur d'entrée pour renvoyer une valeur de falsey si les trois nombres s'additionnent à la valeur d'entrée. Si la valeur est falsey, sortez-la.
la source
bash, 78 octets (à l'aide d'un utilitaire BSD) ou 79 octets (non BSD également)
C'est un peu plus long que @DigitalTrauma et la belle solution bash de 71 octets de @ hvd, mais j'ai un peu aimé l'idée ici d'utiliser des nombres en base 60; Je suis curieux de savoir si quelqu'un peut jouer au golf un peu plus.
Avec l'utilitaire jot standard BSD:
Avec l'utilitaire seq plus universellement disponible:
L'idée est de générer les nombres de 0 à 83699 et d'utiliser dc pour les convertir en base 60. Les "chiffres" dans la sortie base-60 de dc sont des nombres à 2 chiffres de 00 à 59, avec des espaces séparant les "chiffres", donc cela répertorie toutes les heures souhaitées de 00 00 00 à 23 59 59 dans presque le format requis.
Si vous effectuez littéralement cela, cependant, les nombres inférieurs à 60 ^ 2 ne sont pas des nombres à 3 chiffres dans la base 60, donc le 00 ou 00 00 initial est manquant. Pour cette raison, je génère en fait les nombres de 60 ^ 3 à 60 ^ 3 + 83699; cela garantit que tous les nombres générés ont exactement 4 chiffres en base 60. C'est OK tant que je jette finalement le premier chiffre supplémentaire (01) qui n'est pas nécessaire.
Donc, une fois que les temps souhaités sont générés, je prends simplement chaque quadruple de 01 00 00 00 à 01 23 59 59, j'ajoute les trois derniers nombres et je soustrais l'argument $ 1. Si c'est 0, je prends alors tout dans le quadruple à partir du 3ème caractère (jetant le "01"), utilise tr pour convertir les espaces en deux-points et imprime le résultat.
la source
PowerShell , 91
97octets (y compris l'entrée)param($x)0..23|%{$h=$_;0..59|%{$m=$_;0..59|?{$h+$m+$_-eq$x}|%{"{0:0}:{1:00}:{2:00}"-f$h,$m,$_}}}
ou
param($x)0..23|%{$h=$_;0..59|?{($s=$x-$h-$_)-le59-and$s-ge0}|%{"{0:0}:{1:00}:{2:00}"-f$h,$_,$s}}
<\ s>Développé et commenté
NB: dépassé par la version de @ Briantist: /codegolf//a/105163/6776
la source