Foros del Web » Programando para Internet » PHP »

Reto: Números Romanos

Estas en el tema de Reto: Números Romanos en el foro de PHP en Foros del Web. es q no sabemos q paso con morti xq el siempre esta conectado en el foro hay q ver q es el tiempo de el ...

  #181 (permalink)  
Antiguo 20/08/2010, 20:06
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Reto: Números Romanos

es q no sabemos q paso con morti xq el siempre esta conectado en el foro hay q ver q es el tiempo de el tambien pero vamos a esperar un poco
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #182 (permalink)  
Antiguo 20/08/2010, 20:41
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Reto: Números Romanos

Hola
bueno, veo que andan impacientes, hasta me hicieron millonario!!
pues es que me tome molestias de más en las pruebas, por eso
la demora, pero ya mismo pongo un tema con todos los códigos
y finalmente les posteo mis comentarios aca
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #183 (permalink)  
Antiguo 20/08/2010, 20:43
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Reto: Números Romanos

Cita:
Iniciado por mortiprogramador Ver Mensaje
hola
bueno, veo que andan impacientes, hasta me hicieron millonario!!
Pues es que me tome molestias de más en las pruebas, por eso
la demora, pero ya mismo pongo un tema con todos los códigos
y finalmente les posteo mis comentarios aca
saludos
aleluya hermano....!!!!!
__________________
la la la
  #184 (permalink)  
Antiguo 20/08/2010, 20:43
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Reto: Números Romanos

estas vivo???? los comentarios haslos en los codigos si los vas a hacer
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #185 (permalink)  
Antiguo 20/08/2010, 20:50
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Reto: Números Romanos

vamos con esos codigosssss... luego agregale una encuesta y los tiempos de ejecucion de cada 1 *o*
__________________
More about me...
~ @rhyudek1
~ Github
  #186 (permalink)  
Antiguo 20/08/2010, 20:52
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Reto: Números Romanos

hey morti.. es solo el segundo no necesitas postear el mio 2 veces XD!
__________________
More about me...
~ @rhyudek1
~ Github
  #187 (permalink)  
Antiguo 20/08/2010, 21:06
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Reto: Números Romanos

Cita:
Iniciado por Hidek1 Ver Mensaje
hey morti.. es solo el segundo no necesitas postear el mio 2 veces XD!
q barbaro de pana como lo hiziste tan cortico?? de pana me falta q jod por aprender pero bueno
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #188 (permalink)  
Antiguo 20/08/2010, 21:07
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Reto: Números Romanos

no es tan diferente de el de abilmaerc.. aunque morti duplico mi codigo -.-!
__________________
More about me...
~ @rhyudek1
~ Github
  #189 (permalink)  
Antiguo 20/08/2010, 21:12
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Reto: Números Romanos

bueno en algo son xq el tuyo segun yo contando el q duplico son 13 lineas yo me tire el triple de eso jajaja pero bue y morti faltan los tiempos de ejecucion aunq el mas lento sea el mio jajaja
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #190 (permalink)  
Antiguo 20/08/2010, 21:14
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Reto: Números Romanos

bueno creo que en velocidad salí segundo xD
__________________
la la la
  #191 (permalink)  
Antiguo 20/08/2010, 21:40
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Reto: Números Romanos

Saludos
Pues he terminado de realizar las pruebas, y a continuación encuentran los códigos en este tema
y aquí mis comentarios (perdonarán lo incoherente a veces, pero pues productos de algunos delirios literarios)

encontraran que los tiempos estan algo extensos, es porque todos los probe hasta 10.000 para dar esos tiempos

Hidek1, excusame, abri los archivos y copie y pegue, y ya no me deja editar el post!!!

************************************************** ************
Conversión hasta 3.999

Alcalina
T = 1.98
26 líneas

Bastante ingenioso el modo en que se maneja la iteración de letras
repetitivas, y este es el único código que inmiscuye al cero,
que según entiendo no existía en el sistema romano,
y que luego lo conocieron gracias a los árabes, pero por ese aporte me dió por investigar
un poco más sobre los números romanos, y dí con este interesante artículo,
lo dejo por si alguno quiere "datearse" un poco.

dedydamy
T = 1.93
21 líneas

