Um numerônimo (também conhecido como "contração numérica") ocorre quando uma palavra é reduzida usando números. Um método comum de contração é usar o comprimento da substring substituída para substituir todos, exceto o primeiro e o último caracteres. Por exemplo, use em i18n
vez de internationalization
ou em L10n
vez delocalization
. (O valor L
é maiúsculo, uma vez que uma minúscula se parece muito com a 1
.)
Obviamente, várias palavras na mesma frase podem ter a mesma forma abreviada; portanto, seu trabalho é converter um grupo de palavras em seus numerônimos ou, caso exista algumas palavras diferentes com o mesmo numerônimo, seu programa deve fornecer um resultado de A7s R4t
, abreviação de Ambiguous Result
(sim, eu sei que esse resultado é um resultado ambíguo.)
Regras:
- Use um programa ou função e imprima ou retorne o resultado.
- A entrada é tomada como uma única sequência.
- A saída é uma única sequência de palavras delimitadas por espaço.
- Seu programa não precisa converter palavras com o comprimento 3 e não deve converter palavras mais curtas.
- Se um
l
(ell em minúsculas) ocorrer antes de um1
(um), ele deve ser colocado em maiúsculas. - Se um
I
(olho em maiúscula) ocorrer antes de um1
(um), ele deverá estar em minúscula. - A entrada será ASCII e espaços imprimíveis. As palavras são separadas por espaços.
- O menor código vence.
Exemplos:
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: Se alguém não obteve a referência: Thnks fr th Mmrs
l1
tornarL1
- se ou permanecer comol1
?example example
e5e e5e
2B or not 2B
e depois.) #Respostas:
J, 92 bytes
Uma longa cadeia de chamadas compostas. A primeira parte é apenas uma bifurcação: uma literal
joinstring
, e uma função (em J,1 (10 + +) 2
é(10 + (1 + 2))
). A segunda parte é a função. As duasrplc
chamadas são para substituir o I / l quando puderem ser confundidas.&
é composição e compondo um operador com um valor atual. (3&+
fornece uma função que espera que o segundo argumento seja adicionado). Finalmente, a última parte é a função que leva a primeira, o comprimento-2 (composto com stringificação) e a última. o&>&;:
bit no final compõe esta função (que deve ser aplicada a todos os argumentos) para>
(sem caixa), porque;:
(palavras divididas) retorna uma lista em caixa (para que cada elemento possa ter comprimento diferente).exemplo:
fonte
ObjectScript em cache , 231 bytes
Seria um bom MUMPS compatível com os padrões, se não fosse por essa
$REPLACE
chamada traquina , que não faz parte do padrão. Reimplementá-lo em M puro requer bons 80 bytes, por isso não segui esse caminho.O ponto de entrada é
$$z("your string here")
, que retorna"y2r s4g h2e"
e assim por diante.fonte
C #,
280274 bytesPrimeira vez golfista aqui! Tenho gostado de ler isso ultimamente e então pensei em experimentar alguns! Provavelmente não é a melhor solução, mas tudo bem!
A mesma coisa não destruída:
Obrigado rapazes!
fonte
Perl,
131120 bytesAdicionei um byte para usar a
-p
opção:Explicação
fonte
s/(\w)(\w+)(\w)/$1.length($2)."$3_$2"/ge
→s/\B(\w+)(\w)/length($1)."$2_$1"/ge
.[Il]
apenas antes1
- salvei alguns bytes também!JavaScript (ES6), 165 bytes
Explicação
Teste
Mostrar snippet de código
fonte
JavaScript ES6, 162
Menos golfe
Teste
Mostrar snippet de código
fonte
Python 2, 185 bytes
fonte
Python 3, 160
Gostaria de encontrar uma boa maneira de substituir as chamadas de substituição.
Com alguns casos de teste:
fonte
Fator,
4835 bytes, não-competitivoÉ um lambda que fica na pilha, que tecnicamente não atende aos requisitos realmente irritantemente difíceis que eu originalmente consegui ignorar.
Usa o
english
vocabulário.Ou, se incorporarmos a
a10n
palavra da biblioteca, em seguida, 131 bytes (com importação automática):fonte