Alfabeto Calculadora

Todo empezó con este mail en la lista del Gleducar.

La entrada: una lista de palabras representables en una calculadora normal simplemente girando el display.

Esto parece algo sin mucha utilidad, pero esta técnica es utilizada en muchos dispositivos con capacidades gráficas reducidas para mostrar mensajes de error u otra informaición adicional a la salida numérica.

En este archivo están las palabras a procesar enviadas a la lista de correos (en la selección original de palabras no se incluyeron aquellas con la letra ‘z’, pero también podrían haber sido elejidas para representar en Alfabeto Calculadora): palabras.txt

El programa

Almuerzo de por medio escribí este código y lo mandé a la lista del Gleducar como respuesta al reto: alfabeto_calc.py (update: tiene la corrección que me sugirió Alecu)

La forma de representación que elejí es esta: tomar todas las letras y conviértalas a mayúsculas excepto a la ‘h’ (‘h’ puede representarse con un ’4′ de calculadora invertido, pero ‘H’ no se puede representar con ningún número). Podemos representar la ‘l’ en minúsculas o en mayúscula (‘L’), al usar la mayúscula y representarla con el ’7′, nos guardamos el ’1′ para la ‘I’. Una vez que se tiene la palabra en formato upper_except_h cambiar cada letra por el número correspondiente e invertir el orden de los números.

Links para leer un poco más

Resultado

Esta es la salida que se obtiene al correr el programa en una terminal con el archivo palabras.txt en el mismo directorio:

be = BE = 38
bebe = BEBE = 3838
bebible = BEBIBLE = 3781838
beisbol = BEISBOL = 7085138
belio = BELIO = 01738
bello = BELLO = 07738
beso = BESO = 0538
bielgo = BIELGO = 097318
bilioso = BILIOSO = 0501718
bilis = BILIS = 51718
biologo = BIOLOGO = 0907018
bis = BIS = 518
bisbiseo = BISBISEO = 03518518
bisel = BISEL = 73518
biso = BISO = 0518
bobilis = BOBILIS = 5171808
bobillo = BOBILLO = 0771808
bobo = BOBO = 0808
bohio = BOhIO = 01408
boi = BOI = 108
bolillo = BOLILLO = 0771708
bollo = BOLLO = 07708
bolo = BOLO = 0708
bolsillo = BOLSILLO = 07715708
bolso = BOLSO = 05708
e = E = 3
eh = Eh = 43
el = EL = 73
ele = ELE = 373
elegible = ELEGIBLE = 37819373
eliseo = ELISEO = 035173
elisio = ELISIO = 015173
elle = ELLE = 3773
ello = ELLO = 0773
elogio = ELOGIO = 019073
elogioso = ELOGIOSO = 05019073
eolio = EOLIO = 01703
es = ES = 53
ese = ESE = 353
eso = ESO = 053
gel = GEL = 739
geologo = GEOLOGO = 0907039
giboso = GIBOSO = 050819
gil = GIL = 719
gili = GILI = 1719
gis = GIS = 519
globo = GLOBO = 08079
globoso = GLOBOSO = 0508079
gobio = GOBIO = 01809
gol = GOL = 709
goloso = GOLOSO = 050709
he = hE = 34
helio = hELIO = 01734
heliosis = hELIOSIS = 51501734
hibleo = hIBLEO = 037814
hiel = hIEL = 7314
hielo = hIELO = 07314
higo = hIGO = 0914
hilo = hILO = 0714
hiogloso = hIOGLOSO = 05079014
hobo = hOBO = 0804
ibis = IBIS = 5181
ilegible = ILEGIBLE = 37819371
ileo = ILEO = 0371
ileso = ILESO = 05371
le = LE = 37
legible = LEGIBLE = 3781937
lego = LEGO = 0937
leible = LEIBLE = 378137
lelili = LELILI = 171737
lelo = LELO = 0737
leo = LEO = 037
les = LES = 537
lesbio = LESBIO = 018537
leso = LESO = 0537
libelo = LIBELO = 073817
libio = LIBIO = 01817
liego = LIEGO = 09317
ligio = LIGIO = 01917
lilili = LILILI = 171717
lio = LIO = 017
lioso = LIOSO = 05017
lis = LIS = 517
lisis = LISIS = 51517
liso = LISO = 0517
lo = LO = 07
lobo = LOBO = 0807
loboso = LOBOSO = 050807
logis = LOGIS = 51907
o = O = 0
obelo = OBELO = 07380
obeso = OBESO = 05380
oboe = OBOE = 3080
obolo = OBOLO = 07080
obseso = OBSESO = 053580
oh = Oh = 40
oible = OIBLE = 37810
oislo = OISLO = 07510
ole = OLE = 370
oleo = OLEO = 0370
oleoso = OLEOSO = 050370
os = OS = 50
oseo = OSEO = 0350
oso = OSO = 050
se = SE = 35
sebe = SEBE = 3835
sebillo = SEBILLO = 0771835
sebo = SEBO = 0835
seboso = SEBOSO = 050835
seis = SEIS = 5135
seise = SEISE = 35135
sello = SELLO = 07735
seo = SEO = 035
ses = SES = 535
seseo = SESEO = 03535
sesgo = SESGO = 09535
seso = SESO = 0535
si = SI = 15
sibil = SIBIL = 71815
sieso = SIESO = 05315
sigilo = SIGILO = 071915
sigiloso = SIGILOSO = 05071915
siglo = SIGLO = 07915
silbo = SILBO = 08715
silboso = SILBOSO = 0508715
silesio = SILESIO = 0153715
silo = SILO = 0715
siseo = SISEO = 03515
so = SO = 05
sobeo = SOBEO = 03805
sobo = SOBO = 0805
sois = SOIS = 5105
sol = SOL = 705
soleo = SOLEO = 03705
solio = SOLIO = 01705
solo = SOLO = 0705
sos = SOS = 505
sosiego = SOSIEGO = 0931505
soso = SOSO = 0505

