Défi
Écrivez le code le plus court qui peut additionner toutes les durées de temps qui apparaissent dans le stdin. Le programme ne doit considérer que les chaînes qui correspondent à l'un des modèles suivants et ignorer le reste.
HH:MM:SS (it will be interpreted as HH hours, MM minutes and SS seconds)
H:MM:SS (it will be interpreted as H hours, MM minutes and SS seconds)
MM:SS (it will be interpreted as MM minutes, SS seconds)
M:SS (it will be interpreted as M minutes, SS seconds)
exemples de chaînes qui correspondent aux modèles énumérés:
12:00:01
2:03:22
00:53
9:13
La sortie doit être de la forme
HHh MMm SSs (that means HH hours, MM minutes and SS seconds with non-zero-padding)
Exemple
STDIN
Visionnez la vidéo de bienvenue.
Vidéo: 10:37 min.
Visionnez la vidéo d'introduction au cours.
Vidéo: 3h30 min. Visionnez la vidéo expliquant comment utiliser l'aperçu de la leçon.
Vidéo: 9:13 min.
Visionnez la présentation vidéo de l'utilisation du système Epsilen pour partager votre travail.
Vidéo: 03:15 min.
Visionnez la vidéo pour en savoir plus sur l'évaluation de l'état de préparation scolaire de l'État du Texas (STAAR).
Vidéo: 1:05:26 min.
STDOUT
1h 32m 1s
la source
10:4:56
? Selon les spécifications actuelles, elles doivent être traitées comme4m 56s
, une partie10
sera ignorée. Même question à propos de10:12:7
ce que cela signifie10m 12s
avec l'ignorance de7
? Ou la gestion de telles chaînes peut-elle être définie par l'implémentation?1h 19m 18s
la sortie?37+30+13+15+26==121
,10+3+9+3+5==30
,1==1
, Donc je pense1h 32m 01s
. Quel est le problème dans cette logique? De plus, un tel format de sortie est celui qui est attendu, n'est-ce pas?Réponses:
Pyth 105
Essayez-le en ligne.
Cela nécessite une entrée de STDIN de la même manière que la réponse Javascript, comme un texte cité avec des retours à la ligne comme
\n
s.Échantillon:
Production
Exemple de travail avec des dates plus étranges:
Production
(Seuls le 10:10 et le 1:10 sont des temps légitimes)
La raison principale pour laquelle cela est si long est que Pyth ne vous permettra pas d'extraire des correspondances positives. Cela correspond à la place à tout ce qui n'est pas une heure valide et le remplace par un caractère espace. Ensuite, le fractionnement sur des espaces ne laisse que des temps et des nombres capricieux. Les nombres excédentaires sont supprimés en vérifiant les
:
caractères, qui auront été supprimés des périodes non valides. Cela pourrait certainement être approfondi;)la source
Javascript ES6, 138 caractères
Fonction, 139
Prend la chaîne comme argument et écrit la sortie sur la console:
Programme, 138
Test de fonction
Production
la source
JavaScript, ES6,
208 200197 octetsJe sais que c'est super long, mais je voulais explorer les dernières fonctionnalités d'ES6, inverser, réduire la carte, les fonctions fléchées et la compréhension du tableau (opérateur d'étalement).
Exécutez simplement l'extrait dans un dernier Firefox.
Comment ça marche (un peu golfé)
la source
Bash (avec grep, sed, awk et date): 124 octets, 120 octets
Il suffit de diriger le texte dans ceci:
Comment ça fonctionne
0123456789:
la source
Perl -
228201Il se trouve que c'est le même algorithme que l'Optimizer (grep, split, reverse, add).
Je ne suis pas un expert Perl, donc le nombre d'octets peut être réduit.
Non golfé
la source
my
mots clés).Rebol - 174
Non golfé + annoté:
Rebol est livré avec son propre
time!
type de données. Vous pouvez voir comment le code ci-dessus utilise cela à partir de l'exemple ci-dessous (à partir de la console Rebol):la source
Groovy - 195
Je ne peux pas comprendre comment le compresser davantage.
Non golfé
la source
Mathematica 300 caractères
Ce petit exercice a pris beaucoup de code, même pour Mathematica. Il existe certainement des moyens plus efficaces de le faire.
Golfé
En supposant que l'entrée est stockée dans
txt
,Comment cela fonctionne (en utilisant du code non golfé):
1-Trouvez les temps.
2-Découpez en heures, minutes, secondes
3-Additionnez les temps. Les objets temps sont des heures d'horloge. La soustraction d'un objet temporel d'un autre renvoie une durée, dans ce cas 92,0167 minutes.
QuantityMagnitude
supprime l'unité de mesure.4-Convertir 92,0167 minutes en heures, minutes, secondes.
la source
Perl, 146
Mon entrée imprime la sortie avec un espace de fin - j'espère que c'est ok
Si nous pouvons supposer qu'il n'y aura qu'une seule fois par ligne d'entrée, nous pouvons couper 4 caractères:
Ceux-ci fonctionnent en accumulant le nombre total de secondes écoulées et en formatant cette valeur par la suite.
la source