Ein Numeronym (auch als "numerische Kontraktion" bezeichnet) ist, wenn ein Wort mit Zahlen gekürzt wird. Eine übliche Kontraktionsmethode besteht darin, die Länge des ersetzten Teilstrings zu verwenden, um alle bis auf das erste und das letzte Zeichen zu ersetzen. Verwenden Sie beispielsweise i18n
anstelle von internationalization
oder L10n
anstelle vonlocalization
. (Das L
wird groß geschrieben, da ein Kleinbuchstabe dem zu ähnlich sieht 1
.)
Natürlich können mehrere Wörter in derselben Phrase dieselbe abgekürzte Form haben. Ihre Aufgabe besteht also darin, eine Gruppe von Wörtern in ihre Numeronyme umzuwandeln. Falls es verschiedene Wörter mit demselben Numeronym gibt, sollte Ihr Programm eine geben Ergebnis von A7s R4t
, kurz für Ambiguous Result
(ja, ich weiß, dass dieses Ergebnis selbst ein mehrdeutiges Ergebnis ist.)
Regeln:
- Verwenden Sie ein Programm oder eine Funktion und drucken Sie das Ergebnis aus oder geben Sie es zurück.
- Die Eingabe erfolgt als einzelne Zeichenfolge.
- Die Ausgabe besteht aus einer einzelnen Zeichenfolge von durch Leerzeichen getrennten Wörtern.
- Ihr Programm muss keine Wörter mit der Länge 3 konvertieren und sollte keine kürzeren Wörter konvertieren.
- Wenn ein
l
(Kleinbuchstabe) vor einem1
(Eins) auftreten würde , sollte es in Großbuchstaben geschrieben werden. - Wenn ein
I
(Großbuchstaben) vor einem1
(Eins) auftreten würde , sollte es in Kleinbuchstaben geschrieben werden. - Die Eingabe erfolgt über ASCII und Leerzeichen. Wörter werden durch Leerzeichen getrennt.
- Der kürzeste Code gewinnt.
Beispiele:
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.)
Bearbeiten: Wenn jemand die Referenz nicht bekam: Danke für die Frau
l1
werdenL1
als oder Aufenthaltl1
?example example
wäree5e e5e
, aber es wäre gut , einen Testfall einschließen , die diese abdeckt.2B or not 2B
und danach)Antworten:
J, 92 Bytes
Eine lange Kette zusammengesetzter Anrufe. Der erste Teil ist nur eine Gabelung: ein Literal
joinstring
und eine Funktion (in J1 (10 + +) 2
ist(10 + (1 + 2))
). Der zweite Teil ist die Funktion. Die beidenrplc
Aufrufe sollen die E / A ersetzen, wenn sie verwechselt werden könnten.&
ist Komposition und Zusammensetzen eines Operators mit einem Wert curies. (3&+
gibt also eine Funktion an, die erwartet, dass das 2. Argument hinzugefügt wird). Schließlich ist der letzte Teil die Funktion, die den ersten, die Länge 2 (zusammengesetzt mit Stringifizierung) und den letzten übernimmt. Das&>&;:
Bit am Ende setzt diese Funktion (die auf jedes Argument angewendet werden sollte) auf>
(Unboxing) zusammen, da;:
(geteilte Wörter) eine Boxliste zurückgibt (so dass jedes Element eine andere Länge haben kann).Beispiel:
quelle
Caché ObjectScript , 231 Byte
Ohne diesen nervigen
$REPLACE
Anruf, der nicht Teil des Standards ist, wären dies MUMPS, die den alten Standards entsprechen. Die Neuimplementierung in reinem M dauert gut 80 Bytes, also bin ich diesen Weg nicht gegangen.Der Einstiegspunkt ist
$$z("your string here")
, der zurückkehrt"y2r s4g h2e"
und so weiter.quelle
C #,
280274 BytesZum ersten Mal hier Golfer! Ich habe es in letzter Zeit genossen, diese zu lesen, und deshalb dachte ich, ich könnte einige selbst ausprobieren! Wahrscheinlich nicht die beste Lösung, aber na ja!
Gleiches ungolfed:
Danke Leute!
quelle
Perl,
131120 BytesIch habe ein Byte für die Verwendung des
-p
Schalters hinzugefügt :Erläuterung
quelle
s/(\w)(\w+)(\w)/$1.length($2)."$3_$2"/ge
→s/\B(\w+)(\w)/length($1)."$2_$1"/ge
.[Il]
erst vorher übersehen1
- auch ein paar Bytes gespart!JavaScript (ES6), 165 Byte
Erläuterung
Prüfung
Code-Snippet anzeigen
quelle
JavaScript ES6, 162
Weniger Golf gespielt
Prüfung
Code-Snippet anzeigen
quelle
Python 2, 185 Bytes
quelle
Python 3, 160
Ich würde gerne einen guten Weg finden, um diese Ersetzungsaufrufe zu ersetzen.
Mit einigen Testfällen:
quelle
Faktor,
4835 Bytes, nicht konkurrierendEs ist ein Lambda, das auf dem Stapel liegt und technisch nicht den wirklich ärgerlich harten Anforderungen entspricht, die ich ursprünglich übersehen habe.
Verwendet den
english
Wortschatz.Oder, wenn wir das
a10n
Bibliothekswort einbinden, dann 131 Bytes (mit automatischen Importen):quelle