O programa
Você é dado duas cordas, A e B . A é a posição atual em que seu cronômetro está e B é a posição em que seu cronômetro irá parar. Ambas as strings estão no formato m: ss . Você deve escrever um programa que determine a quantidade de tempo restante, que também deve ser formatada como m: ss ou mm: ss .
Exemplo
0:00 0:01 -> 0:01
0:55 1:00 -> 0:05
1:45 3:15 -> 1:30
:
é um comando (dados como filosofia do código). Em vez disso, posso usar espaços ou preciso encontrar outro idioma para responder a isso?01:30
saída válida? (zero inicial)Respostas:
Excel, 6 bytes
Supondo que A esteja na célula
A1
e B esteja na célulaB1
fonte
|vy':¡
inicializado em 05AB1E, nada que eu possa fazer ... Acho que o Excel pode honestamente vencer isso, nada mais analisa automaticamente esse formato que eu conheço.45:45
em A1 e22:22
em B1, em seguida, o resultado é23:23:00
Editar de Nevermind - valor esperado max para m é 9.MATL ,
177 bytesEntrada é uma matriz de células de cadeias, no formato
{'1:45' '3:15'}
ou{'1:45', '3:15'}
.Experimente online!
Explicação
fonte
Bash + coreutils,
4439 bytesExperimente online!
Explicação: usando "1:45 3:15" como caso de teste (último exemplo). Mostro etapas intermediárias entre aspas.
Observe que eu não verifico se o valor minuto precisa de preenchimento zero, porque o OP afirmou que o valor máximo para
m
9 é 9.Abaixo está minha resposta original de 44 bytes, que usou o
date
comando para transformar o tempo total restante em segundos nom:ss
formato.fonte
Python 2,
90878380 bytesToma entrada como
"2:45","5:01"
.Experimente online
fonte
a,b=[60*int(s[-5:-3])+int(s[-2:])for s in input()]
print'%d:%02d'%divmod(b-a,60)
:)c, 86
Lê tempos separados por espaço de STDIN.
Experimente online .
fonte
Lote, 74 bytes
Substituir o
:
tempo por*60+1
converte-o em uma expressão que calcula o número de segundos. O lote interpreta zeros à esquerda como octal, portanto, prefiro1
a aos segundos para garantir a conversão decimal; felizmente os dois se1
cancelam.fonte
C,
112100 bytesAgradecemos a @betseg por salvar 11 bytes e a @Johan du Toit por salvar um byte!
Experimente online!
fonte
%s%d
com%02d
e retire a?:
. Experimente online!scanf()
é seu amigo por ler vários números inteiros.MySQL,
1322 bytesespera os horários em
A
eB
.fonte
Utilitários Bash + GNU, 43
Experimente online .
Explicação
Observe que a
dc
expressão divide por 60, porquedate
lê a entrada como H: MM em vez de M: SS.fonte
ECMAScript 6,
999185 bytesÚnica linha:
Ligeiramente formatado:
Eu sinto que poderia haver algumas economias lá .. mas eu não as estou vendo no momento.
Editar - excelentes sugestões nos comentários.
fonte
s
.s.split(":")
, você pode usar a nova sintaxe:s.split<backtick>:<backtick>
.PHP,
5553 bytesrecebe entrada dos argumentos da linha de comando
fonte
<?=date('i:s',($x=strtotime)($argv[2])-$x($argv[1]));
C #, 72 bytes
Recebe entrada como strings.
b="3:15"
a="1:45"
.Explicação:
Como
DateTime.Parse()
retorna uma Data nohh:mm:ss
formato, sou capaz de analisar o resultado em uma string usando e+""
, em seguida, aparar a trilha:00
.Isso funciona
hh:mm
porque existem 60 segundos em um minuto e 60 minutos em uma hora.0:01
0:00
retorna0:01
1:00
0:55
retorna0:05
3:15
1:45
retorna1:30
fonte
DateTime.Parse()
está aceitando a entrada - por exemplo1:45
- comohh:mm
e nãomm:ss
, resultando na saída a seguir - para A1:45
e B3:15
-[01:30:00]
(hh:mm:ss
) ( mesmo com oCultureInfo.InvariantCulture
especificado ). Pode ser necessário adicionar um"0:" + a/b
ao analisar.:00
.;
no final, você pode usar currya=>b=>
, ou seja , você precisa se qualificarDateTime
ou incluir totalmenteusing System;
.Rebol, 5 bytes
Supondo que não perdi nenhuma regra ..
O Rebol possui aritmética embutida para vários tipos de dados literais. Isso também se aplica a seus descendentes, como Red
fonte
Pyth,
47454440 BytesSepara a entrada por novas linhas.
Pyth não tinha tempo embutido útil para isso. Eu tentei algumas coisas sofisticadas de eval (), mas aparentemente Pyth não pode avaliar coisas com
*
ou quaisquer zeros à esquerda. Isso ficou muito mais tempo do que eu esperava. Alguns bytes são gastos na adição de um zero inicial à saída. Pelo menos eu sou mais baixo que o bash. Adicionará explicação, se solicitado.Tente isso!
solução alternativa, 48 bytes
fonte
Haskell,
9812786 bytesExperimente online!
Mas eu me pergunto se existem algumas funções de biblioteca para isso
Edição: Removida importação, também corrigiu um erro em que mostrava m: s em vez de m: ss
Além disso, versão bem formatada:
EDIT2: Golfed fora (30?) Bytes graças a Laikoni! Também jogou golfe em outras misc. bytes.
fonte
T-SQL, 238 bytes
Uso:
Vendo o exemplo do PostGres anteriormente, percebi que não havia visto muitas tentativas de golfe no SQL, então tentei no T-SQL. Agora eu sei por que você não vê muito golfe no SQL: D
fonte
CJam ,
343325 bytesEconomizou 8 bytes graças a Martin Ender!
Experimente online!
Explicação
fonte
T-SQL, 82 bytes
fonte
Python, 160 bytes
Ainda sou novo no código de golfe, portanto, se alguém tiver alguma sugestão, eu agradeceria.
fonte
raw_input()
.REXX, 79 bytes
fonte
Pyth, 28
Experimente .
Explicação
fonte
Java 7, 164 bytes
Explicação:
Código do teste:
Experimente aqui.
Saída:
fonte
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))))
fonte
Ruby , 91 bytes
Experimente online!
Recebe entrada dos argumentos da linha de comando.
Invocação:
Exemplo:
Saída:
fonte
PowerShell 47 bytes
Matemática simples de intervalo de tempo e abrangendo a seqüência de horas e segundos.
fonte
JavaScript, 88 bytes
Experimente online!
Explicação:
Divide as entradas nos dois pontos
Converte string em int
Obtém o valor minuto
Obtém o segundo valor
Retorna a string minutes: seconds
fonte