Numeronym (znany również jako „skurcz numerycznego”) jest, gdy słowo jest skrócony za pomocą liczb. Powszechną metodą skurczu jest użycie długości zastąpionego podciągu do zastąpienia wszystkich znaków oprócz pierwszego i ostatniego. Na przykład użyj i18n
zamiast internationalization
lub L10n
zamiastlocalization
. ( L
Wielkie litery są pisane wielką literą, ponieważ wyglądają zbyt podobnie do 1
.)
Oczywiście kilka słów w tej samej frazie może mieć tę samą skróconą formę, więc Twoim zadaniem jest konwersja grupy słów na ich numeronimy lub w przypadku, gdy istnieją inne słowa o tym samym numerze, twój program powinien podać wynik A7s R4t
, skrót od Ambiguous Result
(tak, wiem, że sam ten wynik jest wynikiem niejednoznacznym).
Zasady:
- Użyj programu lub funkcji i wydrukuj lub zwróć wynik.
- Dane wejściowe są traktowane jako pojedynczy ciąg.
- Dane wyjściowe to pojedynczy ciąg słów rozdzielanych spacjami.
- Twój program nie musi konwertować słów o długości 3 i nie powinien konwertować krótszych słów.
- Jeśli
l
przed1
(jednym) wystąpi (mała litera ), powinna być wielka. - Jeśli
I
(wielkie) oko wystąpi przed1
(jednym), powinno być wykonane małymi literami. - Dane wejściowe będą drukowalne ASCII i spacje. Słowa są oddzielone spacjami.
- Najkrótszy kod wygrywa.
Przykłady:
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.)
Edycja: Jeśli ktoś nie dostał referencji: Thnks fr th Mmrs
l1
stają sięL1
lub pozostają jakol1
?example example
byłbye5e e5e
, ale dobrze byłoby, aby to przypadek testowy, który obejmuje ten.2B or not 2B
i później.)Odpowiedzi:
J, 92 bajty
Długi łańcuch złożonych połączeń. Pierwsza część to tylko rozwidlenie: literał
joinstring
i funkcja (w J1 (10 + +) 2
jest(10 + (1 + 2))
). Druga część to funkcja. Dwarplc
wezwania mają zastąpić I / l, gdy można je pomylić.&
to kompozycja i komponowanie operatora z curry wartości. (3&+
daje więc funkcję, która oczekuje, że drugi argument zostanie dodany). Wreszcie ostatnia część jest funkcją, która przyjmuje pierwszą, długość-2 (złożoną ze strunizacji) i ostatnią.&>&;:
nieco na końcu komponuje tej funkcji (które powinny być stosowane do każdego argumentu) do>
(unboxing), ponieważ;:
(Split słowa) zwraca listę box (tak, że każdy element może mieć inną długość).przykład:
źródło
Caché ObjectScript , 231 bajtów
Byłby to MUMPS zgodny z dobrymi standardami, gdyby nie to nieznośne
$REPLACE
wezwanie, które nie jest częścią standardu. Ponowne wdrożenie go w czystym M zajmuje dobre 80-bajtowe bajty, więc nie poszedłem tą drogą.Punktem wejścia jest
$$z("your string here")
, który powraca"y2r s4g h2e"
i tak dalej.źródło
C #,
280274 bajtówPierwszy golfista tutaj! Ostatnio lubię je czytać, więc pomyślałem, że sam mogę je wypróbować! Prawdopodobnie nie najlepsze rozwiązanie, ale cóż!
Ta sama rzecz bez golfa:
Dzięki chłopaki!
źródło
Perl,
131120 bajtówDodałem bajt do używania
-p
przełącznika:Wyjaśnienie
źródło
s/(\w)(\w+)(\w)/$1.length($2)."$3_$2"/ge
→s/\B(\w+)(\w)/length($1)."$2_$1"/ge
.[Il]
tylko wcześniej1
- zaoszczędziłem też kilka bajtów!JavaScript (ES6), 165 bajtów
Wyjaśnienie
Test
Pokaż fragment kodu
źródło
JavaScript ES6, 162
Mniej golfa
Test
Pokaż fragment kodu
źródło
Python 2, 185 bajtów
źródło
Python 3, 160
Chciałbym znaleźć dobry sposób na zastąpienie tych połączeń zastępczych.
W przypadku niektórych przypadków testowych:
źródło
Współczynnik,
4835 bajtów, niekonkurującyTo lambda, która wchodzi na stos, która technicznie nie spełnia naprawdę irytująco trudnych wymagań, które pierwotnie udało mi się przeoczyć.
Wykorzystuje
english
słownictwo.Lub, jeśli wstawimy
a10n
słowo biblioteki, to 131 bajtów (z automatycznym importem):źródło