você está aqui: Home  → Arquivo de Mensagens

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:

  1. 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.

  2. Seria fácil fazer tudo isto em um programa em qualquer linguagem, mas a brincadeira é justamente fazê-lo com as ferramentas prontas do ambiente.

  3. 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.


 

 

Veja a relação completa dos artigos de Fernando M. Roxo da Motta

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script