Jesteś utalentowanym młodym szefem kuchni, któremu właśnie zaproponowano stanowisko szefa kuchni w najbardziej prestiżowej indyjskiej restauracji na świecie. Masz niewielkie doświadczenie w przygotowywaniu kuchni indyjskiej, ale jesteś zdeterminowany, więc postanowiłeś się wykazać. Zdecydujesz się zostać wiodącym ekspertem dosa . Aby to zrobić, musisz nie tylko opanować tworzenie dosów, ale także mieć możliwość skalowania ich do dowolnych rozmiarów.
Znajdziesz obiecujący przepis na ciasto dosa:
- 1 szklanka ryżu
- 1 szklanka ukda chawal
- 1/2 szklanki urad dal
- 1/4 szklanki poha
- 1/4 łyżeczki nasion methi
- Sól dla smaku
- Woda w razie potrzeby
To da dosa około 1/2 metra długości.
Wyzwanie
Napisz program lub funkcję, która powie personelowi restauracji dokładnie, co jest potrzebne, aby zrobić jedną dosę z całkowitej liczby wielokrotności podanego przepisu . W kuchni jest mało miejsca, więc chcesz, aby Twój kod był jak najkrótszy. Najkrótszy kod wygrywa, a więzi trafiają do wcześniejszego postu.
Łyżki i kubki pomiarowe są dostępne w następujących standardowych rozmiarach: 1/4, 1/3, 1/2, 2/3, 3/4 i 1. Aby uniknąć gniewu personelu kuchennego, pomiary należy zgłaszać w największej jednostce w której liczbę można zapisać jako liczby mieszane przy użyciu wyłącznie standardowych rozmiarów .
Pomiary rozprzestrzeniają się na większe rozmiary zgodnie z następującą konwencją:
- 3 łyżeczki == 1 łyżka
- 4 łyżki == 1/4 szklanki
Tak więc dla wielokrotności 12, 1/4 łyżeczki nasion methi staje się 1 łyżką. Jednak dla wielokrotności 13 staje się 3 1/4 łyżeczki. W przeciwnym razie nie byłby reprezentowany w standardowych rozmiarach.
Kelnerzy muszą być w stanie przenieść dosa na stoliki. Aby upewnić się, że Dosa nie psuje się podczas transportu, instruujesz ich, aby nosili Dosę w zespołach. Każda osoba może nosić najwyżej jeden metr dosa. Tak więc w przypadku pojedynczego lub podwójnego przepisu potrzebna jest tylko jedna osoba. Personel kelnerski jest mniej skuteczny, jeśli jest pocięty na części ułamkowe, dlatego zawsze wymagana jest liczba całkowita kelnerów .
Wkład
Weź dodatnią liczbę całkowitą przez STDIN (lub najbliższą alternatywę), argument wiersza poleceń lub argument funkcji. Liczba ta określa współczynnik skalowania receptury i może być tak mała jak 1, ale nie większa niż 2 32 -1. Może to być dowolna liczba całkowita w tym zakresie.
Wydajność
Wydrukuj do STDOUT (lub najbliższej alternatywy) listę składników przeskalowaną zgodnie z danymi wejściowymi, a także liczbę kelnerów wymaganych do przeprowadzenia dosa. Składniki muszą być wymienione w kolejności podanej powyżej oraz w formacie podanym poniżej.
Przykłady
Wkład:
2
Wydajność:
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
Zauważ, że „filiżanka” zmienia się w „filiżanki”, gdy wartość jest większa niż 1. „łyżeczka” nie zmienia się. „kelner”, jak „kielich”, staje się liczbą mnogą.
Wkład:
5
Wydajność:
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
Wartości niecałkowite większe niż 1 są reprezentowane jako liczby mieszane, tj. Liczba całkowita, po której następuje ułamek zredukowany.
Uwaga: tytuł pochodzi z odpowiedniego filmu .
źródło
Odpowiedzi:
CJam, 214 bajtów
Wypróbuj online w interpretatorze CJam .
źródło
JavaScript (ES6), 443 znaki
Gra w golfa była bardzo przyjemna, ale wynik jest znacznie dłuższy niż się spodziewałem.
Wypróbuj to:
Pokaż fragment kodu
Akceptuje wartości do, a nawet włącznie
2^32
, lub4294967296
. Następnie „urad dal” przelewa się na liczbach nieparzystych i staje się ujemny.Zasadniczo oblicza prawidłowe kwoty w miarę upływu czasu. Na szczęście tylko nasiona methi muszą mieć łyżeczkę / łyżkę / miarkę; inaczej byłoby to o wiele dłużej. (Sama linia nasion methi ma 155 znaków!)
W ES5 byłoby to również co najmniej 500 znaków. I ❤ ES6.
Jak zawsze sugestie są bardzo mile widziane!
Edycja 1: Właśnie zdałem sobie sprawę, że zgodnie z zasadami,
1 tsp
należy zastąpić1/3 tbsp
, tak samo z2 tsp
i2/3 tbsp
, a także16 tsp
i1/3 cup
...źródło
-~
więcb=-~t/2
jest znacznie krótszy, można również wykluczyć nawias-~1
powoduje2
, co nie jest zamierzonym wynikiem. Najlepsza alternatywa, jaką mogłem znaleźć,b=-~((n-1e-9)/2)
jest równie długa, więc zachowam ją taką, jaka jest na razie.Common Lisp, 435
Nieco golfa
Wszystkie miary wyrażone są w
tsp
. Na podstawiek
funkcjig
decyduje, których jednostek użyć do drukowania i wywołać funkcję formatowaniah
z odpowiednimi argumentami.k
zwraca true, gdy argument można wyrazić jako wielokrotność 1, 1/4, 1/3, 2/3, 4/3 jednostekg
konwertuje dane wejściowe jako liczbę łyżek, a liczbę łyżek jako liczbę filiżanek (jak podano w pytaniu). Najpierw staramy się drukować według jednostek kubków lub jednostek łyżki, albo w tps.h
użyć formatowania warunkowego dyrektyw albo wydrukowaćx
,x y/z
luby/z
następuje formatowanies
z argumentemm
: do kubków,s
to"cup~P"
który plurializes słowo wedługm
.Przykład (n = 17)
źródło
R,
602603526 bajtówPodejrzewam, że nadal mam dużo miejsca na grę w golfa, ale zabrakło mi czasu i naprawdę chciałem odpowiedzieć na to pytanie.
źródło
1/3 tbsp 1/4 tsp methi seeds
ale powinno być reprezentowane w jednej wspólnej jednostce. Tak powinno być1 1/4 tsp methi seeds
(jeśli moja matematyka mentalna jest poprawna).JavaScript (Node.js) , 419 bajtów
Wypróbuj online!
źródło