Mi comentario aquí es tan corto y sustancioso como el código
Es otro código que seguro será de gusto de los matemáticos, también apasionara a los que gustan de
códigos cortos, y vemos uso de mod,
y un modo abreviado y refrescante a la vista de uso de arrays

exangel
T = 1.93
113 líneas

Podemos apreciar que el código venía con el ingreso del número en formulario y posterior muestra de la conversión y validaciones de valor numérico

Igualmente, se aprecia una estructura bastante compleja de if anidados
la cual me hizo recordar a los contemporáneos de los romanos (los griegos) y su
laberinto de Creta, y me sentí como aquel desolado Minotauro

Hidek1
T = 1.71
12 líneas (envió 2 funciones pero ambas con el mismo número de líneas)

Aquí vemos el manejo de un solo ciclo, lo que indudablemente hace que este código aparte de ser bastante corto sea igualmente bastante raudo en su ejecución

También usa los tan controvertidos operadores de preincremento, que confunden a muchos que prefieren las clásicas formulas aritméticas, y que otros aseveran funcionan intermitentemente

pateketrueke
T = 1.87
33 líneas (envió 2 funciones pero solo la segunda se dio para la competencia)

Pues fiel a sus principios, nos brinda un código bastante corto, sútil
y efectivo, aunque me encantaría entender mejor la función que no participó, pues la veo más interesante, aunque probandola siempre me devolvía 0

(y yo estaba haciendo uso de la misma funcionalidad de regex, he!! por fin algo!!)

portalmana
T = 1.77
74 líneas

Otra clase, pero esta abstracta (eso lo asocio con arte, pinturas y eso),
y que esta bastante documentada (otros códigos también estaban documentados, pero este en especial tiene bastante de eso)
y por eso me atrevo a preguntar si se esta usando un editor en particular que tal vez coopere para agregar
documentación al código, o alguna herramienta para ello

una distribución curiosa visualmente para los arrays, y uso de la
abstracción producto de la clase, al igual que el log10, y operaciones reducidas

sin embargo, con un inconveniente cuando llega al 4000 (warning de división por 0), lo cual hizo recordarme a un profesor de matemáticas que parecía más un profeta de los números pues siempre decía:
"El primer mandamiento de las matemáticas es: Nunca dividirás por cero"

quike88
T = 1.87
32 líneas

En esta función se ve el uso de isset y floor, que los demás códigos hasta donde recuerdo en este momento no usan (me excusan si me equivoco)

Y también, se nota el uso de operaciones matemáticas para asignar una posición de array, algo que generalmente se hace asignando a una variable el resuldato de la operación antes o incluso se asigna la posición estaticamente, pero no de este modo

silvanha
T = 1.48
23 líneas

Aquí vemos también un modo bastante abreviado del uso de arrays,
y saludamos a su majestad el SWITCH dando un F5 al uso del IF

y el uso de split, es altamente estimulante este código.... que buen café consumiste....

truman_truman
T = 1.96
87 líneas

Encontramos aquí el uso de varias funciones para el cometido,
sobre todo una bastante "descrestante" que lo hace sorprendente,
y es la idea de invertir la cadena

También se ve el uso de un solo ciclo y el no uso de condicionales!!!
si Triby nos dio un sueño, este código parece el logro de cualquier programador que vaya con: ¡¡Prohibido prohibir!!

************************************************** ************
Conversión hasta 9.999

angelAparicio
T = 1.94
38 líneas

Coincide en el estilo de css con el que brindo abimaelrc, y aqui vemos que se propone el uso de constantes, e igualmente propone una manera más matemática de tomar el asunto, y nos muestra el principio de "divide y vencerás" en el uso de arrays, para aquellos que van más con los cálculos seguro este código les gustara bastante

************************************************** ************
Conversión hasta 10.000

Triby
T = 1.98
27 líneas

Tenemos aquí la muestra de otra opción distinta de css a las que se han manejado en otros códigos, y que funciona igualmente

validaciones que entran al rango que se habia estipulado, y el uso de un solo ciclo y un par de if hacen que este sea un código soñado, sacado de un cuento de programadores?? jajajaja

sin embargo, le salió un pequeño "lunar" mostrando la serie del 4000, y es que como se asigno en el array la "V" sin la linea horizontal, pues a la hora de la presentación no coincide con la salida esperada, pero luego del 5.000 hasta el 10.000 se visualiza correctamente

