Seu desafio é escrever um programa para traduzir (inglês) leetspeak / lolspeak / txtspk para o inglês normal. Seu programa deve ler de entrada e saída padrão para saída padrão, a menos que seu idioma não os suporte.
Você pode usar um arquivo que contém uma lista de palavras no idioma inglês, separadas por novas linhas. Ele deve ser chamado W
e estará localizado no mesmo diretório do seu programa. (Nos sistemas GNU / Linux e possivelmente em outros, você pode criar W
um link para /usr/share/dict/words
) A lista não precisa estar em letras minúsculas, você pode usá-lo para determinar se as palavras devem ter letras maiúsculas.
Isso se baseia em uma pergunta agora excluída postada por Nikos M., que pode ser encontrada aqui . Esta não é uma duplicata, pois esta pergunta original foi encerrada e não recebeu nenhuma resposta, porque não havia critério de vencimento e o usuário não estava disposto a colocá-lo.
Pontuação
A pontuação é um pouco complicada!
Sua pontuação é
(leet items + bonuses) * 10 / (code length)
Maior pontuação ganha.
Seu programa não precisa ser e provavelmente não pode ser perfeito, mas quanto mais preciso, mais bônus ele recebe!
Desde $
pode significar tanto s
e S
, você recebe um bônus de 5 pontos por item leet para decidir se ele deve ter uma letra maiúscula (letras maiúsculas ou seja, no início de frases).
Você recebe um bônus adicional de 5 pontos por item leet para implementar substantivos próprios (palavras que sempre possuem maiúsculas) - a maneira como isso funciona é que você examinaria a lista de palavras, tornaria a saída maiúscula se apenas uma versão maiúscula estiver presente no lista, e se as duas versões estiverem lá, apenas adivinhe.
Se um personagem tiver dois significados (por exemplo, 1
pode significar L
ou I
), você ganha 20 pontos por item leet por escolher apenas as traduções do item que produzem palavras reais em inglês - use a lista de palavras para isso. Se mais de uma tradução de um item leet formar uma palavra em inglês real, você poderá escolher arbitrariamente uma das traduções válidas e ainda assim obter o bônus.
Lista de Leet
Estes são os itens leet que você pode implementar. Você não precisa implementar todos eles, mas quanto mais você adicionar, mais pontos receberá.
Você nunca pode marcar pontos traduzindo um item ou personagem para si mesmo. Esta regra substitui quaisquer erros que eu possa ter cometido na lista.
É tentador fazer um simples tr
ou s/.../.../g
. O verdadeiro desafio é determinar qual dos múltiplos significados poderia ou não estar correto, usando a lista de palavras.
Itens Leet (cada um deles adiciona 1 a leet items
na fórmula)
$ -> s, S (-> c, C 5 -> s, S @ -> a, A 4 -> a, A 3 -> e, E 7 -> t, T + -> t, T # -> h, H teh -> o 'd -> ed pwnd -> pwned pwnt -> pwned k, K -> OK kk -> OK 0 [zero] -> o, O y, Y -> por que 4 -> para txt -> texto dafuq -> que porra é essa / \, ^ -> a, A \ / -> v, V d00d -> cara n00b -> novato \ / \ / -> w, W 8 -> b, B | _ | -> u, U | - | -> h, H Я -> r, R j00 -> você joo -> você vv, VV -> w, W tomoz -> amanhã | <-> k, K [), |) -> d, D <3 -> amor > <-> x, X 10100111001 -> leet (representação binária de 1337) 2 -> também ur, UR -> seu, você é (não é necessário distinguir corretamente entre os dois) você, você 8 -> -ate-, 8 x, X -> -ks -, - cks- z, Z -> s, S 1 -> i, eu, eu, L ! -> eu, eu! c, C -> ver, C, mar b, B -> ser, B, abelha [letra acentuada] -> [formulário sem acentuação] (pontuação 1 por letra acentuada suportada) &, 7 -> e, anned, ant (pode ser usado no meio de uma palavra)
"Leet" mais difícil: faça 30 pontos por leet items
cada
!!! 1 !! 1-> !!!!!!! (traduza 1's em uma sequência de! 's para!' s) !!! um! -> !!!!! ! eleven-> !!!
Exemplos
Estes são exemplos do que um programa que implementa todos os personagens leet acima e alguns dos bônus pode ser capaz de fazer:
Exemplo de frase: |-|3 15 $|_|(# @ n00b
=He is such a newbie
Censura baseada em Leet: $#!+
=s**t
Extreme leet: \/\/ 1 |< 1 P 3 [) 1 A
=Wikipedia
-xor sufixo: H4X0R
=hacker
Leet mais extremo: @1\/\/4Y5 p0$+ ur n3VV qu35710nz 1n teh $&80x
=Always post your new questions in the sandbox
Exemplo de Pontuação
Bash, 10 caracteres, 3 itens, sem bônus:
tr 137 let
Isso marca ( 1 * 3 ) * 10 / 10 = 3
.
tr
ou s/.../.../g
. Apenas traduzir coisas como que faria um desafio chato, por isso precisamos para recompensar melhores traduções que usam a lista de palavras
sed
script.)
sed
script, quero dizer mais do que um simples s/.../.../g
, mas um arquivo que é analisado e executado por sed
si só. Como concisa como a língua é, pode ser uma linguagem golfable decente ...
sed
scripts também são bons e podem ser muito interessantes, pois eles podem se sair muito bem devido à breve sintaxe de substituição. Você pode ler a lista de palavras, com extensões GNU ou usando sed
como parte de um programa Bash maior