[RETO+Python] A ver quien la tiene mas corta... (v2)

Iniciado por Karcrack, 11 Enero 2011, 16:55 PM

0 Miembros y 8 Visitantes están viendo este tema.

Karcrack

#20
Tengo una forma de hacerlo muchisimo mas corto, pero me la guardo en plan sorpresa para despues de que todos hayan puesto la suya :P

Espero que nadie me chafe la sorpresa :¬¬

Olvidadlo, no funciona bien :(

ukol

la mia 115 bytes, pero veo que yo iba por otro camino(sin saltos de línea):
Código (python) [Seleccionar]

n,r,p=input(),range(1,n),[x for x in r[1:] if sum([x%d<1 for d in r[1:]])<2]
[x for x in p for y in r if n%x**y<1]


Y la primera que hice(con los unos por medio)... no os quiero asustar pero ahi va a ver quien la entiende xD
Código (python) [Seleccionar]

n=input()
g=lambda l:len(l)and[l[0]]+g([y%l[0]and y or y/l[0]for y in l[1:]])or[]
g(filter(lambda x:n%x<1,range(2,n+1)))
:rolleyes:

Novlucker

Código (python) [Seleccionar]
z,r=input(),[]
for x in range(2,z+1):
    while z%x==0:
        z/=x
        r+=x,
print r

Es muy parecido, parece que hubiese copiado :¬¬
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

[L]ord [R]NA

Cita de: Novlucker en 12 Enero 2011, 00:42 AM
Código (python) [Seleccionar]
z,r=input(),[]
for x in range(2,z+1):
    while z%x==0:
        z/=x
        r+=x,
print r

Es muy parecido, parece que hubiese copiado :¬¬

:¬¬ copiaste?

Karcrack

Muy interesante lo de r+=x, ahi te ahorras un caracter que hace que ganes por ahora, con 80 caracteres :)

Voy a ver si puedo bajar de 80 :rolleyes:

Novlucker

Bueno, si le quitas los parentesis rectos al tuyo también quedas con 80 :xD
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Karcrack

#26
76!! caracteres bytes :)
Código (python) [Seleccionar]
r,n,x=[],input(),2
while x<=n:
while n%x==0:n,r=n/x,r+[x]
x+=1
print r

:D

Novlucker

;-) Eso no se me había ocurrido, ya estoy buscando el próximo reto :P

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

mr.blood

***** Karcrack, posteaste el codigo antes que yo, teniamos lo mismo, solo que yo estaba comiendo xD.

Código (python) [Seleccionar]
f,l,i=2,[],input()
while i>1:
while not i%f:i/=f;l+=[f]
f+=1
print l


Ya intente utilizar Filter y Map, pero no pude conseguir nada "corto" :P.

Sa1uDoS, espero el proximo reto, estan muy divertidos :D

Karcrack

Tu codigo es mas corto mr.blood :) Aunque a mi eso de usar ; me parece un poco trampa :P

El tuyo son 74 bytes... lo he modificado un poco y lo he dejado en 72 :P
Código (python) [Seleccionar]
f,l,i=2,[],input()
while i>1:
while i%f==0:i/=f;l+=f,
f+=1
print l