Ваша задача - перевести 103-гладкое число в английское слово, используя метод, описанный ниже.
Как?
- Создайте список простых факторов (с повторением) входного числа.
- Сортировать список:
- Если 2 не является одним из основных факторов, отсортируйте список в порядке возрастания.
- Если 2 является одним из основных факторов, удалите его из списка и отсортируйте оставшиеся факторы в порядке убывания.
Переведите каждый фактор в букву, используя следующую таблицу:
3 = S 13 = L 29 = X 43 = O 61 = Z 79 = H 101 = K 5 = P 17 = Q 31 = N 47 = R 67 = T 83 = V 103 = Y 7 = M 19 = U 37 = C 53 = A 71 = E 89 = D 11 = F 23 = I 41 = W 59 = G 73 = J 97 = B
Примечание : эта таблица была построена опытным путем, чтобы максимизировать количество возможных слов. Для любопытных, вот список 2187 слов, которые могут быть закодированы таким образом (может включать грубый язык). Это определенно не гарантировано, чтобы быть оптимальным, но это достаточно хорошо для этой задачи.
Примеры
Пример 1: 579085261 (по возрастанию)
- Основными факторами являются [37, 47, 53, 61, 103] .
- 2 не является основным фактором, поэтому мы сохраняем список отсортированным в порядке возрастания.
- 37 = C, 47 = R и т. Д. Выход «CRAZY».
Пример 2: 725582 (по убыванию)
- Основными факторами являются [2, 11, 13, 43, 59] .
- 2 является основным фактором, поэтому мы удаляем его и сортируем список по убыванию, что дает:
[59, 43, 13, 11] . - 59 = G, 43 = O и т. Д. Выход «ГОЛЬФ».
Пример 3: 10757494 (с повторным множителем)
- Основными факторами являются [2, 11, 71, 71, 97] .
- 2 является основным фактором, поэтому мы удаляем его и сортируем список по убыванию, что дает:
[97, 71, 71, 11] . - 97 = B, 71 = E, 11 = F. Выход "BEEF".
Разъяснения и правила
- Входное число гарантированно будет 103-гладким и делится на 2 самое большее один раз.
- По определению гладкое число является положительным целым числом .
- Ввод и вывод могут быть обработаны в любом разумном формате. Вывод может быть в нижнем или верхнем регистре. Конечный пробел приемлем. Ведущие пробелы нет.
- Если ваша программа / функция не поддерживает большие входные данные, укажите это в своем ответе.
- Это код гольф, поэтому выигрывает самый короткий ответ в байтах.
Контрольные примеры
34874 --> ARM
483254 --> BAR
353722 --> EAR
494302 --> EGG
39061 --> FAT
6479 --> FUN
60421 --> ICE
54166 --> JAM
48911474 --> BETA
2510942 --> BOOM
2303854 --> DOOM
844261 --> FIRE
1606801 --> MAZE
1110085 --> PAGE
5212974 --> BALLS
67892046 --> BEANS
885396199 --> CREEK
67401037 --> FUNKY
27762173 --> QUICK
1238440506 --> ARROWS
33045832681 --> CRAGGY
1362714005 --> PIRATE
137302698 --> TROLLS
358310128062 --> BEGGARS
40255151586 --> DETAILS
164633248153 --> FIXATED
621172442227 --> UNRATED
2467812606 --> VACUUMS
86385078330 --> GROWNUPS
26607531423091 --> UNWORTHY
Ò
on579085261
, чувствую, что <s> Emigna </ s> Adnan уже запущен.<=103
... ваш результатPIRATE MAZE
илиDOOM VACUUMS
...Ответы:
Желе ,
2927 байтСпасибо @JonathanAllan за отыгрывание 1 байта!
Попробуйте онлайн!
Задний план
это числовой литерал. Символы между кавычками заменяются их индексами, основанными на 1, в кодовой странице Jelly , а результирующий массив интерпретируется как число base-250. Это дает целое число c: = 288824892868083015619552399 .
Как это работает
источник
Желе , 36 байт
Попробуйте онлайн!
объяснение
Вспомогательная константа
1£
(производит“SPMFLQUIXNCWORAGZTEJHVDBKY ”
с 1 предваряющим)Основная программа
У меня есть ощущение, что мое сжатие списка легко превосходит другой ответ Jelly, но мой алгоритм его использования мог бы быть намного более эффективным. Может быть, я попытаюсь объединить их.
Желе , 31 байт, вдохновленный ответом @ Leakynun
Попробуйте онлайн! (немного изменен, чтобы работать намного быстрее)
Не согласуется, печатает ли он завершающий символ новой строки (но PPCG обычно разрешает ответы с или без завершающего символа новой строки, так что я думаю, это тоже работает?). Является очень медленно (O ( п ) , где п является входом, и эти цифры не совсем маленькие ...)
объяснение
Вспомогательная константа
1£
(выдает“¶SPMFLQUIXNCWORAGZTEJHVDBKY”
, где¶
находится символ новой строки)Основная программа
источник
05AB1E ,
3938 байтИспользует кодировку CP-1252 . Попробуйте онлайн!
источник
Ø
была часть этого, которая все равно побила мою на 20 байт: P.Python 2,
220217 байтПопробуйте онлайн - запускает только самый маленький тестовый набор без нехватки памяти
Ungolfed:
Эта версия не использует
exec
, так что вы можете на самом деле тестировать все тестовые случаи без нехватки памяти.Попробуйте онлайн
источник
Рубин ,
139138134125120115 + 7 =146145141132127122 байтовИспользует
-rprime
флаг для +7 байт.-1 байт от @daniero. -4 байта, помня, что я могу просто сделать обычную проверку делимости вместо проверки простого деления на наличие
2
.-9 байт из Python-решения @ mbomb007, напоминающего мне о более коротком способе получения соответствующего письма.
-5 байт, потому что теперь разрешены пробелы в конце.
-5 байт от обнаружения
Enumerable#find_index
Попробуйте онлайн! (все тесты)
объяснение
источник
zip
и"
Bash + утилиты GNU + пакет bsd-игр, 170
Кажется довольно неоптимальным, но это работает:
Попробуйте онлайн .
источник
Желе , 33 байта
Попробуйте онлайн!
источник
Japt ,
5150 байт49 байт кода, +1 для
-P
флаг.Попробуйте онлайн!
Это могло бы быть намного короче, если бы у Джапта было еще несколько функций ...
объяснение
`yspmflquixncÙgz’jhvdbk`
это та же самая строка, которую все остальные используют сжатые настолько, насколько Japt может сжать ее (на 3 байта короче, чем оригинал!). Единственный в настоящее время встроенный инструмент сжатия Japt заменяет обычные пары строчных букв однобайтовыми символами.Итак, давайте рассмотрим реальный код:
Затем
£
используется для замены каждого элементаX
в результате, как это:Результатом является массив символов в этой точке, поэтому
-P
флаг объединяет его в одну строку, и результат неявно отправляется на вывод.источник
Желе , 40 байт
Попробуйте онлайн!
Проверьте все тестовые случаи одновременно! (слегка модифицированный)
источник
Pyth ,
5447 байт7 байтов благодаря isaacg
(
❤
представляет непечатаемый символ)Pyth не имеет много основных встроенных модулей ...
HexDump:
Попробуйте онлайн!
источник
J , 59 байт
Попробуйте онлайн!
Довольно просто...
источник
PHP, 173 байта
Онлайн версия
расширенный
PHP, 178 байт
Онлайн версия
расширенный
источник
Python, 1420 байт
Это может быть определенно закорочено, но это моя попытка решить это без чисел или строковых литералов. Я понимаю, что это проблема кода в гольф, и это не совсем короткая, но все равно хотела поделиться, не уверенная, нарушает ли это какие-либо правила или нет.
Было очень весело сделать, я использовал алгоритм в этом посте, чтобы уменьшить числовое представление ASCII "SPMFLQUIXNCWORAGZTEJHVDBKY" в выражении битового сдвига, которое я использую. Я также, как правило, черпал много вдохновения из этого блога, я хотел попробовать его сам, и это казалось хорошим испытанием.
Вот немного более читаемая версия, с некоторыми более разумными именами переменных
источник