Las puertas correderas tienen precios variables según el ancho de las puertas. Los diferentes precios son los siguientes:
- 60 - 80 cm: ¤150
- 81-100 cm: ¤200
- 101 - 120 cm: ¤220
Al comprar un armario, obviamente querrás minimizar el costo, por lo que tu tarea es encontrar el ancho de las puertas que minimice el costo total en función del ancho total del armario.
Reglas:
- El ancho total se tomará como entrada
- Todas las puertas tendrán el mismo ancho.
- Elija las puertas más pequeñas si dos tipos de puertas cuestan lo mismo
- Los anchos son en centímetros, los enteros no son decimales
- Redondear decimales
- El precio se devolverá como un número entero (no es necesario el signo de moneda)
- Los formatos de entrada y de salida son opcionales, pero el orden de la salida deben ser:
Number of doors, Width, Price
. - La entrada estará en el rango
[120 1000)
.
Este es el código de golf. El código más corto en bytes gana.
Ejemplos:
Input: 156
Output: 2, 78, 300
Input: 331
Output: 3, 111, 660
Input: 420
Output: 4, 105, 880
code-golf
arithmetic
Stewie Griffin
fuente
fuente
201
es un caso de prueba interesante ...Respuestas:
05AB1E , 47 bytes
Código:
No es la mejor presentación, pero al menos algo :)
Pruébalo en línea!
fuente
JavaScript (ES6), 101 bytes
-~(~-a/b)
es lo mismo que Math.ceil (a / b) en enteros de 31 bits.fuente
Perl,
190180154133128117 bytesincluye +1 para
-p
Comentado:
Ahorre 11 bytes alineando y dividiendo hash en dos matrices
Ahorre 5 bytes utilizando
-p
(gracias a @ dev-null)Ahorre 18 bytes usando POSIX :: ceil y 3 más usando la sintaxis de lista para hash (gracias a @ msh210)
fuente
sub r{$a=$_[0];~~$a==$a?$a:1+~~$a}
essub r{use POSIX;ceil pop}
.(80=>150,100=>200,120=>220)
es(80,150,100,200,120,220)
.[120-1000)
, pero siempre se puede cambiar1E4
a1E9
...PowerShell,
137135 bytesLa salida está separada por una nueva línea.
Tomamos información
$a
, establecemos nuestro costo$j
en9000000000
(un gran número que es mucho más de lo que necesitaríamos). A continuación, hacemos un bucle60..120
con|%{...}
. Cada iteración calculamos el$p
precio del artículo actual con una declaración pseudoternaria , luego calculamos el$c
límite máximo de$a/$_
. Si el total actual es más pequeño que el total más pequeño que hemos visto ($j
), guarde todas estas variables:$j
(el total),$k
(el número de puertas requerido) y$i
(el ancho de la puerta), y continúe con el ciclo. Una vez que finaliza el ciclo, solo genera los mejores valores.Editar: guardado dos bytes moviendo las asignaciones
$c
y$p
alif
condicionalfuente
Pyth, 65 bytes
Pruébalo aquí!
Explicación
Primero, esto genera una lista de todas las combinaciones posibles de cuenta / ancho de puerta y calcula el precio de cada una de esas combinaciones. Luego solo tenemos que ordenarlo por precio y ancho de puerta y tomar el primer elemento de la lista resultante.
La explicación del código sigue después de jugargolf, ayúdame a jugar golf, esto es demasiado largo.fuente
JavaScript (ES6) 96
Como señaló @Neil,
=-~(~-n/d)
es equivalente a la división con redondeo para números enteros de 32 bits o menos.fuente
R ,
135104bytesPruébalo en línea!
Guardado 31 bytes por
utf8ToInt
cbind
directamente en lugar de después de definir variablesCómo funciona:
approx
devuelve el precio de una sola puerta en función de su longitud. RegresaNA
fuera del rango[60,120]
.(number of doors, door width, total price)
se devuelve el triplete .order
función se utiliza para ubicar el precio mínimo; el triplete correcto se extrae en base a eso. En caso de empate,order
devolverá la entrada que viene primero, y dado que recorrimos de 16 a 1 , se devolverá el mayor número de puertas (ancho de puerta más pequeño).fuente
stepfun
es más largo , ya que es necesario eliminar el ancho fuera de[60,120]
.