y como nota interesante, notese que no tiene tag de cierre "formal", sino el EOF que nos indica la finalización del script, esto es altamente recomendado incluso por algunos frameworks!!

************************************************** ************
Conversión hasta 999.999

abimaelrc
T = 2.17
70 líneas

El estilo css que se manejo para la nomenclatura de miles en adelante es
interesante pues tenía como base el css de Triby, pero al comparar las cadenas daba "FAIL" aunque la salida estaba correcta, y era porque los estilos no coincidian!!!

Al igual que Alcalina, ingenioso para la iteración de letras repetitivas,
pero aquí vemos el manejo magistral de arrays, en sintesis,
un deleite para quienes gustan de jugar con los arrays.

************************************************** ************
Conversión hasta 3'999.999

carlos_belisario

T = 1.96
39 líneas

Coincide igualmente con el estilo css de otros, pero aunque visualmente daba el resultado correcto, se veía el mensaje FAIL,
cosa que al principio no entendia porque ocurria, y confieso que me llevo un rato darme cuenta cual era el inconveniente,
y era simplemente el uso de las comillas dobles y sencillas!! es bastante extraño para mí pero así es!! otros códigos usaban comilla sencilla para encerrar el span y dentro usaban dobles (como yo también lo tenía en el archivo de test), pero aquí era al contrario, y esa pequeña diferencia al parecer es suficiente para que php dictamine que las cadenas no son las mismas (que estricto!!!), pero cambiando el orden de comillas, da el ansiado OK,
y vemos el uso de una estructura de anidamiento soberbia que cumple a cabalidad el cometido

HackmanC
T = 2.01
86 líneas

Aquí se aprecia una clase sumamente corta e interesante, uso de expresiones regulares y formato para el valor ingresado, y no contento con eso, agrega las propiedades css adicionales que complementan deliciosamente al objeto instanciado

Sin duda un banquete para quienes buscan código corto y los que gustan de tener varias funciones que puedan ser cooperativas entre sí

************************************************** ************
Conversión intermitente
del 1 al 9 ok
del 10 al 19 fail
del 20 al 109 ok
del 110 al 119 ok
del 120 a 199 ok
y con varias intermitencias


mortiprogramador
T = 2.11
133 líneas

Finalmente, el código mas bizarro que he realizado, pensando en una idea loca, en efecto me llevo a la locura,
y producto de esto se da un código que parece un dragón dando vueltas por todo el barrio chino

y que decir de los resultados!! un ejemplo clarisimo de como se pierde la noción de algo
por andar pensando en quien sabe que!!

************************************************** *****

Estos son mis apuntes al respecto, agradezco a todos en el tiempo que
se pusieron a esto y la paciencia de obtener los resultados, pondre un post adicional pues no alcanzaron los caracteres en este!
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #192 (permalink)  
Antiguo 20/08/2010, 21:49
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 1 mes
Puntos: 65
Respuesta: Reto: Números Romanos

fue resultado de leer.. y un café, después de preparar programa de estudios, redactar como 4 parrafos de la tesis.. y morirme del sueño por el trabajo ;)

me encanta como programa hidek! señor mis respetos ;)

Morti! gracias a ti por tu tiempo!!! interesante tu labor de comentarios!!! =).. en el otro no creo participar.. ando con mil cosas encima.. viene mi examen profesionaaaal!!!.. por unos días me ausento, pero me paso de repente a leer.. saluditos a todos!! ^^
__________________
●•· No hay nada imposible..
●•· Vico-X.. ;)
  #193 (permalink)  
Antiguo 20/08/2010, 22:00
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Reto: Números Romanos

Cita:
se veía el mensaje FAIL,
y era simplemente el uso de las comillas dobles y sencillas!! es bastante extraño para mí pero así es!! otros códigos usaban comilla sencilla para encerrar el span y dentro usaban dobles (como yo también lo tenía en el archivo de test), pero aquí era al contrario, y esa pequeña diferencia al parecer es suficiente para que php dictamine que las cadenas no son las mismas (que estricto!!!), pero cambiando el orden de comillas, da el ansiado OK,
no lo sabia jaja siempre me tiene q aparecer un error jajaja bueno gracias por el dato lo desde ahora estare pendiente de colocarlo asi fue bueno y bueno otro aprendizaje mas
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #194 (permalink)  
Antiguo 20/08/2010, 22:12
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Reto: Números Romanos

