elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 05:18  


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderadores: Novlucker, Leo Gutiérrez., EleKtro H@cker)
| | |-+  [RETO+PYTHON] A ver quien la tiene mas corta...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [RETO+PYTHON] A ver quien la tiene mas corta...  (Leído 2,420 veces)
Karcrack


Desconectado Desconectado

Mensajes: 2.192


Se siente observado ¬¬'


Ver Perfil
[RETO+PYTHON] A ver quien la tiene mas corta...
« en: 16 Diciembre 2010, 17:14 »

... la funcion! :¬¬ :xD

Consiste en convertir de la forma mas corta posible un numero decimal a su version romana... por ejemplo:
Código:
200 -> CC
1337 -> MCCCXXXVII

Espero que al menos una persona se digne a participar.. si no sera un fiasco, y destrozara mi ilusion de crear retos en el futuro :-( :-( :laugh:

I saludo! ;)


« Última modificación: 16 Diciembre 2010, 17:18 por Karcrack » En línea

Novlucker
Ninja y
Moderador
***
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: [RETO+PYTHON] A ver quien la tiene mas corta...
« Respuesta #1 en: 16 Diciembre 2010, 17:50 »

Supongo que consideramos válido el resultado solo hasta 3999 no? porque no tengo manera de escribir una línea sobre la letra si me paso de eso :xD
Tengo que tener puesto el input()?

Saludos


En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

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

Karcrack


Desconectado Desconectado

Mensajes: 2.192


Se siente observado ¬¬'


Ver Perfil
Re: [RETO+PYTHON] A ver quien la tiene mas corta...
« Respuesta #2 en: 16 Diciembre 2010, 17:54 »

Si, solo hasta el 3999... y si, tambien has de añadir un input() :)
En línea

Novlucker
Ninja y
Moderador
***
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: [RETO+PYTHON] A ver quien la tiene mas corta...
« Respuesta #3 en: 16 Diciembre 2010, 18:47 »

No se por que, pero se me hace que tienes algo mucho más corto :¬¬
No he controlado es que los números no sean mayores a 3999, pero no creo que sea necesario mientras funcione para los de abajo :xD
Código
n=input()
s=1000,500,100,50,10,5,1
l='MDCLXVI'
r=''
for i in range(7):
   if n>s[i]:
       r+=n/s[i]*l[i]
       n%=s[i]
print(r)
No sabía si contaban tabulaciones y saltos de línea, así que tal vez podría ahorrarme un par de caracteres :xD

Saludos
« Última modificación: 16 Diciembre 2010, 18:54 por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

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

Karcrack


Desconectado Desconectado

Mensajes: 2.192


Se siente observado ¬¬'


Ver Perfil
Re: [RETO+PYTHON] A ver quien la tiene mas corta...
« Respuesta #4 en: 16 Diciembre 2010, 22:07 »

Muy bueno :)
Doy un par de dias y si nadie mas se anima a participar pongo mi super codigo :laugh: :laugh:

Un saludo :D
En línea

Novlucker
Ninja y
Moderador
***
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: [RETO+PYTHON] A ver quien la tiene mas corta...
« Respuesta #5 en: 16 Diciembre 2010, 22:31 »

Eso quiere decir que tienes uno más corto? cuanto más corto?
Ese lo hice en un rato, ya vas a ver! >:D
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

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

SmartGenius

Desconectado Desconectado

Mensajes: 175


:P


Ver Perfil WWW
Re: [RETO+PYTHON] A ver quien la tiene mas corta...
« Respuesta #6 en: 16 Diciembre 2010, 23:40 »

Lo hice en batch (ya saben, me gustan los retos  :rolleyes: )

Código:
@Echo Off
Setlocal enabledelayedexpansion
Title Number to Roman Conversion

::Coded by SmartGenius

Set "R=1"
Set "R_1=. M MM MMM"
Set "R_2=. C CC CCC CD D DC DCC DCCC CM"
Set "R_3=. X XX XXX XL L LX LXX LXXX XC"
Set "R_4=. I II III IV V VI VII VIII IX"

:Input
Set /p "N=Enter Number > "
If Not Defined N Cls & Goto :Input
If 0 GEQ %N% (Echo.Fuera de Rango&Goto :Input)
If 3999 LSS %N% (Echo.Fuera de Rango&Goto :Input)

:Split
Set /a "M_O=N%%10"
Set /a "M_T=(N%%100)-M_O"
Set /a "M_C=(N%%1000)-(M_T+M_O)"
Set /a "M_M=N-(M_C+M_T+M_O)"

:Convert
Set "Sp= %M_M:~0,1%%M_C:~0,1%%M_T:~0,1%%M_O:~0,1%"
:R_to_N
If 5 EQU %R% (Set "RF=!RF:.=!"&Goto :Show)
Set /a "T=!Sp:~%R%,1!+1"
For /f "tokens=%T%" %%b in ('Echo.!R_%R%!') do (Set "RF=!RF!%%b")
Set /a "R+=1"
Goto :R_to_N

:Show
Echo. Number = %N%
Echo. Roman  = %RF%
Echo.
Pause
Exit

