Así, los norteamericanos (y en otros países donde tenían el mismo tipo de teclados) podían comunicarse entre sí los números de teléfono de forma cómoda si, en vez de decir los 9 o 10 dígitos, asociaban algunas de las pulsaciones de las teclas de ese número a una palabra que se formara con las letras correspondientes a esas mismas pulsaciones. A eso se le llama Phonewords
Un ejemplo. Una organización de lucha contra el tabaco tenía como número de teléfono el 800 667 665 464. En sus anuncios en televisión podría anunciar ese número de contacto así, o como 800-NOSMOKING.
En otros países, no tenemos esa cultura o costumbre, porque desde el principio, las compañías telefónicas comenzaron asignando rangos amplios de números para cada zona, y separando unas de otras con los 'prefijos'. Así, en España, cada provincia tenía su prefijo. Y también por esa razón, en los teclados de marcado nunca aparecieron las letras, hasta bien entrados los años 90, con la aparición de los teclados de los teléfonos móviles y la estandarización de los diferentes teclados.
El caso es que la introducción de este tipo de dar los números de teléfono se está haciendo de forma muy lenta, aunque se ha probado que su uso hace aumentar entre un 30% y un 60% el número de respuestas o llamadas de clientes, por la facilidad en el recuerdo del número.
En España, por ejemplo, tenemos el caso de la organización Canal de Isabel II, donde, como veis, anuncia su teléfono de llamada gratuita 900 022 625 como 9000-CANAL. Pero como esto es una forma muy extraña para la mayoría de los usuarios, pone los números en tamaño más pequeño debajo de la palabra.
Bueno... se acabó la introducción y metámonos en faena, que consistirá en que dado un número de teléfono (de 6 a 14 dígitos), encontrar todas las palabras que podemos formar si usáramos letras en lugar de números.
Las combinaciones números-letras es la siguiente:
- Código: Seleccionar todo
2 - abc
3 - def
4 - ghi
5 - jkl
6 - mno
7 - pqrs
8 - tuv
9 - wxyz
El diccionario de palabras será un fichero de texto, con una palabra por línea (lo que se conoce normalmente por una wordlist). Tener en cuenta que en este fichero, aunque todas las palabras están escritas en minúsculas, pueden estar acentuadas.
Por ejemplo, dado el número de teléfono 609752762, una posible salida sería
- Código: Seleccionar todo
595946 palabras leídas
609752762 a 2 60975a76a
609752762 arma 2762 60975arma
609752762 aro 276 60975aro2
609752762 aró 276 60975aró2
609752762 as 27 60975as62
609752762 asma 2762 60975asma
609752762 aso 276 60975aso2
609752762 asó 276 60975asó2
609752762 croa 2762 60975croa
609752762 jaro 5276 6097jaro2
609752762 jaso 5276 6097jaso2
609752762 jasó 5276 6097jasó2
609752762 ka 52 6097ka762
609752762 kas 527 6097kas62
609752762 la 52 6097la762
609752762 lapo 5276 6097lapo2
609752762 lar 527 6097lar62
609752762 las 527 6097las62
609752762 laso 5276 6097laso2
609752762 na 62 6097527na
609752762 o 6 o097527o2
609752762 oc 62 6097527oc
609752762 plasma 752762 609plasma
609752762 ro 76 609752ro2
609752762 roa 762 609752roa
609752762 so 76 609752so2
Esto es fácil (una palabra por cada número), pero una posible mejora sería la de poder incluir más de una palabra en el mismo número.
¿Cómo hacerlo en Perl?