Sie haben ein Schwimmbad, das randvoll mit Wasser gefüllt ist. Sie müssen es leeren, können sich aber keine effiziente Methode vorstellen. Sie entscheiden sich also für Ihren roten Solo-Pokal. Sie werden die Tasse wiederholt bis zum Anschlag füllen und sie außerhalb des Pools ablassen.
Herausforderung
Wie lange dauert es, bis der Pool geleert ist?
Eingang
[shape of pool] [dimensions] [shape of cup] [dimensions] [speed]
shape of pool
wird eine dieser Zeichenketten sein:circle
,triangle
oderrectangle
. Beachten Sie, dass sich diese tatsächlich auf die dreidimensionalen Formen beziehen: Zylinder, dreieckiges Prisma und rechteckiges Prisma.dimensions
wird je nach Form unterschiedlich sein.- Kreis:
[radius] [height]
. Volumen = π r 2 h - Dreieck:
[base] [height] [length]
. Volumen = 1/2 (bh) * Länge - Rechteck:
[width] [length] [height]
Volumen = lwh
- Kreis:
shape of cup
unddimensions
arbeiten auf die gleiche Weise. Die Tasse kann auch ein Kreis, ein Dreieck oder ein Rechteck sein.speed
ist die Zeit, die benötigt wird, um eine Tasse Wasser in Sekunden zu entleeren .
Ausgabe
Die Anzahl der Sekunden , die zum Entleeren des Schwimmbeckens benötigt werden. Dies kann auf die nächste Sekunde gerundet werden.
Anmerkungen
- Die Eingabe enthält keine Einheiten. Es wird angenommen, dass alle Abstandseinheiten gleich sind (eine Form hat keine Höhe in Zoll und keine Breite in Fuß).
- Verwenden Sie 3.14 für
pi
. - Die Eingabe besteht aus Zeichenfolgen und Gleitkommazahlen.
- Es wird niemals regnen. Es wird niemals Wasser hinzugefügt.
- Sie haben eine sehr ruhige Hand. Sie werden die Tasse jedes Mal bis zum Rand füllen und nie etwas verschütten.
- Wenn Sie sich dem Ende nähern, wird es schwierig, eine volle Tasse Wasser zu schöpfen. Sie brauchen sich darüber keine Sorgen zu machen. Sie sind sehr stark, sodass Sie den Pool auf die Seite legen können (ohne mehr Zeit zu verbrauchen).
- Bei jeder Berechnung kann auf das nächste Hundertstel gerundet werden . Ihre endgültige Antwort muss nicht exakt sein.
Testfälle
Eingabe: triangle 10 12.25 3 circle 5 2.2 5
Ausgabe:10
Auch wenn der letzte Messlöffel weniger als 172,7 Sekunden enthält, dauert es immer noch die ganzen fünf Sekunden, bis er geleert ist.
Eingabe: triangle 5 87.3 20001 rectangle 5.14 2 105.623 0.2
Ausgabe:804.2
- Sie sollten nach jeder Berechnung auf das nächste Hundertstel runden.
- Die endgültige Berechnung wird von 804.05567 auf 804.2 aufgerundet. Dies liegt daran, dass das letzte bisschen Wasser geleert werden muss.
Regeln
- Sie können ein vollständiges Programm oder eine Funktion schreiben.
- Die Eingabe sollte aus Standard- oder Funktionsparametern erfolgen. Die Ausgabe sollte über stdout gedruckt oder zurückgesandt werden.
- Das Eingabeformat kann neu angeordnet werden, solange Sie dies in der Übermittlung angeben. Sie können auch die Zeichenfolgen "Kreis", "Dreieck" und "Rechteck" kürzen.
- Bibliotheken und integrierte Funktionen, die Volumen oder Bereich betreffen, sind nicht zulässig.
Wertung
Das ist Code-Golf . Einreichung mit der geringsten Anzahl von Bytes gewinnt.
Antworten:
JavaScript ES6,
10078828174 BytesVielen Dank an @UndefinedFunction für die Unterstützung beim Golfspielen bei 4 Byte
Verwendung:
quelle
.5*v
Sie das nicht tunv/2
?t(["triangle", [10, 12.25, 3]], ["triangle", [10, 12.25, 3]], 5)
? Ich verstehe,10
aber sollte die Antwort nicht sein5
? EDIT: gerade von edc65 geschlagen, gleiches Problem.f=(p,c,s,v=([s,a,b,c])=>s<'r'?a*a*b*3.14:a*b*c/(s<'t'?1:2))=>Math.ceil(v(p)/v(c))*s
-~
hatte Probleme mit den Dezimalzahlen und würde einen zusätzlichen Schritt aufrunden. Ich musste hinzufügen,a<'t'?1:2
weil(1+(a>'t'))
es aus irgendeinem Grund nicht funktioniert.CJam, 46 Bytes
Erläuterung:
Probieren Sie es online aus .
quelle
Python 3,
340304 BytesVerwendung:
Wo
i
ist die Zeichenfolge der Informationen.Beispiele:
q("t 10 12.25 3 c 5 2.2 5")
q("t 5 87.3 20001 r 5.14 2 105.623 0.2")
Hinweis: Die Namen der Formen wurden auf die ersten Buchstaben gekürzt.
quelle
Javascript (ES6), 91
Eingaben als Zeichenfolgen für die Formen, Anordnungen von Zahlen für die Dimensionen und eine einzelne Zahl für die Geschwindigkeit:
Dies definiert eine anonyme Funktion, um add
g=
davor zu verwenden . Dann kann man es so nennenalert(g("triangle", [10, 12.25, 3], "circle", [5, 2.2], 5))
Erläuterung:
Meine ursprüngliche Lösung bestand aus einer einzelnen Zeichenfolge und war 111 Byte lang:
Dies definiert auch eine anonyme Funktion, um add
f=
davor zu verwenden . Dann kann man es so nennenalert(f("triangle 5 87.3 20001 rectangle 5.14 2 105.623 0.2"))
quelle
K5 (oK), 123 Bytes
quelle
Julia,
122116958979 BytesDies setzt voraus, dass nur der erste Buchstabe der Formnamen angegeben wird. Ansonsten ist die Lösung 6 Byte länger.
Ungolfed + Erklärung:
21 Bytes dank edc65 und 10 dank UndefinedFunction eingespart!
quelle
ceil
in Julia nicht eine , die Sie verwenden können, anstatt diefloor
gesamte Überprüfung des Ergebnisses von Ganzzahlen abzuschneiden?a>'s'?prod(x)/2:prod(x)
mitprod(x)/(a>'s'?2:1)
? (Möglicherweise habe ich auch ohne die Klammern keine juilia ide zur Hand und konnte dies nicht testen.)a<'d'?3.14x[1]^2*x[2]:a>'s'?prod(x)/2:prod(x)
durchprod(x)*(a<'d'?3.14x[1]:a>'s'?.5:1)
? (Wieder ungetestet)F #,
217186184160 BytesVerdammte Eindrücke!
Verwendung:
Aktualisieren
Vielen Dank an Alex für die Bemerkung zu einzelnen Leerzeichen, die F # zu unterstützen scheint
Es ist gelungen, eine Last mehr abzuwerfen, indem in der Anweisung von
array
zulist
Typen gewechselt wurdematch
quelle
x**2.
könnenx*x
? Das spart 2 Bytes.Python 2.7 306 Bytes
Übernimmt die Eingabe von stdin.
Testen Sie es-
quelle
Python 2,
22214613911910393 BytesZiemlich unkomplizierte Implementierung. Danke an Sp3000 für das
-(-n//1)
Trick für die Decke, der in allen Fällen funktionieren sollte (dh noch kein Problem damit gefunden).Die Eingabe sollte folgendermaßen formatiert sein:
Verwendung:
Ungolfed:
Ursprüngliche Lösung, 222 Bytes
Dies wurde gemacht, als Sie nach den Regeln immer noch das ganze Wort anstatt eines Buchstabens eingeben mussten. Ich habe die Tatsache
hash(s)%5
ausgenutzt , dass sie auf abgebildetcircle -> 2, triangle -> 3, rectangle -> 1
wurden. Wenn ich jedoch nur einen Buchstaben als Eingabe nehme, kann ich diese wahrscheinlich kürzer machen.Verwendung:
quelle
Python 2/3,
252249 BytesAnwendungsbeispiele:
Die Versionen nur für Python 2 und nur für Python 3 unterscheiden sich nur darin, wie sie Eingaben empfangen.
raw_input()
für Python 2 undinput()
für Python 3 im Gegensatz zurre.sys.stdin.readline()
Python2 / 3-Version.Python 2,
240237 BytesPython 3,
236233 BytesÄnderungen:
Geändert
for o in[0,3if i[0]<'d'else 4]:
zufor o in[0,[4,3][i[0]<'d']]:
. Vielen Dank an Vioz für die Inspiration :).quelle
[0, 3 if i[0] < 'd' else 4]
. Es ist spät (früh?): P.for
Aussage verwenden :).Pyth -
4039363534 BytesVerwendet eine einfache Methode, die über beide Container hinweg abbildet und dann durch Unterteilung reduziert.
Nimmt von stdin getrenntes Eingabekomma, wobei der erste Buchstabe jeder Form wie folgt lautet:
"t", 10, 12.25, 3, "c", 5, 2.2, 5
.Test Suite .
quelle