A Palavra mais longa que se digita com a mão esquerda
Colaboração: Fernando M. Roxo da Motta
Data de Publicação: 01 de December de 2008
Eu tropecei com um artigo que, como este texto, é cheio de inutilidades que
podem ficar guardadas e magicamente invocadas nos momentos mais necessários.
O artigo (em inglês) é :
Longest word typed with only the left hand
É claro que a palavra to (con)texto é em inglês. A regra é simples, no
teclado americano (QWERTY) usadas tecnicamente pela mão esquerda são as
das letras "asdfgqwertzxcvb" apenas. Usando somente estas teclas, qual a
palavra mais longa de se digitar. Existem algumas subregras que são usadas
para eliminar alguns tipos de flexões, mas isto não vem ao caso.
Ok, a minha "coceira" (ver Cathedral and Bazaar do Eric Raymond) é :
E na língua portuguesa ?
Eu não me proponho da dar a resposta definitiva, afinal não sei onde
obter um lista completa das palavras da língua portuguesa, mas eu tenho na
minha máquina um lista bem longa instalada no pacote "aspell" que possui
vocabulários de várias línguas, inclusive a portuguesa. O primeiro passo
é saber como listar o conteúdo de um vocabulário. Esta foi fácil, eu
tenho um amigo que sabe tudo, é um tal de Google que talvez vocês já
tenham ouvido falar. Ele me disse que basta usar o comando :
$ aspell dump master
E teríamos a lista. Para testar usei :
$ aspell dump master| wc -l
261798
E fiquei sabendo que existem lá 261.798 palavras da última, inculta porém
mais bela flor do Lácio !!! Uma boa quantidade, certamente bem além do
usado no dia-a-dia do Pindorama. O dicionário "master" é aquele cuja
língua é a padrão da sua instalação. No meu caso é "pt_BR.utf8" (use:
echo $LANG). Para listar o conteúdo de uma outra língua use a
especificação na linha de comando :
$ aspell -l en dump master| wc -l
138600
$ aspell -l fr dump master| wc -l
Error: The file "/usr/lib64/aspell-0.60/fr" can not be opened for reading.
0
Então eu tenho um vocabulário de 138.600 palavras da língua inglesa e
não tenho nada da língua francesa.
Ok, o próximo passo é selecionar destas aquelas em que se usa somente as
teclas desejadas. Para isto usamos o 'sed' indicando que ele deve buscar
uma seqüência com pelo menos uma ocorrência de pelo menos um dos carateres
da relação desejada :
$ aspell dump master| grep -i '[asdfgqwertzxcvb]\+'|wc -l
261587
Hmmmm.... Isto não está certo... Praticamente o mesmo número
original ? Não faz sentido. Onde foi que errei ?
Ah ! Claro ! Eu pedi ao 'grep' para listar palavras que contivessem
seqüências daqueles caracteres, mas não _apenas_ aqueles !! Desta forma
paravras como "alargaram", que contém um "m" e um "l" indesejados, também
são contadas. Ok, vamos mudar a pesquisa para :
$ aspell dump master| grep -i '^[asdfgqwertzxcvb]\+$'|wc -l
4027
Bingo ! Qual foi a mudança ? Eu pedi para ter apenas uma seqüência
daqueles caracteres entre o início da linha (^) e o fim da linha ($).
Desta forma palavras que tenham caracteres fora da relação são são
contados.
Ok. Agora o próximo problema, qual a maior palavra ? Para isto eu
preciso saber o tamanho das palavras. Provavelmente existe algum meio
usando um 'sed', ou o 'ed' ou alguma outra ferramenta de uso fácil para
isto, mas eu achei mais fácil usar o 'awk' :
$ aspell dump master| grep -i '^[asdfgqwertzxcvb]\+$'| \
awk '{ print length() " " $0}'
1 a
1 e
3 aba
.... longa lista truncada .....
8 zerastes
6 zerava
7 zeravas
Já temos a lista com o comprimento de cada palavra, portanto agora é
"mamão com açúcar" ! Basta ordenar :
$ aspell dump master| grep -i '^[asdfgqwertzxcvb]\+$'| \
awk '{ print length() " " $0}' | sort -n
1 a
1 d
1 e
..... longa lista truncada .....
14 recadastrasses
14 recadastrastes
15 extraterrestres
Hmmm.... O que será aquele "d" ? Não importa. O fato é que já temos
a maior palavra _do_vocabulário_instalado_ que pode ser digitada usando
somente as teclas reservadas para a mão esquerda: "extraterrestres".
Apenas como curiosidade extra, se tirarmos o 'sed' da canalização acima
("pipe" para os menos versado na língua de Camões e Machado de Assis)
ficaremos sabendo que as maiores palavras _do_vocabulário_instalado_ são :
23 constitucionalizaríamos
23 constitucionalizássemos
23 interdisciplinariedades
Algumas notas finais:
- Isto não é um filme de "Highlander", onde "só pode haver um" ! O mais
fantástico do mundo Linux/Unix é justamente existirem várias formas de se
fazer a mesma coisa. A diversão é descobrí-las.
- Seria fácil fazer tudo isto em um programa em qualquer linguagem, mas a
brincadeira é justamente fazê-lo com as ferramentas prontas do ambiente.
- Mesmo usando apenas as ferramentas prontamente disponíveis no ambiente da
SHELL existem várias foramas de fazê-lo e espero que contribuam com outras
possibilidades interessantes.