Eu estou com fome. Vamos microondas alguma coisa. Dada uma entrada numérica entre 1 e 4 dígitos, produza o número de segundos que o microondas deve funcionar.
Detalhes
O truque é descobrir se o usuário está inserindo segundos ou uma combinação de segundos e minutos. Os locais das dezenas e dezenas devem ser interpretados como segundos e as centenas e milhares de locais devem ser minutos. Por exemplo, o valor 1234
deve ser interpretado como 12 minutos, 34 segundos e 9876
deve ser 98 minutos, 76 segundos. Digitando 130
e 90
ambos devem resultar em um tempo de cozedura de 90 segundos.
Aqui estão algumas outras entradas e saídas:
- 1 = 1
- 11 = 11
- 111 = 71
- 1111 = 671
- 9 = 9
- 99 = 99
- 999 = 639
- 9999 = 6039
Regras
Isso é código-golfe , então o programa mais curto em bytes vence. As brechas padrão não são permitidas. A entrada vencedora deve retornar a resposta correta quando receber uma entrada inteira de 1 a 9999.
9876
?190
?Respostas:
Python 2 , 19 bytes
Experimente online!
fonte
Japonês , 6 bytes
Teste online!
ìL
converte em base-100 eì60
volta a base 60, resultando emfloor(n/100)*60 + n%100
. Também funciona com horas (10000 -> 3600
, o número de segundos em uma hora).fonte
C, C ++, Java, C #, D: 36 bytes
D: 35 bytes
C: 28 bytes
Primeira vez que tenho uma resposta curta!
D pode ter uma otimização especial por causa do sistema de modelos de golfe:
C tem uma otimização especial com o int implícito:
Código a testar
Em C (tem que incluir
stdio.h
):Link TIO
Em C ++ (tem que incluir
iostream
):Experimente online!
Em Java :
Experimente online!
Em c #
Em D (tem que importar
std.stdio
) (exatamente, eu não tenho idéia de como usar matrizes em D):Link TIO
fonte
foreach
em D, eu esqueci como usá-lo, infelizmente)Pitão -
98 bytesConverte a entrada na base 100 e a interpreta como um número base 60.
Conjunto de Teste .
fonte
TI-Basic (série 83), 8 bytes
Requer o SO versão 1.15 ou superior.
fonte
dc , 10 bytes
Experimente online!
Explicação: em dc quando você pressiona sth. na pilha vai por cima
fonte
Bash bc + sed,
3028 bytes-2 bytes graças a @seshoumara .
Experimente online!
Recebe entrada de stdin. Adotou uma abordagem mais criativa: insere
*60+
antes dos últimos 1 ou 2 dígitos e precede0
a ao início para contabilizar entradas com apenas 1 ou 2 dígitos. O resultado é então passado parabc
.fonte
-r
e usar\?
, poderá perder 2 bytes.C (gcc) , 50 bytes
Experimente online!
fonte
f(t){return t%100+t/100*60;}
. É permitido que as funções recebam entrada como argumentos e produzam através de seus valores de retorno.f(i,x){x=i/100*60+i%100;}
f(i,x){x=i-i/100*40;}
Perl 5, 15 + 1 (-p) bytes
Experimente online
fonte
Java 8, 13 bytes
Porto da incrível fórmula Python 2 do @ovs .
Experimente aqui.
fonte
JavaScript, 21 bytes
Experimente online!
fonte
J , 12 bytes
É a solução Python 2 da ovs, expressa em J. Consiste em um gancho e um garfo:
Experimente online!
fonte
60#.0 100#:]
.Lote, 23 bytes
fonte
Haskell , 18 bytes
Experimente online!
Porto Anotha.
Solução sem ponto, 21 bytes
fonte
Labirinto , 19 bytes
Experimente online!
Explicação
O IP atinge um beco sem saída e começa a retroceder. Quando chega ao
/
, tenta uma divisão por zero que finaliza o programa.fonte
Gelatina , 5 bytes
Como um link monádico (obrigado pelo alerta, caird!):
Experimente online!
... Ou como um programa completo:
Isso pode ser portado facilmente para 05AB1E, portanto:
05AB1E , 5 bytes
Experimente online!
Simplesmente converte o número inteiro de entrada na base 100 e depois converte o resultado da base 60 em número inteiro. Portanto, é equivalente a % de entrada 100 + 60 * Entrada / 100
fonte
Excel VBA, 29 bytes
Função de janela imediata VBE anônima que leva a entrada do intervalo
[A1]
e sai para a janela imediata VBE.fonte
APL (Dyalog) ,
1110 bytesExperimente online!
Quão?
0 100⊤
- codifique na base 100, parando no segundo LSB, produzindo efetivamenten ÷ 100, n % 100
.60⊥
- decodificar na base 60fonte
PARI / GP , 16 bytes
Direto:
Infelizmente, esse bom método é simplesmente muito longo para usar:
fonte
Pushy ,
109 bytesKevin me superou no meu próprio idioma ... (usando a abordagem da resposta dos ovs )
Experimente online!
10 bytes
Experimente online!
11 bytes
Por mais um byte, podemos usar a
Input % 100 + 60 * ⌊Input / 100⌋
abordagem:Experimente online!
fonte
2dH/40*-#
. Nunca programado em Pushy antes, mas parece uma linguagem bem legal. :)05AB1E , 9 bytes
Experimente online!
Explicação:
Provavelmente há algum truque com conversões básicas que pode ser alcançado em 05AB1E, mas não consegui encontrá-lo.
fonte
bash, 20 bytes
Experimente online
fonte
Retina , 11 bytes
Experimente online!
Entrada e saída em unário . O conjunto de testes converte de e para decimal por conveniência.
Fazer esse tipo de conversão de base por apenas dois dígitos é surpreendentemente simples de ser realizado. Apenas combinamos séries de 100 se
1
as substituímos por 601
s. Tudo o que sobrar corresponderia aos dois últimos dígitos na representação decimal e permanecerá inalterado.fonte
Alice , 19 bytes
Experimente online!
Explicação
Pena que eu removi o divmod do idioma, eu acho ...
Essa é apenas a estrutura usual para programas lineares com E / S decimal operando puramente no modo Cardinal (aritmético).
fonte
Via Láctea , 10 bytes
uso:
./mw code.mwg -i 9999
Explicação:
fonte
R , 21 bytes
Experimente online!
fonte
scan
respostas, já que a maioria das respostas assume que a variável já está definida.Lisp comum, 34 bytes
Experimente online!
Outra porta da fórmula @ovs .
fonte
REXX, 25 bytes
(Apenas mais traduções de @ovs)
fonte
05AB1E , 7 bytes
Experimente online!
Explicação
fonte
Python simbólico , 66 bytes
Experimente online!
Explicação
fonte