Por alcance

Cita:
carlos_belisario 3'999.999
HackmanC 3'999.999
abimaelrc 999.999
Triby 10.000
angelAparicio 9.999
Alcalina 3.999
dedydamy 3.999
exangel 3.999
Hidek1 3.999
pateketrueke 3.999
portalmana 3.999
quike88 3.999
silvanha 3.999
truman_truman 3.999
mortiprogramador intermitente
Por velocidad
Cita:
silvanha 1.48
Hidek1 1.71
portalmana 1.77
pateketrueke 1.87
quike88 1.87
dedydamy 1.93
exangel 1.93
angelAparicio 1.94
truman_truman 1.96
carlos_belisario 1.96
Alcalina 1.98
Triby 1.98
HackmanC 2.01
mortiprogramador 2.11
abimaelrc 2.17
Por líneas

Cita:
Hidek1 12
dedydamy 21
silvanha 23
Alcalina 26
Triby 27
quike88 32
pateketrueke 33
angelAparicio 38
carlos_belisario 39
abimaelrc 70
portalmana 74
HackmanC 86
truman_truman 87
exangel 113
mortiprogramador 133
Como nota final, creo que a muchos romanos les debio haber pasado lo que en algunos códigos ocurria, y era que por ej para el 5.000 lo mostraban con 5 letras M en vez de la V con la línea, ellos seguramente si nos hubiesen hecho
millonarios al ver semejante solución a su sistema numérico

si algún comentario incomodo a cualquiera, por favor, disculpen, fue sin la menor intención, solo son apuntes locos que vienen a mi mente, así que como diría Benedetti

"No alerte sus fusiles
ni piense qué delirio
a pesar de la veta
o talvez porque existe
usted puede contar conmigo"

Saludos a todos, monstruos del código
Chau
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #195 (permalink)  
Antiguo 20/08/2010, 22:25
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Reto: Números Romanos

exelente el reto estuvo buenisimo y a participacion fue tambien buena ojala se den otros y participemos mas saludos buenos los comentarios saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #196 (permalink)  
Antiguo 20/08/2010, 22:54
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Reto: Números Romanos

Por si acaso, mi código no es 70 líneas, si quitas los comentarios claro está. Podía prepararlo igual que Hidek1, pero me gusta que sea legible. Cuando vi el de Hidek1, vi que era bastante similar al que preparé, pero sintetizado y la diferencia mayor es que yo hago dos ciclos, él lo logró en uno solo . Bueno buen código a todo el mundo. Vamos para el reto ahora de GD
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #197 (permalink)  
Antiguo 20/08/2010, 23:04
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: Reto: Números Romanos

Hola a todos....
Bueno MortiProgramador con respecto a tu interrogante para la programación utilizo NetBeans 6.9.1 para php.... jejejej

Bueno la división por cero ejejjej es porque leí en algún comentario del foro que no era necesario la validación de datos..... simplemente por eso incluso no cumplí con los errores estrictos aunque se cuales son jejjeje

Hice unas pruebas usando el codigo:
Código PHP:
<?php
$arr 
= array();
$nTotal 30;
for(
$n=0$n<$nTotal$n++){
    
$start microtime(true);
    for(
$i 1$i 4000$i++) {
        
romanNumber($i);
    }
    
$arr[] = microtime(true)-$start;
}
echo 
array_sum($arr) / $nTotal;
Como adicional comento que para realizar la misma, elimine cualquier tipo de formulario y salidas echo para que no se llenara la pantalla con la repetición de los 3999 números y los 30 ciclos.... Y los pongo porque me fue super bien jejje

Bueno aunque en el 2 do y 3 er puesto aveces se daban vueltas....
Repeti 5 Veces la prueba y tome el promedio