Aunque obviamente con las capacidaddes de los otros lenguajes se hace mas corto el codigo xD

Saludos.
En línea



ghastlyX
Colaborador
***
Desconectado Desconectado

Mensajes: 1.894



Ver Perfil
Re: [RETO+PYTHON] A ver quien la tiene mas corta...
« Respuesta #7 en: 17 Diciembre 2010, 00:10 »

Pongo una versión recursiva un poco más corta:
Código
x=1000,500,100,50,10,5,1
c='MDCLXVI'
def f(n,p):
return n/x[p]*c[p]+f(n%x[p],p+1)if n else''
print f(input(),0)
Son 113 carácteres según wc.
En línea
lucasfava

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: [RETO+PYTHON] A ver quien la tiene mas corta...
« Respuesta #8 en: 17 Diciembre 2010, 16:02 »

soy novato en python, pero una idea posible seria usar una base de datos, y que revise ahí  :huh:
En línea
braulio--
Wiki

Desconectado Desconectado

Mensajes: 889


Imagen recursiva


Ver Perfil WWW
Re: [RETO+PYTHON] A ver quien la tiene mas corta...
« Respuesta #9 en: 17 Diciembre 2010, 16:22 »

soy novato en python, pero una idea posible seria usar una base de datos, y que revise ahí  :huh:
No sé yo, probablemente uses mas carácteres creando la conexión y ejecutando la consulta que de otra forma.

De todas formas, no creo que eso valga.
En línea

ace332

Desconectado Desconectado

Mensajes: 66


Ver Perfil
Re: [RETO+PYTHON] A ver quien la tiene mas corta...
« Respuesta #10 en: 17 Diciembre 2010, 20:20 »

Muy buena, SmartGenius! y en batch  :o
Los codes que pusieron en Python no funcionan  :-X Para ciertos valores dan resultados erroneos. Por ejemplo, al introducir como dato 1999 devuelve como resultado MDCCCCLXXXXVIIII cuando la respuesta correcta es MCMXCIX.

Saludos y disculpen las molestias  >:D
« Última modificación: 17 Diciembre 2010, 20:29 por BeetleJuice » En línea
Karcrack


Desconectado Desconectado

Mensajes: 2.192


Se siente observado ¬¬'


Ver Perfil
Re: [RETO+PYTHON] A ver quien la tiene mas corta...
« Respuesta #11 en: 17 Diciembre 2010, 21:00 »

Como dice BeetleJuice vuestros codigos dan resultados equivocados... el de Novlucker, por ejemplo, dice que 1000 es DD, siendo M en realidad...
En línea

Novlucker
Ninja y
Moderador
***
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: [RETO+PYTHON] A ver quien la tiene mas corta...
« Respuesta #12 en: 17 Diciembre 2010, 23:46 »

Como dice BeetleJuice vuestros codigos dan resultados equivocados... el de Novlucker, por ejemplo, dice que 1000 es DD, siendo M en realidad...
Y por que no lo dijiste antes? :¬¬ lo probaste tanto como yo, vi que funcionaba para 1337 y listo :xD

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

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

Karcrack


Desconectado Desconectado

Mensajes: 2.192


Se siente observado ¬¬'


Ver Perfil
Re: [RETO+PYTHON] A ver quien la tiene mas corta...
« Respuesta #13 en: 18 Diciembre 2010, 00:24 »

 :laugh: Pues ale! A arreglarlo! Yo voy a ver si consigo acortar mi super codigo juasjuas >:D :xD
En línea

Novlucker
Ninja y
Moderador
***
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: [RETO+PYTHON] A ver quien la tiene mas corta...
« Respuesta #14 en: 18 Diciembre 2010, 00:48 »

Que nadie diga que no soy práctico :laugh:

Código
n=input()
s=1000,900,500,400,100,90,50,40,10,9,5,4,1
l='M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I'
r=''
for i in range(13):
   if n>=s[i]:
       r+=n/s[i]*l[i]
       n%=s[i]
print(r)

También puedo ganar algunos caracteres haciendolo de manera recursiva como ghastlyX, pero la verdad pierde la gracia copiarle a los demás :¬¬

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

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

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Reto/Juego Ejercicios en Python « 1 2 3 4 »
Ejercicios
Novlucker 47 9,136 Último mensaje 20 Diciembre 2010, 06:47
por [L]ord [R]NA
Reto: Números primos en python
Ejercicios
Novlucker 6 2,858 Último mensaje 24 Noviembre 2010, 16:02
por Novlucker
Mini Reto Python. Dibujar rombo ~
Ejercicios
Dnk! 13 3,150 Último mensaje 2 Diciembre 2010, 11:31
por Dnk!
[RETO+Python] A ver quien la tiene mas corta... (v2) « 1 2 3 »
Scripting
Karcrack 33 2,841 Último mensaje 14 Enero 2011, 15:15
por mr.blood
[RETO+Python] Buscando rangos
Scripting
Novlucker 13 1,852 Último mensaje 31 Enero 2011, 18:30
por Karcrack
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines