Понеділок Міні-Гольф: Серія коротких викликів з гольф-кодом , що публікуються (сподіваємось!) Кожного понеділка.
Вибачте, що пізно; Я зрозумів 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
Оцінка балів
Наша кухня дуже мала, тому код повинен бути якомога коротшим, щоб не зробити кухню більш тісною. Найкоротший дійсний код у байтах виграє; tiebreaker переходить до подання, яке досягло остаточного підрахунку байтів. Переможець буде обраний наступного понеділка, 9 листопада. Удачі!
Зауважте, що цей виклик схожий на, але не дублікат Всесвітньої великої дози .