Ce qui suit est inspiré d' une question posée sur Stack Overflow aujourd'hui .
Étant donné un certain nombre de microsecondes, 0 <= n <= 86400000000
(par exemple 12345678900
), sortir une chaîne formatée hh:mm:ss:000:000
, par exemple 03:25:45:678:900
.
0 -> '00:00:00:000:000'
12345678900 -> '03:25:45:678:900'
86400000000 -> '24:00:00:000:000'
J'ai une solution en Python en 209 octets, mais peut-elle aller plus bas?
hh:mm:ss.000000
aurait probablement été meilleur (et plus facile). Pourtant, je ne peux pas changer ça maintenant.Réponses:
Python 2,
8279 octetsConstruit la chaîne, itérant à travers une série de divmods. Le seul bit fantaisie est le
%7/2
, qui mappe1000 -> 3
et60 -> 2
.la source
Pyth, 31 octets
Essayez-le en ligne: Démonstration
Explication:
la source
Bash + coreutils, 61
La langue "mainstream" la plus courte à ce jour ...
Sortie de test:
la source
CJam,
37 3534 octetsC'est assez long .. Jouer au golf maintenant ..
MISE À JOUR: 1 octet enregistré grâce à @ Sp3000
Essayez-le en ligne ici
la source
C, 97 octets
Code de test:
la source
q (34)
Je suis sûr que ça peut être plus court
par exemple
la source
":"sv 0 8 11__[;8]15$2_($)"n"$1e3*
Julia,
1109695 octetsCela crée une fonction sans nom qui accepte un entier en entrée et renvoie une chaîne. Pour l'appeler, donnez-lui un nom, par exemple
f=t->...
.Non golfé + explication:
Exemples:
la source
C #,
179175 octetsLorsque vous avez des buildins à votre disposition, pourquoi ne pas les utiliser?
Avec un meilleur formatage:
la source
Excel,
6563 caractèresEn supposant que vos microsecondes soient en A1 :
Sortie:
la source
Perl,
14178 octets77 octets de code, +1 pour le
-n
drapeau. Courir avec:Merci à Thomas Kwa et à chilemagic d'avoir réduit de moitié la taille de mon code.
la source
3600000000
possible36e8
.chomp($n=<STDIN>);
vous pouvez l'exécuter en une ligne avec le-n
drapeau (qui compte pour 1 caractère). Vous n'avez pas non plus besoin deint(..)
chacun autour$_
. En appliquant également le conseil de Thomas, nous pouvons le faireecho 12345678900 | perl -ne'printf"%02d:%02d:%02d:%03d:%03d\n",$_/36e8,$_/6e7%60,$_/1e6%60,$_/1e3%1e3,$_%1e3'
et il pourrait même y avoir un moyen plus court aussi!\n
dans la chaîne de sortie. Vous pouvez également remplacer la chaîne par"%02d:"x3 ."%03d:%03d"
printf"%02d:%02d:%02d:%03d:%03d\n",$_/36e8,$_/6e7%60,$_/1e6%60,$_/1e3%1e3,$_%1e3
-à- dire que vous ajoutez ensuite un octet supplémentaire pour le-n
drapeau. Si vous avez utilisé-nle
par exemple, cela compterait comme 2 supplémentaires (pour len
et lel
). Vous obtenez le-
et lee
(ouE
si vous devez utilisersay
) gratuitement.Matlab - 88
89octetsObtention d'un octet avec une solution sans utiliser la fonction intégrée:
Créez une fonction en ligne qui prend un argument d'entrée numérique
t
et renvoie une chaîne.il utilise une combinaison vectorisée de
fix
etmod
pour séparer les éléments de temps, puis affiche.c'est un peu frustrant que le formatage de la chaîne de sortie prenne autant, plus que les calculs eux-mêmes ...
Tester:
Version 89 octets:
Il divise le nombre, utilise une fonction intégrée pour la partie hh: mm: ss, qui ne peut pas traiter les microsecondes, donc la chaîne est complétée par la combinaison de
fix
et lesmod
opérationsla source
JavaScript (ES6),
128118116111 octetsIl y a probablement un certain potentiel de golf là-dedans.
Démo
C'est ES6 donc Firefox uniquement, pour l'instant de toute façon:
la source
C,
113103105 105 octetsEDIT: bousculé quelques octets supplémentaires
CORRECTIF: suppression du type long, grâce à un utilisateur
Pas la réponse la plus courte en C, mais je me suis amusé avec les retours chariot, donc je me sentais comme si quelqu'un pouvait aimer ça.
Appelez ça comme:
la source
CoffeeScript, 127 octets
A adopté l'approche dans la réponse d'ASCIIThenANSI . Il est dommage que l' API de la console JavaScript n'ait pas d'espace réservé au format pour les nombres de remplissage.
la source
Powershell, 153
Usage
la source
F #,
111 92102 octetsPremière itération: idée de base.
Deuxième itération: constantes plus petites
Troisième itération: formatage correct pour les portions à un chiffre.
Notez que cette fonction doit recevoir un int64 pour fonctionner.
Exemples de sorties:
la source
PHP -
115102 octetsUne solution en 155 octets (enveloppée ici sur 3 lignes pour plus de lisibilité):
La deuxième ligne calcule (de l'intérieur vers l'extérieur) les valeurs exactes des composants en commençant par les microsecondes.
La version plus courte (115 octets, sur deux lignes pour plus de lisibilité):
Il utilise également des affectations intégrées pour calculer la conversion du nombre d'entrée de microsecondes en millisecondes, secondes, minutes et heures à l'aide de nombres à virgule flottante. L'opérateur de module (
%
) et le format de nombre décimal (%d
) deprintf()
sont ensuite utilisés pour les forcer à des nombres entiers (la partie fractionnaire est ignorée).Une autre solution qui utilise les fonctions de date (102 octets)
La partie heures: minutes: secondes est gérée par les fonctions de date PHP
gmdate()
etstrtotime()
les milli- et micro-secondes sont extraites sous forme de chaînes de la valeur d'entrée.Usage:
la source
Java, 215 octets
La méthode
f
effectue des calculsn
pour calculer les heures, les minutes, etc. et délègue à la méthodep
pour formater correctement chaque valeur.Formaté:
Usage:
la source
Rubis - 82 octets
la source