Un numéronyme (également connu sous le nom de «contraction numérique») est lorsqu'un mot est raccourci à l'aide de chiffres. Une méthode de contraction courante consiste à utiliser la longueur de la sous-chaîne remplacée pour remplacer tous les caractères sauf le premier et le dernier. Par exemple, utilisez i18n
au lieu de internationalization
ou L10n
au lieu delocalization
. (Le L
est en majuscule car un minuscule ressemble trop au 1
.)
Bien sûr, plusieurs mots dans la même phrase peuvent avoir la même forme abrégée, donc votre travail consiste à convertir un groupe de mots en leurs noms, ou dans le cas où il existe des mots différents avec le même numéro, votre programme devrait donner un résultat de A7s R4t
, abréviation de Ambiguous Result
(oui, je sais que ce résultat est lui-même un résultat ambigu.)
Règles:
- Utilisez un programme ou une fonction et imprimez ou renvoyez le résultat.
- L'entrée est prise comme une seule chaîne.
- La sortie est une seule chaîne de mots séparés par des espaces.
- Votre programme n'a pas besoin de convertir des mots de longueur 3 et ne doit pas convertir des mots plus courts.
- Si un
l
(ell minuscule) se produisait avant un1
(un), il devrait être mis en majuscule. - Si un
I
(œil majuscule) se produisait avant un1
(un), il devrait être mis en minuscule. - L'entrée sera ASCII imprimable et des espaces. Les mots sont séparés par des espaces.
- Le code le plus court gagne.
Exemples:
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.)
Edit: Si quelqu'un n'a pas obtenu la référence: Merci à Mmrs
l1
devient-elleL1
ou reste-l1
t-elle?example example
seraite5e e5e
, mais il serait bon d'inclure un test qui couvre cela.2B or not 2B
et après.)Réponses:
J, 92 octets
Une longue chaîne d'appels composés. La première partie est juste un fork: un littéral
joinstring
, et une fonction (dans J,1 (10 + +) 2
is(10 + (1 + 2))
). La deuxième partie est la fonction. Les deuxrplc
appels doivent remplacer les I / l lorsqu'ils pourraient être confondus.&
est la composition et la composition d'un opérateur avec une valeur currys. (3&+
donne donc une fonction qui s'attend à ce que le 2e argument soit ajouté). Enfin, la dernière partie est la fonction qui prend la première, la longueur-2 (composée avec stringification) et la dernière. le&>&;:
bit à la fin compose cette fonction (qui doit être appliquée à chaque argument) à>
(unboxing), car;:
(mots fractionnés) renvoie une liste encadrée (de sorte que chaque élément puisse avoir une longueur différente).exemple:
la source
Caché ObjectScript , 231 octets
Ce serait un bon MUMPS conforme aux normes s'il n'y avait pas cet
$REPLACE
appel embêtant , qui ne fait pas partie de la norme. La réimplémentation en M pur prend 80 bons octets, donc je n'ai pas suivi cette voie.Le point d'entrée est
$$z("your string here")
, qui revient"y2r s4g h2e"
, et ainsi de suite.la source
C #,
280274 octetsGolfeur pour la première fois ici! J'ai apprécié lire ces derniers temps et j'ai donc pensé que je pourrais en essayer moi-même! Probablement pas la meilleure solution, mais bon!
Même chose sans golf:
Merci les gars!
la source
Perl,
131120 octetsJ'ai ajouté un octet pour utiliser le
-p
commutateur:Explication
la source
s/(\w)(\w+)(\w)/$1.length($2)."$3_$2"/ge
→s/\B(\w+)(\w)/length($1)."$2_$1"/ge
.[Il]
seulement avant1
- économisé quelques octets aussi!JavaScript (ES6), 165 octets
Explication
Tester
Afficher l'extrait de code
la source
JavaScript ES6, 162
Moins golfé
Tester
Afficher l'extrait de code
la source
Python 2, 185 octets
la source
Python 3, 160
J'adorerais trouver un bon moyen de remplacer ces appels de remplacement.
Avec quelques cas de test:
la source
Facteur,
4835 octets, sans concurrenceC'est une lambda qui va sur la pile, qui ne répond pas techniquement aux exigences vraiment énervantes que j'ai réussi à ignorer à l'origine.
Utilise le
english
vocabulaire.Ou, si nous alignons le
a10n
mot de bibliothèque, alors 131 octets (avec les importations automatiques):la source