Les portes coulissantes ont des prix variables en fonction de la largeur des portes. Les différents prix sont les suivants:
- 60 - 80 cm: 150¤
- 81-100 cm: 200¤
- 101-120 cm: 220¤
Lors de l'achat d'un placard, vous souhaiterez évidemment minimiser le coût, votre tâche consiste donc à trouver la largeur des portes qui minimise le coût total en fonction de la largeur totale du placard.
Règles:
- La largeur totale sera prise en entrée
- Toutes les portes auront la même largeur
- Choisissez les plus petites portes si deux types de portes coûtent le même prix
- Les largeurs sont en centimètres, les nombres entiers ne sont pas décimaux
- Arrondir les décimales
- Le prix doit être retourné sous forme d'entier (pas besoin du signe de devise)
- Les formats d'entrée et de sortie sont facultatifs, mais l'ordre de la sortie doit être:
Number of doors, Width, Price
. - L'entrée sera dans la plage
[120 1000)
.
C'est le golf de code. Le code le plus court en octets gagne.
Exemples:
Input: 156
Output: 2, 78, 300
Input: 331
Output: 3, 111, 660
Input: 420
Output: 4, 105, 880
code-golf
arithmetic
Stewie Griffin
la source
la source
201
est un cas de test intéressant ...Réponses:
05AB1E , 47 octets
Code:
Pas la meilleure soumission, mais au moins quelque chose :)
Essayez-le en ligne!
la source
JavaScript (ES6), 101 octets
-~(~-a/b)
est identique à Math.ceil (a / b) dans les entiers 31 bits.la source
Perl,
190180154133128117 octetscomprend +1 pour
-p
Commenté:
Économisez 11 octets en insérant et en divisant le hachage en deux tableaux
Économisez 5 octets en utilisant
-p
(grâce à @ dev-null)Économisez 18 octets en utilisant POSIX :: ceil et 3 autres en utilisant la syntaxe de liste pour le hachage (grâce à @ msh210)
la source
sub r{$a=$_[0];~~$a==$a?$a:1+~~$a}
estsub r{use POSIX;ceil pop}
.(80=>150,100=>200,120=>220)
est(80,150,100,200,120,220)
.[120-1000)
, mais on peut toujours changer1E4
pour1E9
...PowerShell,
137135 octetsLa sortie est séparée par des sauts de ligne.
Nous prenons des informations
$a
, fixons nos coûts$j
à9000000000
(un grand nombre qui est bien plus que ce dont nous aurions besoin). Ensuite, nous bouclons60..120
avec|%{...}
. À chaque itération, nous calculons le$p
prix de l'article actuel avec une déclaration pseudo-ternaire , puis calculons le$c
plafond de$a/$_
. Si le total actuel est inférieur au plus petit total que nous ayons vu ($j
), enregistrez toutes ces variables:$j
(le total),$k
(le nombre de portes requises) et$i
(la largeur de la porte), et continuez la boucle. Une fois la boucle terminée, il suffit de sortir les meilleures valeurs.Édition - Enregistrement de deux octets en déplaçant les affectations
$c
et$p
dans leif
conditionnella source
Pyth, 65 octets
Essayez-le ici!
Explication
Tout d'abord, cela génère une liste de toutes les combinaisons possibles de nombre de portes / largeur de porte et calcule le prix pour chacune de ces combinaisons. Il suffit ensuite de le commander par prix et largeur de porte et de prendre le premier élément de la liste résultante.
L'explication du code suit après avoir joué augolf. Aidez-moi à jouer au golf, c'est beaucoup trop long.la source
JavaScript (ES6) 96
Comme indiqué par @Neil,
=-~(~-n/d)
équivaut à une division avec arrondi pour des nombres entiers de 32 bits ou moins.la source
R ,
135104octetsEssayez-le en ligne!
Enregistré 31 octets par
utf8ToInt
cbind
directement plutôt qu'après avoir défini des variablesComment ça fonctionne:
approx
renvoie le prix d'une seule porte en fonction de sa longueur. Il revient enNA
dehors de la plage[60,120]
.(number of doors, door width, total price)
est retourné.order
fonction est utilisée pour localiser le prix minimum; le triplet correct est extrait sur cette base. En cas d'égalité,order
retournera l'entrée qui vient en premier, et puisque nous avons bouclé de 16 à 1, le plus grand nombre de portes (largeur de porte la plus petite) sera retourné.la source
stepfun
est plus longue - car il faut supprimer la largeur à l'extérieur de[60,120]
.