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.
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;
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;
#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.
Comentarios
Estas dos oraciones tienen en conjunto exactamente muchas letras.
Esta oración tiene bastantes letras menos que la anterior.
Vendo Opel Corsa.
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.
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;
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;
#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.
Traté de resolverlo pero no pude
Pues ya han puesto la respuesta y parece correcta....