Mini-golfe de segunda-feira: Uma série de desafios curtos de código-golfe , publicados (espero!) Toda segunda-feira.
Desculpe, é tarde; Eu percebi 90% do caminho escrevendo uma ideia diferente de que era uma duplicata.
Minha família é bastante grande, então comemos muita comida. Normalmente, precisamos dobrar, triplicar ou até quadruplicar as receitas para fazer comida suficiente! Mas, como multiplicar as medições pode ser uma dor, seria bom ter um programa para fazer isso por nós.
Desafio
Seu desafio é criar um programa ou função que tome uma medida como um número N e uma letra L e retorne a mesma medida, simplificada ao máximo. Aqui estão as unidades de medida necessárias (todas são americanas, como minha família) e as letras correspondentes:
1 cup (c) = 16 tablespoons (T) = 48 teaspoons (t)
1 pound (l) = 16 ounces (o)
1 gallon (g) = 4 quarts (q) = 8 pints (p) = 128 fluid ounces (f)
"Simplificado tanto quanto possível" significa:
- Usando a maior unidade de medida possível. Cada unidade pode ter um restante de 1/4, 1/3, 1/2, 2/3 ou 3/4.
- Transformando o resultado em um número misto, se necessário.
Por exemplo, 4 o
são quatro onças, que se tornam 1/4 l
, um quarto de libra. 8 t
, 8 colheres de chá, torna-se 2 2/3 T
.
Detalhes
- A entrada pode ser obtida em qualquer formato razoável; mesmo com saída. (
1 t
,1,"t"
,1\nt
, Etc.) - Certifique-se de que qualquer parte fracionária seja tratada corretamente. (
11/4
no lugar de1 1/4
não é permitido.) - O número será sempre um número misto, e terá sempre um denominador de
2
,3
, ou4
(ou nenhuns). (não1 1/8 T
, não1.5 T
etc.) - Como resultado do exposto acima, nunca são necessárias conversões descendentes (por exemplo, xícaras para colheres de sopa).
- A letra sempre será uma das letras listadas acima (
Tcfglopqt
).
Casos de teste
Aqui está uma lista grande, espero que cubra todos os tipos de casos:
Input | Output
--------+--------
1/2 t | 1/2 t
3/4 t | 1/4 T
1 t | 1/3 T
1 1/2 t | 1/2 T
2 t | 2/3 T
2 1/4 t | 3/4 T
2 1/2 t | 2 1/2 t
3 t | 1 T
10 t | 3 1/3 T
16 t | 1/3 c
5 1/3 T | 1/3 c
8 T | 1/2 c
16 T | 1 c
36 T | 2 1/4 c
1/4 c | 1/4 c
1024 c | 1024 c
1 o | 1 o
4 o | 1/4 l
5 1/3 o | 1/3 l
5 2/3 o | 5 2/3 o
8 o | 1/2 l
28 o | 1 3/4 l
28 l | 28 l
2 f | 2 f
4 f | 1/4 p
8 f | 1/4 q
16 f | 1/2 q
32 f | 1/4 g
64 f | 1/2 g
128 f | 1 g
2/3 p | 1/3 q
1 1/3 p | 2/3 q
2 p | 1/4 g
1 q | 1/4 g
Pontuação
Nossa cozinha é muito pequena, portanto o código deve ser o mais curto possível, para não tornar a cozinha mais apertada. O menor código válido em bytes vence; O desempatador vai para o envio que atingiu sua contagem final de bytes primeiro. O vencedor será escolhido na próxima segunda-feira, 9 de novembro. Boa sorte!
Observe que esse desafio é semelhante, mas não uma duplicata, à World Dosa Grande .