Вы талантливый молодой шеф-повар, которому только что предложили должность су-шеф-повара в самом престижном индийском ресторане в мире. У вас мало опыта в приготовлении индийской кухни, но вы полны решимости, поэтому вы решили проявить себя. Вы решили стать ведущим экспертом Dosa . Для этого вы должны не только овладеть созданием дос, но и иметь возможность масштабировать их до произвольно больших размеров.
Вы найдете многообещающий рецепт для теста Dosa:
- 1 чашка риса
- 1 чашка Укда Чавал
- 1/2 стакана урад даль
- 1/4 стакана похы
- 1/4 ч.л. семян мети
- Солить по вкусу
- Вода по мере необходимости
Это сделает досу примерно 1/2 метра в длину.
Вызов
Напишите программу или функцию, которая точно скажет персоналу ресторана, что нужно для того, чтобы сделать одну досу из целого числа, кратного данному рецепту . На кухне недостаточно места, поэтому вы хотите, чтобы ваш код был максимально коротким. Самый короткий код выигрывает со связями, идущими к предыдущему посту.
Измерительные ложки и чашки бывают следующих стандартных размеров: 1/4, 1/3, 1/2, 2/3, 3/4 и 1. Чтобы избежать гнева персонала кухни, измерения должны быть представлены в самом большом блоке в который число может быть записано как смешанные числа, используя только стандартные размеры .
Измерения распространяются на большие размеры в соответствии со следующим соглашением:
- 3 чайные ложки == 1 столовая ложка
- 4 столовые ложки == 1/4 стакана
Таким образом, для числа, кратного 12, 1/4 чайной ложки мети-семян становится 1 столовой ложкой. Тем не менее, для кратного 13, он становится 3 1/4 ч. Л. В противном случае он не будет представлен в стандартных размерах.
Обслуживающий персонал должен быть в состоянии отнести досу к столам. Чтобы убедиться, что доса не сломается при транспортировке, вы даете им указание нести досу в командах. Каждый человек может нести не более одного метра доса. Таким образом, для одного или двойного рецепта, только один человек необходим для его переноски. Обслуживающий персонал менее эффективен, если он разделен на дробные части, поэтому всегда требуется целое число официантов .
вход
Возьмите положительное целое число через STDIN (или ближайшую альтернативу), аргумент командной строки или аргумент функции. Это число определяет коэффициент масштабирования для рецепта и может быть как 1, но не более 2 32 -1. Это может быть любое целое число в этом диапазоне.
Выход
Распечатайте в STDOUT (или ближайшую альтернативу) список ингредиентов, масштабированный в соответствии с вводом, а также количество официантов, необходимое для переноса ДОСА. Ингредиенты должны быть перечислены в порядке, указанном выше, и в формате, указанном ниже.
Примеры
Входные данные:
2
Выход:
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
Обратите внимание, что «чашка» меняется на «чашки», когда значение больше 1. «чайная ложка» не меняется. «официант», как «чашка», становится множественным числом.
Входные данные:
5
Выход:
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
Нецелые значения, превышающие 1, представляются в виде смешанных чисел, то есть целого числа, за которым следует сокращенная дробь.
Примечание: название взято из соответствующего видео .
источник
Ответы:
CJam, 214 байтов
Попробуйте онлайн в интерпретаторе CJam .
источник
Javascript (ES6), 443 символа
Это было очень весело для гольфа, но результат значительно длиннее, чем я ожидал.
Попробуйте это:
Показать фрагмент кода
Он принимает значения вплоть до и даже включая
2^32
, или4294967296
. После этого «урад дал» переполняется нечетными числами и становится отрицательным.По сути, он вычисляет правильные суммы по ходу дела. К счастью, только мети-семена должны иметь меры tsp / tbsp / cup; в противном случае это было бы намного дольше. (Одна только линия семени мети составляет 155 символов!)
Это также было бы по крайней мере 500 символов в ES5. Я ❤ ES6.
Как всегда, предложения очень ценятся!
Редактировать 1: Просто понял, что в соответствии с правилами,
1 tsp
должны быть заменены1/3 tbsp
, так же , как2 tsp
и2/3 tbsp
, а также16 tsp
и1/3 cup
....источник
-~
так,b=-~t/2
гораздо короче, Вы также можете исключить скобки-~1
результаты2
, что не является намеченным результатом. Лучшая альтернатива, которую я мог найти, этоb=-~((n-1e-9)/2)
такая же длинная, так что я пока оставлю ее такой, какой она есть.Common Lisp, 435
Слегка разгульный
Все меры выражены в
tsp
. На основе этойk
функцииg
решает, какие единицы использовать для печати, и вызывать функцию форматированияh
с соответствующими аргументами.k
возвращает значение true, если аргумент может быть выражен как кратное 1, 1/4, 1/3, 2/3, 4/3 единицg
преобразует входные данные как количество столовых ложек и количество столовых ложек как количество чашек (как указано в вопросе). Мы стараемся печатать сначала по единицам чашек, или единицам столовой ложки, или же в секундах.h
Используйте условное форматирование директивы для печати либоx
,x y/z
или сy/z
последующим форматированиемs
с аргументомm
: для чашек,s
есть"cup~P"
которые plurializes слова в соответствии сm
.Пример (n = 17)
источник
R
602603526 байтЯ подозреваю, что у меня еще много возможностей для игры в гольф, но у меня не хватило времени, и я действительно хотел ответить на этот вопрос.
источник
1/3 tbsp 1/4 tsp methi seeds
но он должен быть представлен в единой общей единице. Так и должно быть1 1/4 tsp methi seeds
(если моя психическая математика верна).JavaScript (Node.js) , 419 байт
Попробуйте онлайн!
источник