El programa
Se le da dos cadenas, A y B . A es la posición actual en la que se encuentra su temporizador, y B es la posición en la que se detendrá su temporizador. Ambas cadenas tienen el formato m: ss . Debe escribir un programa que determine la cantidad de tiempo restante que también debe formatearse como m: ss o mm: ss .
Ejemplo
0:00 0:01 -> 0:01
0:55 1:00 -> 0:05
1:45 3:15 -> 1:30
:
es un comando (datos como filosofía de código). ¿Puedo usar espacios en su lugar o necesito encontrar otro idioma para responder esto?01:30
salida válida? (cero a la izquierda)Respuestas:
Excel, 6 bytes
Asumiendo que A está en la celda
A1
y B está en la celdaB1
fuente
|vy':¡
bootstrapped en 05AB1E, nada que pueda hacer ... Creo que Excel puede ganar esto honestamente, nada más analiza automáticamente ese formato que conozco.45:45
22:22
23:23:00
MATL ,
177 bytesLa entrada es una matriz de celdas de cadenas, en forma
{'1:45' '3:15'}
o{'1:45', '3:15'}
.Pruébalo en línea!
Explicación
fuente
Bash + coreutils,
4439 bytesPruébalo en línea!
Explicación: usando "1:45 3:15" como caso de prueba (último ejemplo). Muestro pasos intermedios entre comillas.
Tenga en cuenta que no verifico si el valor minuto necesita cero relleno, porque el OP declaró que el valor máximo para
m
9.A continuación se muestra mi respuesta original de 44 bytes, que usaba el
date
comando para convertir el tiempo total restante en segundos alm:ss
formato.fuente
Python 2,
90878380 bytesToma entrada como
"2:45","5:01"
.Pruébalo en línea
fuente
a,b=[60*int(s[-5:-3])+int(s[-2:])for s in input()]
print'%d:%02d'%divmod(b-a,60)
:)c, 86
Lee tiempos separados por espacios de STDIN.
Pruébalo en línea .
fuente
Lote, 74 bytes
Reemplazar el
:
en el tiempo con lo*60+1
convierte en una expresión que calcula el número de segundos. Batch interpreta los ceros a la izquierda como octales, así que antepongo a1
a los segundos para asegurar la conversión decimal; Afortunadamente, los dos se1
cancelan.fuente
C,
112100 bytes¡Gracias a @betseg por guardar 11 bytes y gracias a @Johan du Toit por guardar un byte!
Pruébalo en línea!
fuente
%s%d
con%02d
y eliminar el?:
. Pruébalo en línea!scanf()
es tu amigo para leer múltiples enteros.MySQL,
1322 bytesespera los tiempos en
A
yB
.fuente
Bash + GNU utilidades, 43
Pruébalo en línea .
Explicación
Tenga en cuenta que la
dc
expresión se divide por 60, porquedate
lee la entrada como H: MM en lugar de M: SS.fuente
ECMAScript 6,
999185 bytesLinea sola:
Ligeramente formateado:
Siento que podría haber algunos ahorros allí ... pero no los estoy viendo en este momento.
Editar: excelentes sugerencias en los comentarios.
fuente
s
.s.split(":")
, puede utilizar la nueva sintaxis:s.split<backtick>:<backtick>
.PHP,
5553 bytestoma datos de los argumentos de la línea de comandos
fuente
<?=date('i:s',($x=strtotime)($argv[2])-$x($argv[1]));
C #, 72 bytes
Toma la entrada como cadenas.
b="3:15"
a="1:45"
.Explicación:
Debido a que
DateTime.Parse()
devuelve una fecha enhh:mm:ss
formato, puedo analizar el resultado en una cadena usando+""
, luego recortar el final:00
.Esto funciona
hh:mm
porque hay 60 segundos en un minuto y 60 minutos en una hora.0:01
0:00
devoluciones0:01
1:00
0:55
devoluciones0:05
3:15
1:45
devoluciones1:30
fuente
DateTime.Parse()
está tomando la entrada, por ejemplo,1:45
comohh:mm
y nomm:ss
, lo que resulta en la siguiente salida, para A1:45
y B3:15
-[01:30:00]
(hh:mm:ss
) ( incluso con laCultureInfo.InvariantCulture
especificada ). Es posible que"0:" + a/b
deba agregar un al analizar.:00
.;
final, puede usar currya=>b=>
, es decir , debe calificarDateTime
o incluir por completousing System;
.Rebol, 5 bytes
Asumiendo que no me perdí ninguna regla ...
Rebol tiene aritmética incorporada para varios tipos de datos literales. Esto también se aplica a sus descendientes como Red
fuente
Pyth,
47454440 BytesToma la entrada separada por nuevas líneas.
Pyth no tenía incorporaciones de tiempo útiles para esto. Intenté algunas cosas elegantes de eval (), pero aparentemente Pyth no puede evaluar cosas con
*
ceros iniciales ni ningún otro. Esto se hizo mucho más largo de lo que esperaba. Se gastan algunos bytes en agregar un cero inicial a la salida. Al menos soy más bajo que bash. Agregará explicación si se le solicita.¡Prueba esto!
solución alternativa, 48 bytes
fuente
Haskell,
9812786 BytesPruébalo en línea!
Pero me pregunto si hay algunas funciones de biblioteca para esto
EDITAR: Se eliminó la importación, también se corrigió un error donde mostraba m: s en lugar de m: ss
Además, versión bien formateada:
EDIT2: Golfed (30?) Bytes gracias a Laikoni! También golf algunos otros misceláneos. bytes
fuente
T-SQL, 238 bytes
Uso:
Al ver el ejemplo de PostGres anteriormente, me di cuenta de que no había visto muchos intentos de golf en SQL, así que lo intenté en T-SQL. Ahora sé por qué no ves mucho golf en SQL: D
fuente
CJam ,
343325 bytes¡Ahorró 8 bytes gracias a Martin Ender!
Pruébalo en línea!
Explicación
fuente
T-SQL, 82 bytes
fuente
Python, 160 bytes
Todavía soy nuevo en el código de golf, así que si alguien tiene alguna sugerencia, lo agradecería.
fuente
raw_input()
.REXX, 79 bytes
fuente
Pyth, 28
Intentalo .
Explicación
fuente
Java 7, 164 bytes
Explicación:
Código de prueba:
Pruébalo aquí.
Salida:
fuente
TXR Lisp, 101 bytes
Condensado:
(awk(:let(s"%M:%S"))((mf(time-parse s))(prn(time-string-local(-[f 1].(time-utc)[f 0].(time-utc))s))))
fuente
Ruby , 91 bytes
Pruébalo en línea!
Toma información de los argumentos de la línea de comandos.
Invocación:
Ejemplo:
Salida:
fuente
PowerShell 47 Bytes
Matemáticas simples de intervalo de tiempo y conversión a una secuencia de hora y segundos.
fuente
JavaScript, 88 bytes
Pruébalo en línea!
Explicación:
Divide las entradas en el colon
Convierte una cadena a int
Obtiene el valor minuto
Obtiene el segundo valor
Devuelve la cadena minutos: segundos
fuente