Le programme
On vous donne deux chaînes, A et B . A est la position actuelle à laquelle se trouve votre minuterie et B est la position à laquelle votre minuterie s'arrêtera. Les deux chaînes sont au format m: ss . Vous devez écrire un programme qui détermine le temps restant qui doit également être formaté en m: ss ou mm: ss .
Exemple
0:00 0:01 -> 0:01
0:55 1:00 -> 0:05
1:45 3:15 -> 1:30
:
s'agit d'une commande (données comme philosophie de code). Suis-je autorisé à utiliser des espaces à la place ou dois-je trouver une autre langue pour répondre à cela?01:30
une sortie valide? (leader zéro)Réponses:
Excel, 6 octets
En supposant que A est dans la cellule
A1
et B est dans la celluleB1
la source
|vy':¡
amorcé dans 05AB1E, rien que je puisse faire ... Je pense qu'Excel peut honnêtement gagner cela, rien d'autre n'analyse automatiquement ce format que je connais.45:45
A1 et22:22
B1, le résultat est23:23:00
Edit Nevermind - la valeur maximale attendue pour m est 9.MATL ,
177 octetsL'entrée est un tableau de cellules de chaînes, sous la forme
{'1:45' '3:15'}
ou{'1:45', '3:15'}
.Essayez-le en ligne!
Explication
la source
Bash + coreutils,
4439 octetsEssayez-le en ligne!
Explication: utilisation de "1:45 3:15" comme scénario de test (dernier exemple). Je montre les étapes intermédiaires entre guillemets.
Notez que je ne vérifie pas si la valeur des minutes nécessite un remplissage nul, car l'OP a déclaré que la valeur maximale pour
m
est 9.Ci-dessous est ma réponse originale de 44 octets, qui a utilisé la
date
commande pour transformer le temps total restant en secondes aum:ss
format.la source
Python 2,
90878380 octetsPrend entrée comme
"2:45","5:01"
.Essayez-le en ligne
la source
a,b=[60*int(s[-5:-3])+int(s[-2:])for s in input()]
print'%d:%02d'%divmod(b-a,60)
:)c, 86
Lit les temps séparés par des espaces depuis STDIN.
Essayez-le en ligne .
la source
Lot, 74 octets
Remplacer le
:
dans le temps par le*60+1
convertit en une expression qui calcule le nombre de secondes. Batch interprète les zéros non significatifs comme des octaux, donc je préfixe a1
aux secondes pour assurer la conversion décimale; heureusement, les deux1
s'annulent.la source
C,
112100 octetsMerci à @betseg pour avoir sauvé 11 octets et merci à @Johan du Toit pour avoir sauvé un octet!
Essayez-le en ligne!
la source
%s%d
avec%02d
et retirez le?:
. Essayez-le en ligne!scanf()
est votre ami pour la lecture de plusieurs entiers.MySQL,
1322 octetsattend les temps en
A
etB
.la source
Utilitaires Bash + GNU, 43
Essayez-le en ligne .
Explication
Notez que l'
dc
expression est divisée par 60, cardate
lit l'entrée comme H: MM au lieu de M: SS.la source
ECMAScript 6,
999185 octetsUne seule ligne:
Légèrement formaté:
Je pense qu'il pourrait y avoir des économies là-dedans .. mais je ne les vois pas pour le moment.
Modifier - excellentes suggestions dans les commentaires.
la source
s
.s.split(":")
, vous pouvez utiliser la nouvelle syntaxe:s.split<backtick>:<backtick>
.PHP,
5553 octetsprend l'entrée des arguments de ligne de commande
la source
<?=date('i:s',($x=strtotime)($argv[2])-$x($argv[1]));
C #, 72 octets
Prend l'entrée sous forme de chaînes.
b="3:15"
a="1:45"
.Explication:
Parce que
DateTime.Parse()
retourne une date auhh:mm:ss
format, je suis capable d'analyser le résultat dans une chaîne en utilisant+""
, puis de couper la fin:00
.Cela fonctionne avec
hh:mm
car il y a 60 secondes en une minute et 60 minutes en une heure.0:01
0:00
résultats0:01
1:00
0:55
résultats0:05
3:15
1:45
résultats1:30
la source
DateTime.Parse()
prend l'entrée - par exemple,1:45
- commehh:mm
et nonmm:ss
, résultant en la sortie de suivi - pour A1:45
et B3:15
-[01:30:00]
(hh:mm:ss
) ( même avecCultureInfo.InvariantCulture
spécifié ). Vous devrez peut-être ajouter un"0:" + a/b
lors de l'analyse.:00
.;
à la fin, vous pouvez utiliser le curry, c'esta=>b=>
-à- dire que vous devez entièrement vous qualifierDateTime
ou inclureusing System;
.Rebol, 5 octets
En supposant que je n'ai manqué aucune règle ..
Rebol a une arithmétique intégrée pour un certain nombre de types de données littérales. Cela vaut également pour ses descendants tels que Red
la source
Pyth,
47454440 octetsPrend l'entrée séparée par des retours à la ligne.
Pyth n'avait pas de temps intégré utiles pour cela. J'ai essayé des trucs fantastiques eval () mais apparemment Pyth ne peut pas évaluer les trucs avec
*
ou les zéros principaux. Cela est devenu beaucoup plus long que ce que j'espérais. Beaucoup d'octets sont dépensés pour ajouter un zéro de tête à la sortie. Au moins, je suis plus petit que bash. Ajoutera une explication si demandé.Essaye ça!
solution alternative, 48 octets
la source
Haskell,
9812786 octetsEssayez-le en ligne!
Mais je me demande s'il y a des fonctions de bibliothèque pour cela
EDIT: Suppression de l'importation, correction d'une erreur où il montrait m: s au lieu de m: ss
Aussi, version bien formatée:
EDIT2: Golfé (30?) Octets grâce à Laikoni! A également joué au golf quelques autres misc. octets.
la source
T-SQL, 238 octets
Usage:
En voyant l'exemple de PostGres plus tôt, je me suis rendu compte que je n'avais pas vu beaucoup de tentatives de golf en SQL, j'ai donc essayé de le faire en T-SQL. Maintenant, je sais pourquoi vous ne voyez pas beaucoup de golf en SQL: D
la source
CJam ,
343325 octets8 octets enregistrés grâce à Martin Ender!
Essayez-le en ligne!
Explication
la source
T-SQL, 82 octets
la source
Python, 160 octets
Je suis encore nouveau sur le golf de code, donc si quelqu'un a des suggestions, je l'apprécierais.
la source
raw_input()
.REXX, 79 octets
la source
Pyth, 28
Essayez-le .
Explication
la source
Java 7, 164 octets
Explication:
Code de test:
Essayez ici.
Sortie:
la source
TXR Lisp, 101 octets
Condensé:
(awk(:let(s"%M:%S"))((mf(time-parse s))(prn(time-string-local(-[f 1].(time-utc)[f 0].(time-utc))s))))
la source
Rubis , 91 octets
Essayez-le en ligne!
Prend l'entrée des arguments de ligne de commande.
Invocation:
Exemple:
Sortie:
la source
PowerShell 47 octets
Calcul simple de temps et conversion en chaîne d'heures et de secondes.
la source
JavaScript, 88 octets
Essayez-le en ligne!
Explication:
Divise les entrées sur les deux points
Convertit une chaîne en int
Obtient la valeur minute
Obtient la deuxième valeur
Renvoie la chaîne minutes: secondes
la source