Schiebetüren haben je nach Türbreite unterschiedliche Preise. Die unterschiedlichen Preise sind wie folgt:
- 60 - 80 cm: 150 ¤
- 81 - 100 cm: 200 ¤
- 101 - 120 cm: 220 ¤
Wenn Sie einen Schrank kaufen, möchten Sie natürlich die Kosten minimieren. Ihre Aufgabe ist es daher, die Breite der Türen zu ermitteln, die die Gesamtkosten basierend auf der Gesamtbreite des Schranks minimiert.
Regeln:
- Die Gesamtbreite wird als Eingabe verwendet
- Alle Türen haben die gleiche Breite
- Wählen Sie die kleinsten Türen, wenn zwei Arten von Türen gleich viel kosten
- Die Breiten sind in Zentimetern angegeben, ganze Zahlen und keine Dezimalstellen
- Dezimalstellen aufrunden
- Der Preis wird als Ganzzahl zurückgegeben (kein Währungssymbol erforderlich)
- Die Ein- und Ausgabeformate sind optional, aber die Reihenfolge der Ausgabe muss sein:
Number of doors, Width, Price
. - Die Eingabe wird im Bereich liegen
[120 1000)
.
Das ist Code Golf. Kürzester Code in Bytes gewinnen.
Beispiele:
Input: 156
Output: 2, 78, 300
Input: 331
Output: 3, 111, 660
Input: 420
Output: 4, 105, 880
code-golf
arithmetic
Stewie Griffin
quelle
quelle
201
ist ein interessanter Testfall ...Antworten:
05AB1E , 47 Bytes
Code:
Nicht die beste Vorlage, aber zumindest etwas :)
Probieren Sie es online!
quelle
JavaScript (ES6), 101 Byte
-~(~-a/b)
ist dasselbe wie Math.ceil (a / b) in 31-Bit-Ganzzahlen.quelle
Perl,
190180154133128117 Bytesbeinhaltet +1 für
-p
Kommentiert:
Sparen Sie 11 Bytes, indem Sie Hash in zwei Arrays einbetten und aufteilen
Sparen Sie 5 Bytes mit
-p
(danke an @ dev-null)Sparen Sie 18 Bytes mit POSIX :: ceil und 3 weitere Bytes mit Listensyntax für Hash (danke an @ msh210)
quelle
sub r{$a=$_[0];~~$a==$a?$a:1+~~$a}
istsub r{use POSIX;ceil pop}
.(80=>150,100=>200,120=>220)
ist(80,150,100,200,120,220)
.[120-1000)
, aber man kann immer1E4
zu1E9
... wechselnPowerShell,
137 -135 ByteDie Ausgabe ist durch Zeilenumbrüche getrennt.
Wir nehmen Input
$a
, setzen unsere Kosten$j
auf9000000000
(eine große Zahl, die weitaus mehr ist, als wir jemals brauchen würden). Als nächstes machen wir eine Schleife60..120
mit|%{...}
. Bei jeder Iteration berechnen wir den$p
Preis des aktuellen Artikels mit einer pseudo-ternären Aussage und berechnen dann die$c
Obergrenze von$a/$_
. Wenn die aktuelle Summe kleiner ist als die kleinste Summe, die wir gesehen haben ($j
), speichern Sie alle diese Variablen:$j
(die Summe),$k
(die Anzahl der erforderlichen Türen) und$i
(die Türbreite), und setzen Sie die Schleife fort. Sobald die Schleife beendet ist, geben Sie einfach die besten Werte aus.Bearbeiten - Zwei Bytes durch Verschieben der Zuweisungen
$c
und$p
in dieif
Bedingung gespeichertquelle
Pyth, 65 Bytes
Probieren Sie es hier aus!
Erläuterung
Zunächst wird eine Liste aller möglichen Kombinationen von Türanzahl und Türbreite erstellt und der Preis für jede dieser Kombinationen berechnet. Dann müssen wir es nur noch nach Preis und Türbreite bestellen und das erste Element der resultierenden Liste entnehmen.
Codeerklärung folgt, nachdem ich dieses unten Golf gespielt habeBitte hilf mir, Golf zu spielen, das ist viel zu lang.quelle
JavaScript (ES6) 96
Wie von @Neil angegeben,
=-~(~-n/d)
entspricht dies einer Division mit Aufrundung für ganze Zahlen von 32 Bit oder weniger.quelle
R ,
135104 BytesProbieren Sie es online!
31 Bytes von gespeichert
utf8ToInt
cbind
direkt anstatt nach dem Definieren von VariablenWie es funktioniert:
approx
Gibt den Preis einer einzelnen Tür basierend auf ihrer Länge zurück. Es kehrtNA
außerhalb des Bereichs zurück[60,120]
.(number of doors, door width, total price)
wird zurückgesandt.order
Funktion wird verwendet, um den Mindestpreis zu ermitteln. Darauf basierend wird das richtige Triplett extrahiert. Im Falle von Gleichstandorder
wird der zuerst eintretende Eintrag zurückgegeben, und da wir von 16 auf 1 geschleift sind, wird die größte Anzahl von Türen (kleinste Türbreite) zurückgegeben.quelle
stepfun
ist länger - da man die Breite außerhalb von entfernen muss[60,120]
.