Usted es un joven chef talentoso que acaba de recibir el puesto de sous chef en el restaurante indio más prestigioso del mundo. Tiene poca experiencia en la preparación de la cocina india, pero está decidido, por lo que se dispuso a demostrar su valía. Decide convertirse en el principal experto en dosa . Para hacer esto, no solo debe dominar la creación de dosas, sino que debe poder escalarlas para que sean arbitrariamente grandes.
Usted encuentra una receta prometedora para la masa de dosa:
- 1 taza de arroz
- 1 taza de ukda chawal
- 1/2 taza de urad dal
- 1/4 taza de poha
- 1/4 cucharadita de semillas de methi
- Sal al gusto
- Riegue según sea necesario
Esto hará un dosa de aproximadamente 1/2 metro de longitud.
Reto
Escriba un programa o función que le diga al personal del restaurante exactamente lo que se necesita para hacer un solo dosa de un múltiplo entero de la receta dada . Hay poco espacio en la cocina, por lo que desea que su código sea lo más breve posible. El código más corto gana, con lazos que van a la publicación anterior.
Las cucharas y tazas medidoras vienen en los siguientes tamaños estándar: 1/4, 1/3, 1/2, 2/3, 3/4 y 1. Para evitar enojar al personal de la cocina, las mediciones deben informarse en la unidad más grande de que el número puede escribirse como números mixtos utilizando solo tamaños estándar .
Las medidas se propagan a tamaños más grandes según la siguiente convención:
- 3 cucharaditas == 1 cucharada
- 4 cucharadas == 1/4 taza
Entonces, para un múltiplo de 12, 1/4 cucharadita de semillas de methi se convierte en 1 cucharada. Sin embargo, para un múltiplo de 13, se convierte en 3 1/4 cucharadita. De lo contrario, no se representaría en tamaños estándar.
Los camareros deben poder llevar el dosa a las mesas. Para asegurarse de que el dosa no se rompa en tránsito, les indica que lo lleven en equipos. Cada persona puede llevar como máximo un metro de dosa. Entonces, para una receta simple o doble, solo se necesita una persona para llevarla. Los camareros son menos efectivos si se cortan en piezas fraccionarias, por lo que siempre se requiere un número entero de camareros .
Entrada
Tome un número entero positivo a través de STDIN (o la alternativa más cercana), argumento de línea de comando o argumento de función. Este número dicta el factor de escala para la receta y puede ser tan pequeño como 1 pero no más grande que 2 32 -1. Puede ser cualquier número entero en ese rango.
Salida
Imprima en STDOUT (o la alternativa más cercana) la lista de ingredientes escalados de acuerdo con la entrada, así como el número de camareros necesarios para llevar el dosa. Los ingredientes deben enumerarse en el orden indicado anteriormente y en el formato que figura a continuación.
Ejemplos
Entrada:
2
Salida:
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
Tenga en cuenta que "cup" cambia a "cups" cuando el valor es mayor que 1. "tsp" no cambia. "camarero", como "copa", se convierte en plural.
Entrada:
5
Salida:
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
Los valores no enteros mayores que 1 se representan como números mixtos, es decir, un número entero seguido de una fracción reducida.
Nota: El título proviene de un video relevante .
fuente
Respuestas:
CJam, 214 bytes
Pruébelo en línea en el intérprete de CJam .
fuente
Javascript (ES6), 443 caracteres
Esto fue muy divertido para el golf, pero el resultado es considerablemente más largo de lo que esperaba.
Pruébalo:
Mostrar fragmento de código
Acepta valores hasta e incluso incluidos
2^32
, o4294967296
. Después de eso, el 'urad dal' se desborda en números impares y se vuelve negativo.Básicamente, calcula las cantidades correctas a medida que avanza. Afortunadamente, solo las semillas de methi necesitan medidas de cucharaditas / cucharadas / taza; de lo contrario, esto hubiera sido mucho más tiempo. (¡La línea de semillas methi sola es de 155 caracteres!)
Esto también habría tenido al menos 500 caracteres de largo en ES5. Yo ❤ ES6.
Como siempre, ¡las sugerencias son muy apreciadas!
Edición 1: Acabo de darme cuenta de que de acuerdo con las reglas,
1 tsp
debe reemplazarse con1/3 tbsp
, lo mismo con2 tsp
y2/3 tbsp
, así como16 tsp
y1/3 cup
...fuente
-~
eso,b=-~t/2
es mucho más corto, También puede excluir el paréntesis-~1
resulta en2
, que no es el resultado previsto. La mejor alternativa que pude encontrarb=-~((n-1e-9)/2)
es igual de larga, así que la mantendré así por ahora.Lisp común, 435
Ligeramente no golfista
Todas las medidas se expresan en
tsp
. Enk
función de la función,g
decide qué unidades usar para imprimir y llama a la función de formateoh
con los argumentos apropiados.k
devuelve verdadero cuando el argumento puede expresarse como un múltiplo de 1, 1/4, 1/3, 2/3, 4/3 unidadesg
convierte la entrada como un número de cucharadas y el número de cucharadas como un número de tazas (como se indica en la pregunta). Intentamos imprimir por unidades de tazas primero, o unidades de cucharada, o bien en tps.h
use directivas de formato condicional para imprimirx
,x y/z
oy/z
seguido del formato des
con argumentom
: para tazas, ques
es el"cup~P"
que plurializa la palabra segúnm
.Ejemplo (n = 17)
fuente
R,
602603526 bytesSospecho que todavía hay mucho espacio para jugar al golf, pero se me acabó el tiempo y realmente quería responder a esta pregunta.
fuente
1/3 tbsp 1/4 tsp methi seeds
pero debe representarse en una sola unidad común. Entonces debería ser1 1/4 tsp methi seeds
(si mis cálculos mentales son correctos).JavaScript (Node.js) , 419 bytes
Pruébalo en línea!
fuente