Vous avez une piscine remplie à ras bord d'eau. Vous devez le vider, mais vous ne pouvez pas penser à une méthode efficace. Vous décidez donc d'utiliser votre tasse solo rouge. Vous remplissez la tasse à plusieurs reprises et la jetez à l'extérieur de la piscine.
Défi
Combien de temps faut-il pour vider la piscine?
Contribution
[shape of pool] [dimensions] [shape of cup] [dimensions] [speed]
shape of pool
sera l'une de ces chaînes:circle
,triangle
ourectangle
. Notez que ceux-ci se réfèrent en fait aux formes tridimensionnelles: cylindre, prisme triangulaire et prisme rectangulaire.dimensions
sera différent selon la forme.- cercle:
[radius] [height]
. Volume = π r 2 h - triangle:
[base] [height] [length]
. Volume = 1/2 (bh) * longueur - rectangle:
[width] [length] [height]
Volume = lwh
- cercle:
shape of cup
etdimensions
travailler de la même manière. La coupe peut également être un cercle, un triangle ou un rectangle.speed
est le temps qu'il faut pour vider une tasse pleine d'eau en quelques secondes .
Production
Le nombre de secondes qu'il faut pour vider la piscine. Cela peut être arrondi à la seconde près.
Remarques
- Il n'y aura pas d'unités dans l'entrée. Toutes les unités de distance sont supposées être les mêmes (une forme n'aura pas une hauteur en pouces et une largeur en pieds).
- Utilisez 3.14 pour
pi
. - L'entrée sera composée de chaînes et de nombres à virgule flottante.
- Il ne pleuvra jamais. Aucune eau ne sera jamais ajoutée.
- Vous avez une main très stable. Vous remplirez la tasse exactement à ras bord à chaque fois et vous n'en renverserez jamais.
- Une fois que vous approchez de la fin, il sera difficile de ramasser une tasse pleine d'eau. Vous n'avez pas à vous en préoccuper. Vous êtes très fort, vous pouvez donc incliner la piscine sur le côté (sans utiliser plus de temps).
- Chaque fois que vous effectuez un calcul, vous pouvez arrondir au centième près . Votre réponse finale n'aura pas besoin d'être exacte.
Cas de test
Entrée: triangle 10 12.25 3 circle 5 2.2 5
Sortie: 10
Même s'il reste moins de 172,7 sur le dernier scoop, il faut tout de même cinq secondes pour le vider.
Entrée: triangle 5 87.3 20001 rectangle 5.14 2 105.623 0.2
Sortie:804.2
- Vous devez arrondir au centième près après chaque calcul.
- Le calcul final est arrondi de 804.05567 à 804.2. En effet, ce dernier peu d'eau doit être vidé.
Règles
- Vous pouvez écrire un programme ou une fonction complète.
- L'entrée doit être prise à partir de paramètres stdin ou de fonction. La sortie doit être imprimée via stdout ou renvoyée.
- Le format d'entrée peut être réorganisé, tant que vous le spécifiez dans la soumission. Vous pouvez également raccourcir les chaînes "cercle", "triangle" et "rectangle".
- Les bibliothèques et les fonctions intégrées qui impliquent un volume ou une zone ne sont pas autorisées.
Notation
C'est du code-golf . La soumission avec le moins d'octets gagne.
Réponses:
JavaScript ES6,
10078828174 octetsMerci à @UndefinedFunction pour avoir aidé le golf sur 4 octets
Usage:
la source
.5*v
tu ne pourrais pas fairev/2
?t(["triangle", [10, 12.25, 3]], ["triangle", [10, 12.25, 3]], 5)
? J'obtiens10
mais la réponse ne devrait-elle pas être5
? EDIT: juste battu par edc65, même problème.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
-~
avait des problèmes avec les nombres décimaux et entraînerait l'arrondi d'une étape supplémentaire. J'ai dû ajoutera<'t'?1:2
car(1+(a>'t'))
cela ne fonctionne pas pour une raison quelconque.CJam, 46 octets
Explication:
Essayez-le en ligne .
la source
Python 3,
340304 octetsUsage:
Où
i
est la chaîne d'informations.Exemples:
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")
Remarque: Les noms des formes ont été raccourcis respectivement dans leurs premières lettres.
la source
Javascript (ES6), 91
Prendre l'entrée sous forme de chaînes pour les formes, de tableaux de nombres pour les dimensions et d'un nombre unique pour la vitesse:
Cela définit une fonction anonyme, donc utilisez add
g=
avant. Ensuite, il peut être appelé commealert(g("triangle", [10, 12.25, 3], "circle", [5, 2.2], 5))
Explication:
Ma solution d'origine prenait une seule chaîne et mesurait 111 octets:
Cela définit également une fonction anonyme, donc utilisez add
f=
avant. Ensuite, il peut être appelé commealert(f("triangle 5 87.3 20001 rectangle 5.14 2 105.623 0.2"))
la source
K5 (oK), 123 octets
la source
Julia,
122116958979 octetsCela suppose que seule la première lettre des noms de forme sera donnée. Sinon, la solution est plus longue de 6 octets.
Non golfé + explication:
Enregistré 21 octets grâce à edc65 et 10 grâce à UndefinedFunction!
la source
ceil
dans Julia, à utiliser au lieu defloor
, couper tout le contrôle sur le résultat entier?a>'s'?prod(x)/2:prod(x)
parprod(x)/(a>'s'?2:1)
? (peut-être même sans les parenthèses, je n'ai pas d'idée de juilia sous la main et je n'ai pas pu tester cela)a<'d'?3.14x[1]^2*x[2]:a>'s'?prod(x)/2:prod(x)
parprod(x)*(a<'d'?3.14x[1]:a>'s'?.5:1)
? (Encore une fois, non testé)F #,
217186184160 160 octetsFoutues exigences d'indentation!
Usage:
Mise à jour
Merci à Alex d'avoir remarqué l'indentation d'un seul espace, que F # semble prendre en charge
Géré pour réduire la charge en changeant de
array
enlist
types dans l'match
instructionla source
x**2.
fairex*x
? Cela pourrait économiser 2 octets.Python 2,7 306 octets
Prend l'entrée de stdin.
Le tester-
la source
Python 2,
222146139 13911910393 octetsMise en œuvre assez simple. Merci à Sp3000 pour l'
-(-n//1)
astuce pour le plafond, qui devrait fonctionner dans tous les cas (c'est-à-dire qui n'a pas encore trouvé de problème).L'entrée doit être formatée comme suit:
Usage:
Non golfé:
Solution d'origine, 222 octets
Cela a été fait lorsque les règles exigeaient toujours que vous entriez le mot entier plutôt qu'une lettre. J'ai utilisé le fait de les
hash(s)%5
mappercircle -> 2, triangle -> 3, rectangle -> 1
, mais si je ne prends qu'une lettre comme entrée, je pense que je peux raccourcir cela.Usage:
la source
Python 2/3,
252249 octetsExemples d'utilisation:
Les versions Python 2 uniquement et Python 3 uniquement ne sont différentes que dans la façon dont elles reçoivent les entrées;
raw_input()
pour Python 2 etinput()
pour Python 3, par opposition àre.sys.stdin.readline()
pour la version Python2 / 3.Python 2,
240237 octetsPython 3,
236233 octetsChangements:
Changé
for o in[0,3if i[0]<'d'else 4]:
enfor o in[0,[4,3][i[0]<'d']]:
. Merci à Vioz pour l'inspiration :).la source
[0, 3 if i[0] < 'd' else 4]
. Il est tard (tôt?): P.for
déclaration :).Pyth -
4039363534 octetsUtilise une méthode simple, mappant sur les deux conteneurs, puis réduisant par division.
Prend virgule entrée séparée de l' entrée standard, avec la première lettre de chaque forme comme:
"t", 10, 12.25, 3, "c", 5, 2.2, 5
.Suite de tests .
la source