Sie sind ein talentierter junger Koch, dem gerade die Position eines Sous-Chefs im renommiertesten indischen Restaurant der Welt angeboten wurde . Sie haben wenig Erfahrung mit der Zubereitung indischer Gerichte, aber Sie sind entschlossen, sich zu beweisen. Sie entscheiden sich, der führende dosa- Experte zu werden. Dazu müssen Sie nicht nur die Erstellung von Dosas beherrschen, sondern auch in der Lage sein, diese beliebig groß zu skalieren.
Sie finden ein vielversprechendes Rezept für Dosa Teig:
- 1 Tasse Reis
- 1 Tasse Ukda Chawal
- 1/2 Tasse Urad dal
- 1/4 Tasse Poha
- 1/4 TL Methi Samen
- Salz nach Geschmack
- Wasser nach Bedarf
Dies ergibt eine Dosa von ungefähr 1/2 Meter Länge.
Herausforderung
Schreiben Sie ein Programm oder eine Funktion, die dem Restaurantpersonal genau sagt, was erforderlich ist, um eine einzelne Dosa aus einem ganzzahligen Vielfachen des angegebenen Rezepts zu erstellen . Der Platz in der Küche ist eng, daher soll Ihr Code so kurz wie möglich sein. Der kürzeste Code gewinnt mit Gleichstand zum vorherigen Beitrag.
Messlöffel und Tassen sind in den folgenden Standardgrößen erhältlich: 1/4, 1/3, 1/2, 2/3, 3/4 und 1. Um das Küchenpersonal nicht zu verärgern, müssen die Messwerte in der größten Einheit in angegeben werden Die Zahl kann nur mit Standardgrößen als gemischte Zahl geschrieben werden .
Messungen breiten sich nach der folgenden Konvention zu größeren Größen aus:
- 3 TL == 1 EL
- 4 Esslöffel == 1/4 Tasse
Also für ein Vielfaches von 12, 1/4 TL Methi Samen wird 1 EL. Für ein Vielfaches von 13 wird es jedoch 3 1/4 TL. Sonst wäre es nicht in Standardgrößen dargestellt.
Das Personal muss in der Lage sein, die Dosa zu den Tischen zu tragen. Um sicherzustellen, dass die Dosa während des Transports nicht abbricht, weisen Sie sie an, die Dosa in Teams zu tragen. Jede Person kann höchstens einen Meter Dosa tragen. Für ein Einzel- oder Doppelrezept wird also nur eine Person benötigt, um es zu tragen. Das Bedienungspersonal ist weniger effektiv, wenn es in Bruchstücke geschnitten wird, so dass immer eine ganze Anzahl von Bedienern erforderlich ist.
Eingang
Nehmen Sie eine positive Ganzzahl über STDIN (oder die nächstgelegene Alternative), ein Befehlszeilenargument oder ein Funktionsargument. Diese Zahl bestimmt den Skalierungsfaktor für das Rezept und kann 1 sein, aber nicht größer als 2 32 -1. Es kann eine beliebige Ganzzahl in diesem Bereich sein.
Ausgabe
Drucken Sie die Liste der Zutaten, die gemäß der Eingabe skaliert sind, sowie die Anzahl der Kellner, die zum Tragen der Dosa erforderlich sind, auf STDOUT (oder einer nächstgelegenen Alternative). Die Zutaten müssen in der oben angegebenen Reihenfolge und im unten angegebenen Format aufgeführt sein.
Beispiele
Eingang:
2
Ausgabe:
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
Beachten Sie, dass sich "cup" in "cups" ändert, wenn der Wert größer als 1 ist. "Tsp" ändert sich nicht. "Kellner" wird wie "Tasse" zum Plural.
Eingang:
5
Ausgabe:
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
Nicht ganzzahlige Werte größer als 1 werden als gemischte Zahlen dargestellt, dh eine ganze Zahl, gefolgt von einem reduzierten Bruch.
Hinweis: Der Titel stammt aus einem relevanten Video .
quelle
Antworten:
CJam, 214 Bytes
Probieren Sie es online im CJam-Interpreter aus .
quelle
Javascript (ES6), 443 Zeichen
Das Golfen hat sehr viel Spaß gemacht, aber das Ergebnis ist erheblich länger als erwartet.
Versuch es:
Code-Snippet anzeigen
Es akzeptiert Werte bis einschließlich
2^32
, oder4294967296
. Danach läuft der 'Urad Dal' bei ungeraden Zahlen über und wird negativ.Grundsätzlich werden dabei die korrekten Beträge berechnet. Zum Glück müssen nur die Methi-Samen TL / EL / Cup-Maßnahmen haben; Andernfalls wäre dies viel länger gewesen. (Die Methisamenlinie allein ist 155 Zeichen!)
Dies wäre auch in ES5 mindestens 500 Zeichen lang gewesen. Ich ❤ ES6.
Wie immer sind Vorschläge sehr willkommen!
Edit 1: Habe gerade gemerkt, dass nach den Regeln
1 tsp
mit1/3 tbsp
, gleich mit2 tsp
und2/3 tbsp
, sowie16 tsp
und ersetzt werden soll1/3 cup
....quelle
-~
werden,b=-~t/2
ist viel kürzer, Sie können auch die Klammer ausschließen-~1
ergibt2
, was nicht das beabsichtigte Ergebnis ist. Die beste Alternative, die ich finden konnteb=-~((n-1e-9)/2)
, ist genauso lang, also werde ich es so lassen, wie es jetzt ist.Common Lisp, 435
Leicht ungolfed
Alle Maße sind in ausgedrückt
tsp
. Entscheiden Sie anhand derk
Funktion,g
welche Einheiten zum Drucken verwendet werden sollen, und rufen Sie die Formatierungsfunktionh
mit den entsprechenden Argumenten auf.k
Gibt true zurück, wenn das Argument als Vielfaches von 1, 1/4, 1/3, 2/3, 4/3 Einheiten ausgedrückt werden kanng
konvertiert die Eingabe als eine Anzahl von Esslöffeln und die Anzahl von Esslöffeln als eine Anzahl von Tassen (wie in der Frage angegeben). Wir versuchen, zuerst in Einheiten von Tassen oder in Einheiten von Esslöffeln oder auch in tps zu drucken.h
verwenden eine bedingte Formatierungsanweisungen entweder zu druckenx
,x y/z
odery/z
gefolgt von der Formatierung ders
mit dem Argumentm
: für Becher,s
ist"cup~P"
die dem Wort plurializes entsprechendm
.Beispiel (n = 17)
quelle
R,
602603526 BytesIch vermute immer noch viel Platz zum Golfen, aber mir ist die Zeit ausgegangen und ich wollte wirklich eine Antwort auf diese Frage geben.
quelle
1/3 tbsp 1/4 tsp methi seeds
aber in einer einzigen gemeinsamen Einheit dargestellt werden. So sollte es sein1 1/4 tsp methi seeds
(wenn meine mentale Mathematik stimmt).JavaScript (Node.js) , 419 Byte
Probieren Sie es online!
quelle