Código:
Portalmana
0,0602069377899
0,0596585909526
0,0590106248856
0,0590343952179
0,0590892791748
Promedio: 0,0593999656042
Hidek1 Func 2
0,0666384935379	
0,0666834513346	
0,0633374452591	
0,0631870269775	
0,0634858051936	
Promedio:0,0646664444605
Truman_Truman
0,0718663454056
0,0715202808380
0,0730316321055
0,0708043972651
0,0732625802358
Promedio: 0,0720970471700
Hidek1 Func 1
0,0864998579025
0,0774790445964
0,0780956188838
0,0778410673141
0,0782234589259
Promedio: 0,0796278095245
quike88
0,1005898237230
0,0997510830561
0,0989421367645
0,1004654884340
0,0991286913554
Promedio: 0,0997754446666
silvanha	
0,1108955939610
0,1088413556420
0,1104197661080
0,1105817953750
0,1093537727990
Promedio: 0,1100184567770
dedydamy	
0,1143814166390
0,1142668406170
0,1146225372950
0,1146225372950
0,1131694078450
Promedio: 0,1142125479382
pateketrueke	
0,1315964698790
0,1331186850870
0,1382720549900
0,1325357278190
0,1309441169100
Promedio: 0,1332934109370
Triby	
0,1328143914540
0,1362112124760
0,1385475317640
0,1317312161130
0,1315052429840
Promedio: 0,1341619189582
exangel	
0,1547385215760
0,1512603362400
0,1527578115460
0,1504278739290
0,1512359142300
Promedio: 0,1520840915042
Alcalina	
0,1690651973090	
0,1705047210060	
0,1718923250830	
0,1718923250830	
0,1719164371490	
Promedio: 0,1710542011260
carlos_belisario
0,1746670087180
0,1776582558950
0,1800858497620
0,1800858497620
0,1740900119150
Promedio: 0,1773173952104
AngelAparicio	
0,1969074885050
0,1943507989250
0,1983195145920
0,1956112305320
0,1963031371430
Promedio: 0,1962984339394
abimaelrc	
0,2467367569610
0,2470463514330
0,2461739619570
0,2482863744100
0,2412515481310
Promedio: 0,2458989985784
HackmanC	
0,3192715485890
0,3096469481790
0,4616393089290
0,3167582352960
0,3186118761700
Promedio: 0,3451855834326
Mortiprogramador	
0,7672072410580
0,7614544232690
0,7624504804610
0,7599871238070
0,7700856765110
Promedio: 0,7642369890212
Bueno en otro punto coincido con abimaelrc me gustan los códigos super legibles...
Saludos
  #198 (permalink)  
Antiguo 20/08/2010, 23:12
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Reto: Números Romanos

Cita:
Iniciado por abimaelrc Ver Mensaje
Por si acaso, mi código no es 70 líneas, si quitas los comentarios claro está. Podía prepararlo igual que Hidek1, pero me gusta que sea legible. Cuando vi el de Hidek1, vi que era bastante similar al que preparé, pero sintetizado y la diferencia mayor es que yo hago dos ciclos, él lo logró en uno solo . Bueno buen código a todo el mundo. Vamos para el reto ahora de GD
claro... yo tambie me fije que eran parecidos los algoritmos..
intenta ver de que forma logre el bucle es lo que mas me gusto de esto =)

en general todos muy buenos, al igual que distintos.
por lo personal encontre muy interesante el de portalmana ..

y ( felicitaciones && gracias ) mortiprogramador por tu esfuerzo y tiempo que le dedicaste a esto ;D.. te quedo muy bueno todo ;)
(menos mi codigo que lo pusiste 2 veces xD!!!!! )
__________________
More about me...
~ @rhyudek1
~ Github
  #199 (permalink)  
Antiguo 20/08/2010, 23:16
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Reto: Números Romanos

disculpa la ignorancia hidek1 pero
Código PHP:
$number/=10 
al final del for q signigica?? o si puedes decirme donde encontrar una documentacion noc xq le busco vueltas y noc??
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #200 (permalink)  
Antiguo 20/08/2010, 23:31
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: Reto: Números Romanos

Bueno fundamento mis votos:

Como regla general, me gustan los códigos que contengan la menor cantidad de if y que sean legibles pero como verán, en algunos votos obvie la regla....

Hidek1
Se nota que le gustan los códigos cortos, me sorprendió lo corto y pareces un rey del ocultismo es casi como ofuscar código...

silvanha
Si bien no tiene if, pero contiene switch que es parecido me encanto esa forma de resolver el problema .... creo que nunca se me hubiera ocurrido hacerlo asi....