About Juanjo

Mi nombre es Juanjo Conti, vivo en Santa Fe y soy Ingeniero en Sistemas de Información. Mi lenguaje de programación de cabecera es Python; lo uso para trabajar, estudiar y jugar. Como hobby escribí un libro de cuentos que se puede descargar gratuitamente.
This entry was posted in Aprendiendo Python and tagged . Bookmark the permalink.
  • Juanjo

    Agrego esto que me suguiere Alecu en la lista de PyAr:

    Momento!
    Si la palabra termina en “O”, entonces el numero comienza con cero.
    Ej: OBESO = 05380

    Pero en una calculadora normal no podes poner un cero al principio de un numero
    (a menos que lo ingreses con decimales: 0.5380)
    Habria que adaptarlo para eso:
    r= r[::-1] # invierte el string
    if r[0] == “0″: # si comienza con un cero…
    r = “0.” + r[1:] # cambiarlo por un cero punto.
    return r

  • Juanjo

    La nueva lista de palabras en Alfabeto Calculadora sería:

    be = BE = 38
    bebe = BEBE = 3838
    bebible = BEBIBLE = 3781838
    beisbol = BEISBOL = 7085138
    belio = BELIO = 0.1738
    bello = BELLO = 0.7738
    beso = BESO = 0.538
    bielgo = BIELGO = 0.97318
    bilioso = BILIOSO = 0.501718
    bilis = BILIS = 51718
    biologo = BIOLOGO = 0.907018
    bis = BIS = 518
    bisbiseo = BISBISEO = 0.3518518
    bisel = BISEL = 73518
    biso = BISO = 0.518
    bobilis = BOBILIS = 5171808
    bobillo = BOBILLO = 0.771808
    bobo = BOBO = 0.808
    bohio = BOhIO = 0.1408
    boi = BOI = 108
    bolillo = BOLILLO = 0.771708
    bollo = BOLLO = 0.7708
    bolo = BOLO = 0.708
    bolsillo = BOLSILLO = 0.7715708
    bolso = BOLSO = 0.5708
    e = E = 3
    eh = Eh = 43
    el = EL = 73
    ele = ELE = 373
    elegible = ELEGIBLE = 37819373
    eliseo = ELISEO = 0.35173
    elisio = ELISIO = 0.15173
    elle = ELLE = 3773
    ello = ELLO = 0.773
    elogio = ELOGIO = 0.19073
    elogioso = ELOGIOSO = 0.5019073
    eolio = EOLIO = 0.1703
    es = ES = 53
    ese = ESE = 353
    eso = ESO = 0.53
    gel = GEL = 739
    geologo = GEOLOGO = 0.907039
    giboso = GIBOSO = 0.50819
    gil = GIL = 719
    gili = GILI = 1719
    gis = GIS = 519
    globo = GLOBO = 0.8079
    globoso = GLOBOSO = 0.508079
    gobio = GOBIO = 0.1809
    gol = GOL = 709
    goloso = GOLOSO = 0.50709
    he = hE = 34
    helio = hELIO = 0.1734
    heliosis = hELIOSIS = 51501734
    hibleo = hIBLEO = 0.37814
    hiel = hIEL = 7314
    hielo = hIELO = 0.7314
    higo = hIGO = 0.914
    hilo = hILO = 0.714
    hiogloso = hIOGLOSO = 0.5079014
    hobo = hOBO = 0.804
    ibis = IBIS = 5181
    ilegible = ILEGIBLE = 37819371
    ileo = ILEO = 0.371
    ileso = ILESO = 0.5371
    le = LE = 37
    legible = LEGIBLE = 3781937
    lego = LEGO = 0.937
    leible = LEIBLE = 378137
    lelili = LELILI = 171737
    lelo = LELO = 0.737
    leo = LEO = 0.37
    les = LES = 537
    lesbio = LESBIO = 0.18537
    leso = LESO = 0.537
    libelo = LIBELO = 0.73817
    libio = LIBIO = 0.1817
    liego = LIEGO = 0.9317
    ligio = LIGIO = 0.1917
    lilili = LILILI = 171717
    lio = LIO = 0.17
    lioso = LIOSO = 0.5017
    lis = LIS = 517
    lisis = LISIS = 51517
    liso = LISO = 0.517
    lo = LO = 0.7
    lobo = LOBO = 0.807
    loboso = LOBOSO = 0.50807
    logis = LOGIS = 51907
    o = O = 0.
    obelo = OBELO = 0.7380
    obeso = OBESO = 0.5380
    oboe = OBOE = 3080
    obolo = OBOLO = 0.7080
    obseso = OBSESO = 0.53580
    oh = Oh = 40
    oible = OIBLE = 37810
    oislo = OISLO = 0.7510
    ole = OLE = 370
    oleo = OLEO = 0.370
    oleoso = OLEOSO = 0.50370
    os = OS = 50
    oseo = OSEO = 0.350
    oso = OSO = 0.50
    se = SE = 35
    sebe = SEBE = 3835
    sebillo = SEBILLO = 0.771835
    sebo = SEBO = 0.835
    seboso = SEBOSO = 0.50835
    seis = SEIS = 5135
    seise = SEISE = 35135
    sello = SELLO = 0.7735
    seo = SEO = 0.35
    ses = SES = 535
    seseo = SESEO = 0.3535
    sesgo = SESGO = 0.9535
    seso = SESO = 0.535
    si = SI = 15
    sibil = SIBIL = 71815
    sieso = SIESO = 0.5315
    sigilo = SIGILO = 0.71915
    sigiloso = SIGILOSO = 0.5071915
    siglo = SIGLO = 0.7915
    silbo = SILBO = 0.8715
    silboso = SILBOSO = 0.508715
    silesio = SILESIO = 0.153715
    silo = SILO = 0.715
    siseo = SISEO = 0.3515
    so = SO = 0.5
    sobeo = SOBEO = 0.3805
    sobo = SOBO = 0.805
    sois = SOIS = 5105
    sol = SOL = 705
    soleo = SOLEO = 0.3705
    solio = SOLIO = 0.1705
    solo = SOLO = 0.705
    sos = SOS = 505
    sosiego = SOSIEGO = 0.931505
    soso = SOSO = 0.505

  • Raven

    Si sumas 07314(hielo)+53838507(los bebes) y giras el display aparece en la pantalla HELLBEBE(bebe del infierno).

  • http://igor.tamarapatino.org ikks

    Hola, para hacer un poco más corto el código, sugeriría reemplazar

    r = ''
    for l in p:
    	r += str(num[l])
    r = r[::-1]

    por (un ciclo menos)

    r = ''
    for l in p:
    	r=str(num[l])+r

    o (más ciclos, una línea menos)

    a=[str(num[i]) for i in p]
    a.reverse()
    a="".join(a)

    :)

  • Juanjo

    Gracias Igor por el comentario!

  • Petre

    Tres o cuatro palabras más:

    BE = 38
    BEBE = 3838
    BEBIBLE = 3781838
    BEISBOL = 7085138
    BELIO = 0.1738
    BELLO = 0.7738
    BESO = 0.538
    BIELGO = 0.97318
    BILIOSO = 0.501718
    BILIS = 51718
    BIOLOGO = 0.907018
    BIS = 518
    BISBISEO = 0.3518518
    BISEL = 73518
    BISO = 0.518
    BOBILIS = 5171808
    BOBILLO = 0.771808
    BOBO = 0.808
    BOHIO = 0.1408
    BOI = 108
    BOLEO = 0.3708
    BOLILLO = 0.771708
    BOLLO = 0.7708
    BOLO = 0.708
    BOL = 708
    BOLSILLO = 0.7715708
    BOLSO = 0.5708
    E = 3
    EH = 43
    EL = 73
    ELE = 373
    ELEGIBLE = 37819373
    ELISEO = 0.35173
    ELISIO = 0.15173
    ELLE = 3773
    ELLO = 0.773
    ELOGIO = 0.19073
    ELOGIOSO = 0.5019073
    EOLIO = 0.1703
    ES = 53
    ESE = 353
    ESO = 0.53
    GEL = 739
    GEOLOGO = 0.907039
    GIBOSO = 0.50819
    GIL = 719
    GILI = 1719
    GIS = 519
    GLOBO = 0.8079
    GLOBOSO = 0.508079
    GOBIO = 0.1809
    GOL = 709
    GOLOSO = 0.50709
    HE = 34
    HELIO = 0.1734
    HELIOSIS = 51501734
    HIBLEO = 0.37814
    HIEL = 7314
    HIELO = 0.7314
    HIGO = 0.914
    HILO = 0.714
    HIOGLOSO = 0.5079014
    HOBO = 0.804
    IBIS = 5181
    ILEGIBLE = 37819371
    ILEO = 0.371
    ILESO = 0.5371
    LE = 37
    LEGIBLE = 3781937
    LEGO = 0.937
    LEIBLE = 378137
    LELILI = 171737
    LELO = 0.737
    LEO = 0.37
    LES = 537
    LESBI = 18537
    LESBIO = 0.18537
    LESO = 0.537
    LIBELO = 0.73817
    LIBIO = 0.1817
    LIEGO = 0.9317
    LIGIO = 0.1917
    LILILI = 171717
    LIO = 0.17
    LIOSO = 0.5017
    LIS = 517
    LISIS = 51517
    LISO = 0.517
    LO = 0.7
    LOBO = 0.807
    LOBOSO = 0.50807
    LOGO = 0.907
    LOGIS = 51907
    O = 0.
    OBELO = 0.7380
    OBESO = 0.5380
    OBOE = 3080
    OBOLO = 0.7080
    OBSESO = 0.53580
    OH = 40
    OIBLE = 37810
    OISLO = 0.7510
    OLE = 370
    OLEO = 0.370
    OLEOSO = 0.50370
    OS = 50
    OSEO = 0.350
    OSO = 0.50
    SE = 35
    SEBE = 3835
    SEBILLO = 0.771835
    SEBO = 0.835
    SEBOSO = 0.50835
    SEIS = 5135
    SEISE = 35135
    SELLO = 0.7735
    SEO = 0.35
    SES = 535
    SESEO = 0.3535
    SESGO = 0.9535
    SESO = 0.535
    SI = 15
    SIBIL = 71815
    SIESO = 0.5315
    SIGILO = 0.71915
    SIGILOSO = 0.5071915
    SIGLO = 0.7915
    SILBO = 0.8715
    SILBOSO = 0.508715
    SILESIO = 0.153715
    SILO = 0.715
    SISEO = 0.3515
    SO = 0.5
    SOBEO = 0.3805
    SOBO = 0.805
    SOIS = 5105
    SOL = 705
    SOLEO = 0.3705
    SOLIO = 0.1705
    SOLO = 0.705
    SOS = 505
    SOSIEGO = 0.931505
    SOSO = 0.505

  • ALEX1333

    :Hay 123 + 123 + 123 toros + un toreros (123+123+123+1) Gira la calculadora y veras que sale: