Numeronym (также известный как «численное сокращение»), когда слово укорачивается с помощью чисел. Обычный метод сокращения состоит в том, чтобы использовать длину заменяемой подстроки для замены всех, кроме первого и последнего символов. Например, используйте i18n
вместо internationalization
или L10n
вместоlocalization
. ( L
Заглавная буква, поскольку строчная выглядит слишком похоже на 1
.)
Конечно, несколько слов в одной и той же фразе могут иметь одну и ту же сокращенную форму, поэтому ваша задача - преобразовать группу слов в их нумеронимы, или, если существует несколько разных слов с одинаковым нумеронимом, ваша программа должна дать результат A7s R4t
, сокращенно Ambiguous Result
(да, я знаю, что этот результат сам по себе является неоднозначным результатом.)
Правила:
- Используйте программу или функцию и напечатайте или верните результат.
- Ввод принимается как одна строка.
- Выходные данные представляют собой одну строку слов, разделенных пробелом.
- Ваша программа не должна преобразовывать слова длиной 3 и не должна преобразовывать более короткие слова.
- Если
l
(строчная буква ell) встречается перед1
(одной), она должна быть прописной. - Если
I
перед1
(одним) должен быть (заглавный глаз) , он должен быть сделан строчными. - На входе будет печататься ASCII и пробелы. Слова разделены пробелами.
- Самый короткий код выигрывает.
Примеры:
A7s R4t -> A7s R4t (OR: A1s R1t, etc)
Ambiguous Result -> A7s R4t
Billy goats gruff -> B3y g3s g3f
Thanks for the Memories -> T4s f1r the M6s (one possible answer, NOT: Thnks fr th Mmrs)
Programming Puzzles & Code Golf -> P9g P5s & C2e G2f
globalization -> g11n
localizability -> L12y
Internationalization or antidisestablishmentarianism -> i18n or a26m
Internationalization or InternXXXXXalization -> A7s R4t
what is this fiddle and faddle -> A7s R4t
A be see -> A be s1e (OR: A be see)
see sea -> s1e s1a (OR: see sea)
2B or not 2B -> 2B or not 2B (OR: 2B or n1t 2B. 2 letters, don't change, don't count as ambiguous)
this example is this example -> t2s e5e is t2s e5e (same words aren't ambiguous)
l1 -> l1 (2 letters, don't change.)
I1 -> I1 (2 letters, don't change.)
Изменить: Если кто-то не получил ссылку: Спасибо от Mmrs
l1
становятсяL1
или остаются какl1
?example example
было быe5e e5e
, но было бы хорошо включить тестовый пример, который охватывает это.2B or not 2B
и после.)Ответы:
J, 92 байта
Длинная цепочка составленных звонков. Первая часть - это просто форк: литерал
joinstring
и функция (в J1 (10 + +) 2
это(10 + (1 + 2))
). Вторая часть - это функция. Дваrplc
вызова должны заменить I / I, когда они могут быть перепутаны.&
это составление и составление оператора со значением карри. (поэтому3&+
дает функцию, которая ожидает добавления второго аргумента). Наконец, последняя часть - это функция, которая принимает первое, length-2 (составленное со строковым форматированием) и последнее.&>&;:
бит в конце составляет эту функцию (которая должна быть применено к каждому аргументу) к>
() распаковка, потому что;:
(сплит слова) возвращает список (коробочный , так что каждый элемент может иметь различную длину).пример:
источник
Cache ObjectScript , 231 байт
Это было бы хорошим MUMPS, совместимым со стандартами, если бы не этот неприятный
$REPLACE
вызов, который не является частью стандарта. Реализация этого в чистом М занимает хорошие 80-ые байты, поэтому я не пошел по этому пути.Точка входа есть
$$z("your string here")
, которая возвращается"y2r s4g h2e"
и так далее.источник
C #,
280274 байтаПервый раз гольфист здесь! В последнее время мне нравилось их читать, и я подумал, что могу попробовать сам! Наверное, не лучшее решение, ну да ладно!
То же самое, что не разгневано:
Спасибо, парни!
источник
Perl,
131120 байтЯ добавил байт для использования
-p
переключателя:объяснение
источник
s/(\w)(\w+)(\w)/$1.length($2)."$3_$2"/ge
→s/\B(\w+)(\w)/length($1)."$2_$1"/ge
.[Il]
только до того, как1
сэкономил пару байтов!JavaScript (ES6), 165 байт
объяснение
Тестовое задание
Показать фрагмент кода
источник
JavaScript ES6, 162
Меньше гольфа
Тестовое задание
Показать фрагмент кода
источник
Python 2, 185 байт
источник
Питон 3, 160
Я хотел бы найти хороший способ заменить эти вызовы замены.
С некоторыми тестами:
источник
Фактор,
4835 байт, неконкурентныйЭто лямбда, которая идет в стек, технически не соответствует действительно раздражающе жестким требованиям, которые мне изначально удалось пропустить.
Использует
english
словарный запас.Или, если мы вставим
a10n
слово библиотеки, то 131 байт (с автоимпортом):источник