[Hilo Oficial] Esto también es otro arte...el ARTE de programar
#61
Cita
Hola.

Veo que os gustan los problemas matematicos, yo de estos me trague muchos en C. Por ejemplo recuerdo uno de separar los números en unidades, decenas, centenas ... etc, que me volvió completamente loco. Los que sí me encantaban son los de vectores, recuerdo cuando dimos los tridimensionales en .net, me engancharon muchisimo, al igual que los encriptadores en ascii.

El próximo lo intento, ya que este lo habéis solucionado entre muchos, a ver si logro instalar algún compilador de Java, que a Vista por lo visto no le gusta ninguno.

Un saludo.
#62
Cita
numero = n

trabajo(numero, 0)

funcion trabajo (numero, zero)
  si el numero es menor que 10
    escribir numero y zero veces el 0 (y un espacio)
  sino
    trabajo (numero/10, zero+1)
    escribir numero%10 y zero veces el 0 (y un espacio)

típica solución con función recursiva
[align=center]Y mientras, en SobreLoQueOpinar...

[b]Análisis: Metroid Prime 3: Corruption
#63
Cita
Ilustro el problema que dice Led sobre separar un número en centenas, decenas y unidades fusilando la solución de thewazaa.

Código:
# Python

def dividir(numero):

    if numero > 100:
        print(str(numero // 100) + 'centenas, ')
┬á ┬á ┬á ┬á # // devuelve el resultado de la división entera. 250 // 100 = 2
        dividir(numero % 100)
       
    elif numero > 10:
        print(str(numero // 10) + 'decenas, ')
        dividir(numero % 10)
       
    else:
        print(str(numero) + 'unidades, ')
       
                               
               

trabajo(317)

/*
3centenas,
1decenas,
7unidades,

*/
#64
Cita
(25-10-2012 12:38)Margaruga link Ilustro el problema que dice Led sobre separar un número en centenas, decenas y unidades fusilando la solución de thewazaa.

Código:
# Python

def dividir(numero):

    if numero > 100:
        print(str(numero // 100) + 'centenas, ')
┬á ┬á ┬á ┬á # // devuelve el resultado de la división entera. 250 // 100 = 2
        dividir(numero % 100)
       
    elif numero > 10:
        print(str(numero // 10) + 'decenas, ')
        dividir(numero % 10)
       
    else:
        print(str(numero) + 'unidades, ')
       
                               
               

trabajo(317)

/*
3centenas,
1decenas,
7unidades,

*/
tu solucion no vale. Solo funciona hasta centenas... Y... El ponia etc.

Vamos, el mios es capaz de trabajar con 148483833822844, por decir algo.
[align=center]Y mientras, en SobreLoQueOpinar...

[b]Análisis: Metroid Prime 3: Corruption
#65
Cita
Sí, mi solución no es buena ya que no es general. Sin embargo no acabo de pillar tu solución para un n = 30 por ejemplo

Código:
escribir numero%10 y zero veces el 0 (y un espacio)

30 % 10 = 0 + 0 * Zero = 0

En la llamada recursiva pasas 30 / 10 y zero + 1, 30 / 10 menor que 10 por lo tanto.

Código:
escribir numero y zero veces el 0 (y un espacio)

3 + 0 * 1 = ¿30?

No acabo de pillarlo.

EDIT cabezazo: Vale sí, venía pensándolo por el camino a casa y tiene todo el sentido del mundo. Olvida lo que he dicho┬á roto2:
#66
Cita
(25-10-2012 13:27)Margaruga link Sí, mi solución no es buena ya que no es general. Sin embargo no acabo de pillar tu solución para un n = 30 por ejemplo

Código:
escribir numero%10 y zero veces el 0 (y un espacio)

30 % 10 = 0 + 0 * Zero = 0

En la llamada recursiva pasas 30 / 10 y zero + 1, 30 / 10 menor que 10 por lo tanto.

Código:
escribir numero y zero veces el 0 (y un espacio)

3 + 0 * 1 = ¿30?

No acabo de pillarlo.

EDIT cabezazo: Vale sí, venía pensándolo por el camino a casa y tiene todo el sentido del mundo. Olvida lo que he dicho┬á roto2:

Revisa Smile

1 trabajo 30, 0
2 trabajo 3, 1 -> pone 30 (3 y un 0)... vamos, las decenas.
Vuelve a 1 done pone: 0 y 0 zeros. (las unidades, que no hay)
[align=center]Y mientras, en SobreLoQueOpinar...

[b]Análisis: Metroid Prime 3: Corruption
#67
Cita
Sí, sí, parezco idiota si le paso 30 y me devuelve 30 evidentemente lo está haciendo bien pero en el momento no sé en que estaba pensando, me parecía que había algo que no cuadraba┬á roto2:


No sé si antes me leiste thewazaa, te comentaba que el diseño de tu página me gusta y si te dedicabas al diseño/desarrollo web.

Un saludo y gracias  :-*
#68
Cita
Correccion:

numero = n

trabajo(numero, 0)

funcion trabajo (numero, zero)
  si numero >= 10^ (zero+1)
    trabajo(numero, zero +1)
  sino
    si zero = 0
        escribir numero
        devolver 0
    sino
        escribir numero/10^(zero) y "zero" veces el 0
        devolver numero%10^zero

Veamos

: 3501

1: trabajo 3501, 0. Mas grande que 10, entonces...
2: trabajo 3501, 1, mas grande que 100, entonces...
3: trabajo 3501, 2, mas grande que 1000, entonces...
4: trabajo 3501, 3: mas pequeño que 10000, entonces:
  - escribir 3501/1000 (3), y 3 zeros: 3000
  - devolver el resto de 3501/1000: 501
3:
  - escribir 501/100 (5), y 2 zeros: 500
  - devolver el resto de 501/100: 1
2:
  - escribir 1/10 (0), y 1 zeros: 00 (podria poner una excepcion pero paso)
  - devolver el resto de 1/10: 1
1:
  - escribir 1, y 0 zeros: 1
  - devolver 0
Se finí.

El código anterior tenía algun que otro fallo bien tonto.
Y si, soy informático. La web esa no la he hecho yo, es una plantilla normal y corriente de wordpress... y en su momento me dediqué bastante en el desarrollo wap, con motor propio... pero ahora estoy más enfocado a la parte de backend(mira que poner frontend). Ni ganas ni tiempo de hacer páginas web.

El blog lo voy escribiendo porque me gusta como afronto las aficiones que tengo desde que lo tengo. No me pongo a analizar nada en detalle, trato más las sensaciones que me ha causado todo, desde un punto de vista personal... y sin notas.
(Ultima edición: 25-10-2012 16:06 por thewazaa.)
[align=center]Y mientras, en SobreLoQueOpinar...

[b]Análisis: Metroid Prime 3: Corruption
#69
Cita
Jobar, menos mal que no sabías si el hilo iba a tener éxito Margaruga, me voy una noche y cuando vuelvo esto está petado de código.┬á lol:

He intentado no leer nada de lo que habéis puesto, a ver si esta tarde saco un ratín y me pongo con el problema...
#70
Cita
Pongo el link a tu solución en la primera página thewazaa que puede serle muy útil a alguien.
Tener un sitio propio donde escribir es algo muy sano la verdad aunque a mí siempre me dio mucha pereza.

@Junta, pues sí, se han animado varios a aportar su granito de arena, así da gusto Smile
#71
Cita
Sigo a vueltas con el de dividir un número en unidades, decenas...etc

Código:
# Python

def dividir(numero):
   
    if numero > 10:
        numBase = int('1' + '0' * (len(str(numero)) - 1))
        print(str(numero // numBase) + '0' * (len(str(numero)) - 1) + ' ')
        dividir(numero % numBase)
    else:
        print(numero, ' ')
   
   

   
dividir(345439092392)

"""
300000000000
40000000000
5000000000
400000000
30000000
9000000
90000
2000
300
90
2 
"""

Ahora creo que funciona bien para cualquier cifra.
#72
Cita
(25-10-2012 16:10)Margaruga link Sigo a vueltas con el de dividir un número en unidades, decenas...etc

Código:
# Python

def dividir(numero):
   
    if numero > 10:
        numBase = int('1' + '0' * (len(str(numero)) - 1))
        print(str(numero // numBase) + '0' * (len(str(numero)) - 1) + ' ')
        dividir(numero % numBase)
    else:
        print(numero, ' ')
   
   

   
dividir(345439092392)

"""
300000000000
40000000000
5000000000
400000000
30000000
9000000
90000
2000
300
90
2 
"""

Ahora creo que funciona bien para cualquier cifra.
Lo de convertir el número a string es válido... pero no tanto. El ejercicio de lo imprimir en númerajo es muy clásico, pues se basa en algo básico: imprimir un número (que es en base 8) en pantalla, en base 10. Es algo que hacen los ordenadores continuamente! (tipica cosa que está ya a nivel de hardware)

Tu solución va bien... diria que es mas adecuada que la mía, si la corriges, pero tendrías que mirar de quitar todo lo que haga referencia a conversión a string. Piensa en números.

Además, que cuando te pones a trabajar con strings...

Strnum = string(numero)
for int i=0 i<strnum.length;i++
escribir strnum[i] y strnum.length-i-1 zeros

Pierde toda la gracia Smile
[align=center]Y mientras, en SobreLoQueOpinar...

[b]Análisis: Metroid Prime 3: Corruption


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)