truman_truman
Bueno cumple con las premisas que me gustan a mi, no if, y se lee muy bien...

portalmana
Y por ultimo el mio jejjeje no me iba a dejar afuera....

En general me gustaron todos pero destaque esos algunos por ser formas muy distintas de programar a la mía, y bueno es así tantos códigos diferentes como programadores existen.... Increíble pero cierto...
  #201 (permalink)  
Antiguo 21/08/2010, 00:02
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Reto: Números Romanos

@portalmana, bueno el de Hidek1 son if pero resumidos .

@Hidek1, Vi como lo lograste y lo entiendo. Breve explicación
$n toma los impares y de acuerdo a donde está el dígito, si es el primero 1 si es en las decenas en el 3, centengas 5 y milésimas 7, para luego jugar con los operadores ternarios.
$r toma el último valor (una forma sencilla de tomar el último valor, algo como substr pero usando el módulo, tomo nota ). Y con la combinación de la división que haces en el for tomas bien fácil el valor, porque la forma como usaste el módulo toma valores enteros y en específico el valor de 10 o menos, por lo tanto el último.
Por último múltiples operadores ternarios, que es bien similar a los if que hice y que la explicación la tengo en mi código.

Edito:
@carlos_belisario, eso es dividir, se conoce como operadores combinados. Lee este material http://www.php.net/manual/en/languag...assignment.php
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 21/08/2010 a las 00:15
  #202 (permalink)  
Antiguo 21/08/2010, 00:06
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: Reto: Números Romanos

Cita:
Iniciado por abimaelrc Ver Mensaje
@portalmana, bueno el de Hidek1 son if pero resumidos .

@Hidek1, Vi como lo lograste y lo entiendo. Breve explicación
$n toma los impares y de acuerdo a donde está el dígito, si es el primero 1 si es en las decenas en el 3, centengas 5 y milésimas 5.
$r toma el último valor (una forma sencilla de tomar el último valor, algo como substr pero usando el módulo, tomo nota ). Y con la combinación de la división que haces en el for tomas bien fácil el valor, porque la forma como usaste el módulo toma valores enteros y en específico el último.
Por último múltiples operadores ternarios. Que la explicación la tengo en mi código.
Si es el operador ternario , pero dije que iban excepciones jajaajaajjj
aunque no es mi estilo, aunque por su nick se ve que le encanta...
Saludos
  #203 (permalink)  
Antiguo 21/08/2010, 01:00
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Reto: Números Romanos

:) bueno yo adverti que parecia chino mandarin mi codigo x'D!... aún asi aplique unas cuantas cosas que sirven como tips :P

el bucle for por ejemplo
;(int)$numero;$numero/=10
ahi vas dividiendo por 10 el numero... entonces en cada vuelta vas obteniendo algo asi
1570
157
15
1
y luego de eso se detiene por que deja ed ser valido para (int)

bueno y cosas asi..
tambien esta interesante lo de tomar el ultimo numero ;)

en general hay muy buenos trabajos ... mañana (ahora no pq estoy que me desmayo del sueño) voy a revisarlos detalladamente todos para ver si pillo cosas interesantes para agregar a mi libreria de los robos de idea x'D!

saludos a todos .
__________________
More about me...
~ @rhyudek1
~ Github
  #204 (permalink)  
Antiguo 21/08/2010, 07:08
Avatar de dedydamy  
Fecha de Ingreso: marzo-2010
Ubicación: Aca :D
Mensajes: 78
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: Reto: Números Romanos

Hidek1, muy buen trabajo compañero :D
__________________
http://dedydamy.com/
  #205 (permalink)  
Antiguo 21/08/2010, 08:36
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Reto: Números Romanos

