#30 Si tiene compilador o intérprete, es apto para usarse ya sea php, java, c, lisp, haskell o lo que sea xD
Bueno, pues damos por concluida la ronda de votaciones teniendo como ganador al kata de Números Romanos.
El programa a realizar debe admitir como parámetro de entrada un número entero positivo mayor que 0 y menor que 4000. Los romanos tenian como regla no repetir más de 3 veces seguidas un símbolo numérico, por lo que no se puede poner MMMM para el 4000, así que no se puede poner.
Se usarán los símbolos siguientes:
-
I -> 1
-
V -> 5
-
X -> 10
-
L -> 50
-
C -> 100
-
D -> 500
-
M -> 1000
Reglas:
-
Se pueden repetir hasta un máximo de 3 veces seguidas los símbolos I, X, C y M
-
No se pueden repetir los símbolos V,L,D
-
Elementos de sustracción I -> V,X | X -> L,C | C -> D,M
-
No pueden sustraer de los símbolos V, L y D
Más adelante sacaremos los juegos de prueba.
#35 Lo sé. Pero no entiendo que sentido tiene usar jquery para realizar ese kata. Cuando con javascript nativo puedes hacerlo. Y ya se que todo lo que hagas con jquery puedes hacerlo con js nativo. Pero te ahorra mucho tiempo manejando el dom de un documento. Pero para este caso no se que utilidad le vas a dar...
#37 Ok ok xD. Pero no vas a usar mucho jquery en realidad. Quizá para obtener los datos de entrada mediante un form y representarlos luego, pero poco más. Lo demás será todo js nativo.
Si me hubieses dicho mootools que su core extiende el objeto String y el Number pues no habria preguntao...
#37 Yo te entiendo, yo uso jQuery hasta para ir al baño xD Es un error de optimización, pero es que es taaaan bonito y tan cómodo que no concibo la vida JS sin él xD
¿Se puede postear ya? Implementado en Common LISP en 5 min, pero no sé si postearlo por no spoilear a otros karatekas.
Yo lo tengo ya, creo que funciona bien aunque no me he puesto a probarlo muy a fondo.
Estoy oxidadísimo en C así que es posible que haya hecho alguna burrada :\
#46: A mí me parece molón porque usas algo que desconozco, y eso siempre mola xDD. A ver si me animo a hacerlo en Erlang, que estoy aprendiendo.
EDIT: https://github.com/SantiMunin/MV-Coders-on-fire/tree/master/1_decimal_to_roman
Aquí podéis verlo en C y en Erlang
#45 ok entonces posteo yo también.
Recomiendo no ver el código si aún no habéis hecho la kata porque es un spoiler total y me gustaría ver las implementaciones del resto. No sé si hay otra forma de hacerlo en realidad (no he buscado nunca la "solución" ), pero esta la pensé hace mucho tiempo y me parece de lo más simple. La gente se suele complicar mucho cuando es facilísimo.
A lo mejor a alguien le parece cutre que no use tabla de símbolos a lo #45 pero... paso xD A lo mejor luego edito con tabla de símbolos.
Ej. uso:
(romanos 1923)
Salida.
(M C M X X I I I)
EDIT: Venga va, como era obvio al final me he picado y lo he hecho con tabla de símbolos.
#47 supongo que no entiendes LISP o no entiendes la recursividad. Es más fácil de lo que parece. Te explico el algoritmo sin tabla:
El algoritmo con tabla es lo mismo, pero buscando en la tabla el símbolo correcto.
EDIT: Comprobando tu código #45 veo que también usas mi mismo concepto de no usar casos especiales (a la peña en mi clase se le iba mucho la cabeza tratando 9, 90, etc. xD), pero no entiendo muy bien por qué divides y no simplemente restas :S ¿Es por meter directamente X veces el mismo símbolo en lugar de en varios pasos? Por cierto, ojo con tu symbol, que debería ser [3] y no [2].
#48: Te refieres a la línea 47 o a la 56?
Si es por la 47, es para meter todos los simbolos del mismo tipo de una vez. Por ejemplo, si tengo 3500, pues meto 3 veces M y después me quedo con el resto de dividir entre 1000, que sería 500.
Lo del symbol por qué sería 3? Por la mierda está del "\0"? Qué puta mierda es C en temas de comodidad colega xDDD
Efectivamente se me pasó, como ya digo yo de C sé lo justo de utilizarlo en varias asignaturas, pero nunca lo he utilizado para hacer mis proyectos (que es donde más aprendo yo). De hecho mi idea es aprender herramientas con esto, no hacerlo con lo que ya domino.
Me voy a animar a hacer el reto en python, así practico un poco. Probablemente sea una guarrada lo que vaya a hacer no me peguéis xD
#46 Se ve que el corolario de Robert Morris se cumple xD
(defun int->roman (num) (format nil "~@r" num))
Aqui va lo mio en python:
#55 ¿No? A mi en local me está funcionando. 0W y 0E en Eclipse y hace lo que quiero
#52 no me puedo creer que format formatée en números romanos Ni se me pasó por la cabeza.
Por cierto, ¿ves alguna cagada en mi código? Como novato en Lisp no sé si "sobrecomplico" las cosas. Nótese que he intentado ser recursivo antes que usar whiles y demás (prefiero funcional puro.)
PD: entendiste mal el corolario. El "including Common Lisp" no se refiere a añadir a "C or Fortran" si no a "program". O así lo interpreto yo.