Para esse desafio, estamos escrevendo o horário da seguinte forma: hh:mm:ss
Alguns exemplos:
12:34:08
06:05:30
23:59:00
O desafio é produzir o tempo após decorridas horas , minutos e segundos , com o tempo de início 00:00:00
. Você pode comparar isso com um cronômetro iniciado em 00:00:00
.
Aqui está um exemplo de entradas (usando STDIN ) e saídas:
Input: 1h20m5s
Output: 01:20:05
Input: 0h100m0s
Output: 01:40:00
Após 24 horas, o cronômetro se redefine:
Input: 25h0m0s
Output: 01:00:00
A forma de entrada é sempre a mesma: XhYmZs
com X
horas, Y
minutos e Z
segundos (assumir que X
, Y
e Z
são números inteiros inferior a 100000 e nunca negativo)
Isso é código-golfe , então a menor quantidade de bytes vence esse desafio
Respostas:
CJam, 34 bytes
Experimente aqui .
fonte
Ruby -
1311151079784 bytesEu ainda estou jogando golfe.
Obrigado por @Doorknob por / \ w / inshead de / h | m | s /
fonte
gets.tr('ms',?h).split(?h)
->gets.split(/\w/)
.Mathematica,
133116112111 bytesfonte
Python 2,
138126 bytesAgora eu estou usando regex, ainda muito tempo ..
A entrada deve estar entre aspas.
fonte
C
149112 bytesTeste aqui
Créditos ao @Dennis por se livrar muito disso.
fonte
main(h,m,s){scanf("%dh%dm%ds",&h,&m,&s);s+=h*3600+m*60;m=s/60;h=m/60;printf("%02d:%02d:%02d",h%24,m%60,s%60);}
(110 bytes, lê STDIN)h,m,s;main()
deve ser mais portátil.main(h,m,s)
trabalha com o GCC ( link )m=s/60;h=m/60;
? Depois disso, você pode se livrar dos+=
também.JavaScript 110 bytes
Onde x é a entrada
Eu não acho que essa é a maneira mais eficiente
fonte
PHP, 80
8893Bytes(salvo como ISO-8859-1)
Funciona apenas no PHP 5 por causa da
split
função obsoleta . Supõe que os avisos não sejam mostrados.Como funciona:
¤—’¢
é"[hm]"
invertido e um nome constante válido, o PHP usa constantes indefinidas como string (salva um caractere entre aspas)·Å–ÅŒ
é o mesmo para"H:i:s"
<?=x,y
produz x e y. Usando!
, o resultado da$s
atribuição é convertido em booleano e negado, depois convertido em string para saída.(string)false === ''
split("[hm]", "XhYmZs")
divide a string em[X,Y,Zs]
. Então,3600*X+60*Y+Zs
é o número de segundos. PHP converteZs
em número inteiro comoZ
date(Z)
, usamos esse resultado como carimbo de data e hora e imprimimos sua parte do tempo como "horas: minutos: segundos". No UTC (deslocamento 0), o registro de data0
e hora é1970/01/01 00:00:00
. Subtrair o deslocamento do fuso horário normaliza a data como UTC sem alterar o fuso horário realmente usado (isso economizou 8 bytes para definir o fuso horário).fonte
AutoIt, 208 bytes
Demasiado longo. Teste:
fonte
Pitão, 40 bytes
Eu ainda estou aprendendo. Experimente aqui!
fonte
Perl 5, 84 (83 bytes + 1)
Usa o excesso de segundos ou minutos.
Teste
fonte
VBA (
150149 bytes)fonte
msgbox
como saída, poderá alterar para aSub
e salvar 2 bytes. Você pode também Golf afastado todo o espaço em branco desnecessários ao redor do=
e depois de cada,
derrubá-lo em torno de 134.JavaScript, 97 bytes
fonte
Invalid left-hand side in assignment
PowerShell, 84 bytes
Divide a entrada da linha de comandos em uma matriz de cadeias de caracteres com base no
[hms]
regex. Usa a função interna detalhada.AddSeconds()
para adicionar (horas * 3600, minutos * 60 e segundos) a(date 0)
/ k / aMonday, January 1, 0001, 12:00:00 AM
, e depois alimenta isso-f
com formataçãoHH:mm:ss
que a converterá automaticamente no formato de relógio de 24 horas e a produzirá.Exemplo:
fonte
Lua, 104 bytes
fonte
VB.NET (107 bytes)
Primeiro envio para o código de golfe, então acho que a contagem de caracteres => contagem de bytes?
fonte
Python 3, 158
Versão não destruída:
fonte
CJam, 50 bytes
fonte
GNU sed + data, 51 bytes
(incluindo +1 byte para
-r
sinalizador)Isso simplesmente
date
adiciona o número especificado de horas, minutos e segundos a00:00:00
(hoje) e exibe a parte do tempo. Recomendado para configurarTZ=UTC
ou evitar a execução do programa em torno de uma alteração na hora local (por exemplo, horário de verão).fonte