Мини-гольф по понедельникам: серия коротких соревнований по коду , публикуемых (надеюсь!) Каждый понедельник.
Извините, что уже поздно; Я осознал 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
счет
Наша кухня очень маленькая, поэтому код должен быть как можно короче, чтобы не сделать кухню более тесной. Самый короткий действительный код в байтах выигрывает; Тайбрейкер переходит к представлению, которое первым достигло конечного числа байтов. Победитель будет выбран в следующий понедельник, 9 ноября. Удачи!
Обратите внимание, что этот вызов похож, но не дублирует World Big Dosa .