Relacionado: Programar mi horno microondas y Generar valores diferidos .
Mi colega es tan vago que ni siquiera se molesta en mover el dedo cuando programa el horno de microondas. (¡Esto es realmente cierto!)
Ayúdelo a encontrar la entrada de microondas que le da el tiempo más cercano a lo que quiere, pero donde todos los dígitos son iguales. Si dos entradas resultan en la misma diferencia horaria con respecto al tiempo deseado, elija la que tenga menos dígitos. Si ambos tienen el mismo número de dígitos, elija el menor, para que no tenga que esperar tanto.
Entrada es el número entero que un perfeccionista entraría, por ejemplo, 430
es de 4 minutos y 30 segundos, mientras que 100
y 60
cada uno es de 1 minuto. Será mayor que 0 y no excederá de 9999.
La salida debe ser un número entero, por ejemplo, 444
4 minutos y 44 segundos y 55
55 segundos.
Tanto la entrada como la salida solo pueden estar en segundos simples (sin minutos) si el tiempo total es inferior a 1 minuto y 40 segundos.
Este es el código de golf , por lo que su código debe ser lo más corto posible.
Casos de prueba:
30 → 33
60 → 55
70 → 111
90 → 88
100 → 55
101 → 66
120 → 77
130 → 88
200 → 99
201 → 222
500 → 444
700 → 666
1000 → 888
1055 → 999
1056 → 1111
1090 → 1111
Respuestas:
Jalea, 26 bytes
Explicación:
Pruébalo en línea!
fuente
JavaScript (ES6), 112 bytes
Utiliza una función auxiliar
c
que calcula cinco veces el número real de segundos transcurridos.fuente
Dyalog APL , 37 bytes
⍳4
1 2 3 4 Tabla de repetición⎕D
"0123456789"∘./⍨
(como una tabla de multiplicación, pero donde cada celda contiene B repeticiones de A en lugar de A × B),,
haga que la tabla se convierta en una lista de cadenas y⍎¨
haga que cada cadena se numere (ahora tenemos una lista de todas las posibles resultados.){
...}
función donde el argumento está representado por⍵
⎕⍵
argumento anterior con entrada solicitada(
... se)¨
aplica a cada uno de los dos (el argumento y la lista) ...0 100∘⊤
convertir a base-10060⊥
convertir de base-60-/
calcular la diferencia entre los dos|
absolutos⊃
lista de extracción de valor (porque-/
encapsuló su resultado)⍋
orden de clasificación (No se ordena, solo devuelve el orden en el que se colocan los argumentos para lograr un orden ascendente. Si dos elementos son iguales, permanecen en el orden actual. Dado que nuestra lista tiene elementos de longitud creciente, esto se encarga de los lazos).⊃
el primero, es decir, el que tiene la menor diferencia absoluta de la entrada,⍵⊃⍨
toma ese elemento de la lista de argumentos (la lista de resultados posibles)Gracias al colega en cuestión por eliminar un byte.
Nota: No tenía ninguna solución al momento de publicar el OP.
fuente