pues claroo. si presento mi codigo sin comentarios ni espacios es obvio que tendrá menos lines....
Código PHP:
Ver original
  1. <?php
  2. $db = array (0 => array(1=>"I", 2=>"II", 3=>"III", 4=>"IV", 5=>"V", 6=>"VI", 7=>"VII", 8=>"VIII", 9=>"IX"),  
  3.              1 => array( 1=>"X", 2=>"XX", 3=>"XXX", 4=>"XL", 5=>"L", 6=>"LX", 7=>"LXX", 8=>"LXXX", 9=>"XC"),
  4.              2 => array( 1=>"C", 2=>"CC", 3=>"CCC", 4=>"CD", 5=>"D", 6=>"DC", 7=>"DCC", 8=>"DCCC", 9=>"CM"),
  5.              3 => array( 1=>"M", 2=>"MM", 3=>"MMM", 4=>"MMMM", 5=>"MMMMM", 6=>"MMMMMM", 7=>"MMMMMMM", 8=>"MMMMMMMM", 9=>"MMMMMMMMM"),);
  6. function romanNumber($numero_aleatorio){
  7.       global $db;
  8.       $cifra = $numero_aleatorio;
  9.       $cifra = strrev($cifra);
  10.       $cant_caract = strlen($cifra);
  11.       $numeros = str_split($cifra);
  12.       for ($i=$cant_caract; $i >= 0; $i--){
  13.          $rresult .= $db[$i][$numeros[$i]];
  14.      }
  15. return $rresult;
  16. }
  17. ?>
__________________
la la la
  #206 (permalink)  
Antiguo 21/08/2010, 08:56
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: Reto: Números Romanos

Y claro Truman_truman, medir por lineas un programa no seria lo correcto, jejejj de ultima si quieres tomarte el trabajo midelo por caracteres... Pues es obvio que quien identa el código y sigue estándares de codificación tendrá un código mas largo siempre, o casi siempre jejjejej

Igual el mio no compite en codigo corto...

Saludos
Y tus pruebas de velocidad como te dieron
  #207 (permalink)  
Antiguo 21/08/2010, 08:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Reto: Números Romanos

Cita:
Iniciado por mortiprogramador Ver Mensaje
[...] aunque me encantaría entender mejor la función que no participó, pues la veo más interesante, aunque probandola siempre me devolvía 0 [...]
bueno, a esto... precisamente es la función inversa, osea el argumento no es un entero... sino un string con el numero romano, ej. numberRoman('MMXII')

Edito: precisamente ya había propuesto una función basada en Reflection para contabilizar los caracteres de cierta función, si buscan en el tema original de competencias php ahí debería seguir la función...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #208 (permalink)  
Antiguo 21/08/2010, 09:21
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Reto: Números Romanos

Cita:
Iniciado por portalmana Ver Mensaje
Y claro Truman_truman, medir por lineas un programa no seria lo correcto, jejejj de ultima si quieres tomarte el trabajo midelo por caracteres... Pues es obvio que quien identa el código y sigue estándares de codificación tendrá un código mas largo siempre, o casi siempre jejjejej

Igual el mio no compite en codigo corto...

Saludos
Y tus pruebas de velocidad como te dieron
La velocidad me dió bastante bien, es como vos pusiste mas arriba
__________________
la la la
  #209 (permalink)  
Antiguo 21/08/2010, 09:42
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: Reto: Números Romanos

Bueno, hice para truman_truman el código mas corto...
Para ello no conté ni espacios es decir solo caracteres útiles digamos y elimine cualquier tipo de formulario o HTML que existiera en el codigo.....
Lo único que los que hicieron CSS para mayores a 4.000 quedo pues forma parte del código serian de otra categoría...

También fueron eliminados los tags php de apertura y clausura...

Los Resultados:

Hidek1 Func 1 = 244
Hidek1 Func 2 = 250
pateketrueke = 291
Alcalina = 388
quike88 = 561
silvanha = 599
Truman_Truman = 605
Triby = 619
Portalmana = 636
HackmanC = 745
AngelAparicio = 812
dedydamy = 832
abimaelrc = 955
carlos_belisario = 1016
exangel = 1821
Mortiprogramador= 2644
  #210 (permalink)  
Antiguo 21/08/2010, 10:20
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Reto: Números Romanos

A mi lo que mas me intereza es saber si mi forma de programar, es válida, ya que mi aprendizaje es completamente autodidacta (como la mayoría) y al no tener un profesor que me guíe no sé si lo que hago es válido, osea me siento en el aire, lo hago todo a mi manera y con limites de mi conocimiento.
Eso es lo que me gustaría saber, si voy por buen camino o voy directo al fracaso jeje...
__________________
la la la

Etiquetas: reto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 8 personas




La zona horaria es GMT -6. Ahora son las 22:20.