星期一迷你高尔夫:每周一发布(希望!)一系列简短的代码高尔夫挑战赛。
对不起,来晚了;通过写出与之重复的不同想法,我意识到了90%的方法。
我的家人很大,所以我们吃很多食物。我们通常需要加倍,加倍甚至加倍的食谱来制作足够的食物!但是,将测量值相乘可能会很痛苦,因此,有一个程序可以为我们做到这一点很高兴。
挑战
您面临的挑战是创建一个程序或函数,该程序将数字N和字母L作为度量值,并返回相同的度量值,并尽可能简化。这是必需的度量单位(像我的家人一样,都是美国人)及其对应的字母:
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)
“尽可能简化”是指:
- 使用最大的测量单位。每个单元的余数可以为1 / 4、1 / 3、1 / 2、2 / 3或3/4。
- 如有必要,将结果转换为带分数。
例如,4 o
四盎司,变成1/4 l
四分之一磅。8 t
,变成8茶匙2 2/3 T
。
细节
- 输入可以采用任何合理的格式;与输出相同。(
1 t
,1,"t"
,1\nt
等) - 确保正确处理任何小数部分。(不允许
11/4
代替1 1/4
。) - 的数量将总是一个带分数,并总是具有的分母
2
,3
或4
(或无)。(否1 1/8 T
,否1.5 T
等) - 由于上述原因,不需要向下转换(例如将杯子转换为汤匙)。
- 该字母将始终是以上(
Tcfglopqt
)列出的字母之一。
测试用例
这是一个很大的清单,希望涵盖所有类型的案件:
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
计分
我们的厨房很小,因此代码应尽可能短,以免使厨房更加狭窄。以字节为单位的最短有效代码获胜;抢七决定进入首先达到其最终字节数的提交。获胜者将在11月9日下周一Monday选。祝您好运!
请注意,此挑战类似于World Big Dosa,但并非重复。