Comentarios

V

Estas dos oraciones tienen en conjunto exactamente muchas letras.

Esta oración tiene bastantes letras menos que la anterior.

D

Vendo Opel Corsa.

D

yo no he encontrado la solución ni por fuerza bruta

Este es el script python que he hecho.
He probado con 'UN' y con 'UNO'
No he probado contando los espacios como letras, porque si bien son caracteres en ningún caso son letras.

editado:
esto se pasa por el forro los tabuladores...

UNIDADES = (
'',
'UN',
'DOS',
'TRES',
'CUATRO',
'CINCO',
'SEIS',
'SIETE',
'OCHO',
'NUEVE',
'DIEZ',
'ONCE',
'DOCE',
'TRECE',
'CATORCE',
'QUINCE',
'DIECISEIS',
'DIECISIETE',
'DIECIOCHO',
'DIECINUEVE',
'VEINTE'
)
DECENAS = (
'VENTI',
'TREINTA',
'CUARENTA',
'CINCUENTA',
'SESENTA',
'SETENTA',
'OCHENTA',
'NOVENTA',
'CIEN'
)
CENTENAS = (
'CIENTO',
'DOSCIENTOS',
'TRESCIENTOS',
'CUATROCIENTOS',
'QUINIENTOS',
'SEISCIENTOS',
'SETECIENTOS',
'OCHOCIENTOS',
'NOVECIENTOS'
)

def toWord(number):

"""
Converts a number into string representation
"""
converted = ''

if not (0 < number < 999999999):

return 'No es posible convertir el numero a letras'

number_str = str(number).zfill(9)
millones = number_str[:3]
miles = number_str[3:6]
cientos = number_str[6:]

if(millones):
if(millones == '001'):
converted += 'UN MILLON '
elif(int(millones) > 0):
converted += '%sMILLONES ' % __convertNumber(millones)

if(miles):
if(miles == '001'):
converted += 'MIL '
elif(int(miles) > 0):
converted += '%sMIL ' % __convertNumber(miles)

if(cientos):
if(cientos == '001'):
converted += 'UN '
elif(int(cientos) > 0):
converted += '%s ' % __convertNumber(cientos)

return converted.title()

def __convertNumber(n):
"""
Max length must be 3 digits
"""
output = ''

if(n == '100'):
output = "CIEN"
elif(n[0] != '0'):
output = CENTENAS[int(n[0])-1]

k = int(n[1:])
if(k 30) & (n[2] != '0')):
output += '%sY%s' % (DECENAS[int(n[1])-2], UNIDADES[int(n[2])])
else:
output += '%s%s' % (DECENAS[int(n[1])-2], UNIDADES[int(n[2])])

return output

for x in range (1, 900):
letrasdex=len(toWord(x))
letrasdey=letrasdex-50-40
y=50+x-40-letrasdey
if len(toWord(y))==letrasdey:
print x,y, toWord(x), toWord(y)
break;

D

ya he visto, y he buscado como un loco y no he encontrado el bug...

Me cagoento
tiene que estar por aquí: (pongo ... en vez de tabuladores)

for x in range (1, 900):
....letrasdex=len(toWord(x))
....letrasdey=letrasdex-50-40
....y=50+x-40-letrasdey
....if len(toWord(y))==letrasdey:
........print x,y, toWord(x), toWord(y)
........break;

D

#6 Viene de otro hilo, me has votado negativo no estas obligado a decirme porque, pero siendo un argumento completamente sólido y estudiando economía como estudio, solo decirte que sino te gusta oir la realidad tápate los oídos, no intentes censurar.

s

Traté de resolverlo pero no pude

s

Pues ya han puesto la respuesta y parece correcta....