Tengo hambre. Pongamos algo en el microondas. Dada una entrada numérica de entre 1 y 4 dígitos, genera la cantidad de segundos que el microondas debe funcionar.
Detalles
El truco es descubrir si el usuario está ingresando segundos o una combinación de segundos y minutos. Los lugares y las decenas deben interpretarse como segundos y los cientos y miles de lugares deben ser minutos. Por ejemplo, el valor 1234
debe interpretarse como 12 minutos, 34 segundos y 9876
debe ser 98 minutos, 76 segundos. Escribir 130
y 90
ambos deberían resultar en un tiempo de cocción de 90 segundos.
Aquí hay algunas otras entradas y salidas:
- 1 = 1
- 11 = 11
- 111 = 71
- 1111 = 671
- 9 = 9
- 99 = 99
- 999 = 639
- 9999 = 6039
Reglas
Este es el código de golf , por lo que gana el programa más corto en bytes. Las lagunas estándar no están permitidas. La entrada ganadora debe devolver la respuesta correcta cuando se le da una entrada entera del 1 al 9999.
9876
?190
?Respuestas:
Python 2 , 19 bytes
Pruébalo en línea!
fuente
Japt , 6 bytes
¡Pruébelo en línea!
ìL
convierte a base-100 yì60
vuelve a convertir a base 60, lo que resulta enfloor(n/100)*60 + n%100
. También funciona con horas (10000 -> 3600
la cantidad de segundos en una hora).fuente
C, C ++, Java, C #, D: 36 bytes
D: 35 bytes
C: 28 bytes
Primera vez que tengo una respuesta tan corta!
D puede tener una optimización especial debido al sistema de plantillas de golf:
C tiene una optimización especial con el int implícito:
Código para probar
En C (tiene que incluir
stdio.h
):Enlace TIO
En C ++ (tiene que incluir
iostream
):Pruébalo en línea!
En Java :
Pruébalo en línea!
En C #
En D (tengo que importar
std.stdio
) (exactamente, no tengo idea de cómo usar matrices en D):Enlace TIO
fuente
foreach
en D, simplemente olvidé cómo usarla tristemente)Pyth -
98 bytesConvierte la entrada a base 100, luego la interpreta como un número base 60.
Test Suite .
fuente
TI-Basic (serie 83), 8 bytes
Requiere la versión del sistema operativo 1.15 o superior.
fuente
dc , 10 bytes
Pruébalo en línea!
Explicación: en cc cuando presionas algo. en la pila va arriba
fuente
Bash bc + sed,
3028 bytes-2 bytes gracias a @seshoumara .
Pruébalo en línea!
Toma información de stdin. Se
*60+
buscó un enfoque más creativo: se inserta antes de los últimos 1 o 2 dígitos, y antepone0
al principio para tener en cuenta las entradas con solo 1 o 2 dígitos. El resultado se pasa abc
.fuente
-r
y usa\?
, puede perder 2 bytes.C (gcc) , 50 bytes
Pruébalo en línea!
fuente
f(t){return t%100+t/100*60;}
. Las funciones pueden tomar entrada como argumentos y salida a través de sus 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
Pruébalo en línea
fuente
Java 8, 13 bytes
La sorprendente fórmula de Python 2 de @ovs .
Pruébalo aquí
fuente
JavaScript, 21 bytes
Pruébalo en línea!
fuente
J , 12 bytes
Es la solución Python 2 de ovs expresada en J. Consiste en un gancho y un tenedor:
Pruébalo en línea!
fuente
60#.0 100#:]
.Lote, 23 bytes
fuente
Haskell , 18 bytes
Pruébalo en línea!
Puerto de Anotha.
Solución sin puntos, 21 bytes
fuente
Laberinto , 19 bytes
Pruébalo en línea!
Explicación
La IP luego llega a un callejón sin salida y comienza a retroceder. Cuando llega al
/
intenta una división por cero que termina el programa.fuente
Jalea , 5 bytes
Como enlace monádico (¡gracias por el aviso, caird!):
Pruébalo en línea!
... O como un programa completo:
Esto se puede portar fácilmente a 05AB1E, por lo que:
05AB1E , 5 bytes
Pruébalo en línea!
Simplemente convierte el entero de entrada a base 100 y luego convierte el resultado de base 60 a entero. Por lo tanto, es equivalente a Input% 100 + 60 * ⌊Input / 100⌋
fuente
Excel VBA, 29 bytes
Función de ventana inmediata anónima de VBE que toma entrada del rango
[A1]
y salidas a la ventana inmediata de VBE.fuente
APL (Dyalog) ,
1110 bytesPruébalo en línea!
¿Cómo?
0 100⊤
- codificar en base 100, deteniéndose en el segundo LSB, produciendo efectivamenten ÷ 100, n % 100
.60⊥
- decodificar en base 60fuente
PARI / GP , 16 bytes
Sencillo:
Lamentablemente, este buen método es simplemente demasiado largo para usar:
fuente
Pushy ,
109 bytesKevin me superó en mi propio idioma ... (usando el enfoque de la respuesta de los ovs )
Pruébalo en línea!
10 bytes
Pruébalo en línea!
11 bytes
Para un byte más podemos usar el
Input % 100 + 60 * ⌊Input / 100⌋
enfoque:Pruébalo en línea!
fuente
2dH/40*-#
. Nunca programado en Pushy antes, pero parece un lenguaje muy bueno. :)05AB1E , 9 bytes
Pruébalo en línea!
Explicación:
Probablemente hay algún truco con las conversiones de base que se puede lograr en 05AB1E, pero no pude encontrarlo.
fuente
bash, 20 bytes
Pruébalo en línea
fuente
Retina , 11 bytes
Pruébalo en línea!
Entrada y salida en unario . El conjunto de pruebas convierte de y a decimal por conveniencia.
Hacer este tipo de conversión de base para solo hasta dos dígitos es sorprendentemente simple de hacer en unario. Simplemente combinamos carreras de 100
1
sy las reemplazamos por 601
s. Cualquier cosa que quede correspondería a los dos últimos dígitos en la representación decimal y permanecerá sin cambios.fuente
Alice , 19 bytes
Pruébalo en línea!
Explicación
Lástima que eliminé divmod del lenguaje, supongo ...
Este es solo el marco habitual para programas lineales con E / S decimal que funcionan exclusivamente en modo Cardinal (aritmético).
fuente
Vía Láctea , 10 bytes
uso:
./mw code.mwg -i 9999
Explicación:
fuente
R , 21 bytes
Pruébalo en línea!
fuente
scan
ya que la mayoría de las respuestas solo asumen que la variable ya está definida.Lisp común, 34 bytes
Pruébalo en línea!
Otro puerto de la fórmula de @ovs .
fuente
REXX, 25 bytes
(Solo otras traducciones de @ovs)
fuente
05AB1E , 7 bytes
Pruébalo en línea!
Explicación
fuente
Python simbólico , 66 bytes
Pruébalo en línea!
Explicación
fuente