Vous êtes un jeune chef talentueux à qui on vient de proposer le poste de sous-chef dans le restaurant indien le plus prestigieux au monde. Vous avez peu d'expérience dans la préparation de la cuisine indienne, mais vous êtes déterminé, alors vous vous efforcez de faire vos preuves. Vous décidez de devenir le principal expert de dosa . Pour ce faire, vous devez non seulement maîtriser la création de dosas, mais vous devez également pouvoir les dimensionner pour qu'ils soient arbitrairement volumineux.
Vous trouvez une recette prometteuse pour la pâte dosa:
- 1 tasse de riz
- 1 tasse de ukda chawal
- 1/2 tasse de dal
- 1/4 tasse de poha
- 1/4 cuillère à café de graines de methi
- Sel au goût
- De l'eau au besoin
Cela fera un dosa d'environ 1/2 mètre de long.
Défi
Ecrivez un programme ou une fonction qui indiquera au personnel du restaurant exactement ce qui est nécessaire pour créer un dosa unique à partir d’un multiple entier de la recette donnée . L'espace est restreint dans la cuisine, vous voulez donc que votre code soit le plus court possible. Le code le plus court gagne, les liens revenant au message précédent.
Les cuillères à mesurer et les tasses sont disponibles dans les formats standard suivants: 1/4, 1/3, 1/2, 2/3, 3/4 et 1. Pour éviter de mettre en colère le personnel de la cuisine, les mesures doivent être consignées dans l' unité la plus grande du pays. lequel le nombre peut être écrit sous forme de nombres mélangés en utilisant uniquement des tailles standard .
Les mesures se propagent à de plus grandes tailles selon la convention suivante:
- 3 c. À thé == 1 c. À table
- 4 c. À table == 1/4 tasse
Donc, pour un multiple de 12, 1/4 c. À thé de graines de méthi devient 1 c. Cependant, pour un multiple de 13, il devient 3 1/4 c. Sinon, il ne serait pas représenté dans les tailles standard.
Les serveurs doivent pouvoir porter le dosa sur les tables. Pour vous assurer que le dosa ne casse pas en transit, vous leur demandez de transporter le dosa en équipes. Chaque personne peut porter au plus un mètre de dosa. Donc, pour une recette simple ou double, une seule personne suffit pour la porter. Le personnel d’attente est moins efficace s’il est découpé en fractions, de sorte qu’il faut toujours un nombre entier de serveurs .
Contribution
Prenez un entier positif via STDIN (ou l'alternative la plus proche), un argument de ligne de commande ou un argument de fonction. Ce nombre détermine le facteur de mise à l'échelle de la recette et peut être aussi petit que 1 mais pas plus grand que 2 32 -1. Ce peut être n'importe quel entier dans cette plage.
Sortie
Imprimez sur STDOUT (ou l’alternative la plus proche) la liste des ingrédients mis à l’échelle en fonction de l’entrée, ainsi que le nombre de serveurs requis pour porter le dosa. Les ingrédients doivent être énumérés dans l'ordre indiqué ci-dessus et dans le format indiqué ci-dessous.
Exemples
Contribution:
2
Sortie:
2 cups rice
2 cups ukda chawal
1 cup urad dal
1/2 cup poha
1/2 tsp methi seeds
Salt to taste
Water as needed
1 waiter
Notez que "tasse" devient "tasse" lorsque la valeur est supérieure à 1. "tsp" ne change pas. "serveur", comme "tasse", devient pluriel.
Contribution:
5
Sortie:
5 cups rice
5 cups ukda chawal
2 1/2 cups urad dal
1 1/4 cups poha
1 1/4 tsp methi seeds
Salt to taste
Water as needed
3 waiters
Les valeurs non entières supérieures à 1 sont représentées par des nombres mélangés, c'est-à-dire un entier suivi d'une fraction réduite.
Remarque: le titre provient d' une vidéo pertinente .
la source
Réponses:
CJam, 214 octets
Essayez-le en ligne dans l' interprète CJam .
la source
Javascript (ES6), 443 caractères
C'était très amusant pour le golf, mais le résultat est considérablement plus long que ce à quoi je m'attendais.
Essaye le:
Afficher l'extrait de code
Il accepte les valeurs jusqu’à, y compris
2^32
, ou4294967296
. Après cela, le 'urad dal' déborde sur les nombres impairs et devient négatif.Fondamentalement, il calcule les montants corrects au fur et à mesure. Heureusement, seules les graines de méthi doivent avoir des mesures de cuillère à café / cuillère à soupe / tasse; sinon, cela aurait été beaucoup plus long. (La ligne de graine methi seule est de 155 caractères!)
Cela aurait également eu au moins 500 caractères longs dans ES5. Je ES6.
Comme toujours, les suggestions sont grandement appréciées!
Edit 1: Je viens de me rendre compte que, conformément aux règles, il
1 tsp
devrait être remplacé par1/3 tbsp
, idem avec2 tsp
et2/3 tbsp
, ainsi que16 tsp
et1/3 cup
....la source
-~
donc,b=-~t/2
est beaucoup plus court, vous pouvez également exclure la parenthèse-~1
résultats dans2
, qui n'est pas le résultat attendu. La meilleure alternative que j'ai pu trouverb=-~((n-1e-9)/2)
est tout aussi longue, je vais donc la garder telle quelle pour le moment.Common Lisp, 435
Légèrement non-golfé
Toutes les mesures sont exprimées en
tsp
. Enk
fonction de la fonction,g
décide des unités à utiliser pour l’impression et appelle la fonction de formatageh
avec les arguments appropriés.k
renvoie true lorsque l'argument peut être exprimé sous la forme d'un multiple de 1, 1/4, 1/3, 2/3, 4/3 unitésg
convertit l'entrée en nombre de c. à soupe et le nombre de c. à soupe en nombre de tasses (comme indiqué dans la question). Nous essayons d’imprimer par unités de gobelets d’abord, ou par unités de c.h
utiliser une mise en forme conditionnelle directives à imprimer soitx
,x y/z
ouy/z
suivie par la mise en formes
avec l' argumentm
: pour les tasses,s
est"cup~P"
que le mot plurializes selonm
.Exemple (n = 17)
la source
R,
602603526 octetsJe pense qu'il reste encore beaucoup de place pour jouer au golf, mais je n'ai plus beaucoup de temps et je voulais vraiment répondre à cette question.
la source
1/3 tbsp 1/4 tsp methi seeds
mais il devrait être représenté dans une seule unité commune. Donc ça devrait être le1 1/4 tsp methi seeds
cas (si mes calculs mentaux sont corrects).JavaScript (Node.js) , 419 octets
Essayez-le en ligne!
la source