Format de temps de jeu incrémentiel
Objectif
Les jeux incrémentiels ont souvent un compte à rebours exprimant les jours, les heures, les minutes et les secondes jusqu'à ce qu'une tâche soit terminée. Selon l'espace disponible, ils peuvent être formatés comme:
2d 13h
23h 59m 48s
14m
3h 0m 0s
Le but de ce code golf est d'écrire une fonction ou un programme qui effectue ce formatage.
Contributions
- Le nombre total de secondes.
- Le nombre maximum de segments à sortir.
Production
- Les segments comprennent:
- 0 semaines
- 0 jours
- 0h heures
- 0m minutes
- 0 s secondes
- Chaque segment est séparé par un seul espace.
- Les segments affichés doivent être contigus. Par exemple, vous n'afficherez pas les heures et les secondes sans afficher les minutes, même s'il n'y a aucune minute.
- Les valeurs à un chiffre n'ont pas de zéros en tête, bien qu'une valeur de zéro doive être indiquée comme
0
. - Les valeurs sont arrondies vers le bas.
- Le premier segment affiché est la première valeur non nulle.
Cas de test
seconds segments output
0 1 0s
123 1 2m
123 2 2m 3s
123 3 2m 3s
82815 3 23h 0m 15s
307891 2 3d 13h
307891 4 3d 13h 31m 31s
604800 1 1w
604800 6 1w 0d 0h 0m 0s
Gagnant
La solution de comptage d'octets la plus basse en une semaine gagnera "l'acceptation".
Modifications
- Clarifié quel segment est le premier, comme indiqué dans les exemples.
- Cas de test 4 ajouté selon la demande.
307891 1
?0w
ou1w
.3d
? "Le premier segment affiché est la première valeur non nulle"Réponses:
CJam (instantané),
4138 octetsCe qui précède utilise la notation caret, car deux des caractères ne sont pas imprimables.
Merci à @ Sp3000 pour avoir joué au golf sur 2 octets.
Essai
La dernière version stable (0.6.5) a un bogue qui peut provoquer
{}#
le retour d'entiers au lieu de Longs. Paradoxalement, cela peut être contourné en effectuant un transtypage en entier (i
).Pour exécuter cela avec du code avec l'interpréteur en ligne, cliquez sur ce permalien ou copiez le code de cette pâte .
Vous pouvez également télécharger et créer le dernier instantané en exécutant les commandes suivantes:
Vous pouvez créer le fichier CJam comme ceci:
Comment ça fonctionne
la source
Java,
197191 octetsJe viens de remarquer que Java prend en charge la déclaration comme
String a[]
. Cela m'a permis de tirer la déclaration deb
etz
dans la même ligne, ce qui m'a évité d'écrire àString
nouveau.la source
;z=" ")
- très intelligent.C,
134127110104103 103 octetsNouvelle version:
La version précédente:
la source
Pyth,
3943 octetsedit: +4 caractères, car j'ai oublié le
0s
cas de test.Cela comprend 2 caractères non imprimables. Obtenez le code réel et essayez-le en ligne: Démonstration
Explication:
la source
Python 2.7 -
181178174 octetsMa première tentative de jouer au golf.
la source
if n!=0
à justeif n
.Julia, 158 octets
Je suis sûr que cela pourrait être plus court avec une approche plus intelligente, mais c'est ce que j'ai pour l'instant.
Cela crée une fonction sans nom qui accepte deux entiers en entrée et renvoie une chaîne. Pour l'appeler, donnez-lui un nom, par exemple
f=(s,g)->...
.Non golfé + explication:
Exemples:
la source
Scala, 147 octets
la source
rs , 367 octets
Démo en direct et tous les cas de test.
Désordre, désordre, désordre ...
Prend environ 3 à 7 secondes pour exécuter les cas de test sur Chrome pour Android. N'utilisez pas le mode débogage, qui peut geler votre navigateur dans ce cas en raison de toute la sortie qui serait imprimée.
la source
C #,
239 237 170164 octetsCe n'est pas aussi compact que d'autres solutions, mais je ne peux pas poser ce défi sans m'y attaquer moi-même.
Cette dernière itération a été inspirée par la réponse de ESC .
En retrait pour plus de clarté:
la source