Ver Mensaje Individual
  #75 (permalink)  
Antiguo 03/12/2014, 14:18
Pantaláimon
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 17 años, 9 meses
Puntos: 32
Respuesta: Petando la pila. Problemas y retos usando recursividad.

Hola!

Cita:
Iniciado por leosansan
Yo lo que le propondría a Pantaláimon que alterne Retos de recursividad con otros de mayor libertad. Creo que eso mantendría más activo el tema y se apuntarían más usuarios que en este caso no tienen conocimientos y/o practica suficiente del tema de recursividad y no pueden intervenir. En cambio si se alternan con otros que no sean estrictamente de recursividad seguro que se apuntarían, lo que redundaría en una mayor actividad participativa en el tema.

Como ejemplo, echo de menos la intervención de personas como eferion y amchacon, entre otros, en el último reto. Así que amigo Pantaláimon abre el espectro de problemas, tampoco te vamos a exigir que los supervises, para eso ya estamos los demás usuarios. Tu podrías ser el moderador/supervisor de lo que se vaya proponiendo. aunque tampoco niego el que algún usuario proponga Retos interesantes. amchacon lo intentó pero a mí lo de las listas y árboles como que no, pero otros temas podrían ser interesantes.

Yo tengo en cartera algunos Retos que podrían ser más que interesantes si Pantaláimon lo admite. Hasta entonces me reservo, no quiero fastidiarle su tema.
A mi me parece bien, si creéis que conllevará más participación por mi genial. Si tenéis algún problema interesante quizá me lo podéis decir por privado, discutimos minucias, y yo el viernes me encargaría de redactarlo y pongo quien lo ha propuesto para no quitaros mérito

De todos modos tengo la impresión de que mucha más gente no va a haber por esa situación. Quizá vangodp o dehm se acaben animando. Pero el problema parece ser más de tiempo a disponer que no de conocimientos, pues los problemas iniciales son fáciles. Lo que sucede es que un 99% de gente pasa fugazmente por estos foros para que le resuelvan algún problema y luego desaparece. Así que quizá con paciencia el 1% restante que se incorpora a estos foros les guste este hilo y acaben participando.

Recojo también la opinión de Hackman:
Cita:
Iniciado por Hackman
Realmente es una muy buena idea, habrá que ver si Pantaláimon tiene los recursos necesarios, el tiempo, la dedicación, etc., aunque yo quería evitar eso, y por eso escribí que mi código no estaba optimizado ni especializado, aunque como podrán ver mas arriba, explico que para comprobarlo hice bastantes pruebas.

El problema en mi caso, principalmente es la legibilidad del código, si optimizo cualquiera de las propuestas el código va a ser incomprensible, inclusive para mi mismo (el lenguaje C es bastante obscuro en si mismo); mientras que como está actualmente es bastante claro y mas de algo podrá aprender alguien que tenga un nivel de conocimiento menor.
Claro, a mi en cierto modo, lo interesante de este hilo es también aprender de lo que escriben los demás. Algunas de mis intervenciones han ido en ese sentido, explicando mis soluciones o el algoritmo de complejidad logarítmica para la potencia de kutcher. De todas maneras también entiendo, como dijo eferion que tiene cierto aliciente conseguir el código más eficiente. Y prefiero este tipo de competitividad al de competir por ver quien escribe un código en menos líneas (como estoy viendo en los últimos posts). Pues esta última si que lleva claramente a hacer el código más incomprensible.

Entonces, para llegar a una solución de compromiso entre la competitividad y el aprender, propongo una serie de medidas.
1) Para comparar códigos, me comprometo a medir tiempos de ejecución para los problemas de cierta complejidad (contarNegativos o los juegos de cadenas supongo que no hace falta). A ver si mañana tengo tiempo y publico los tiempos de ejecución para ciertos rangos de numeros de las funciones promedioCollatz y esVampiro.
2) Ahora bien, con el fin de aprender, me gustaría que también hubiera un ambiente de aprendizaje y colaboración. Es decir, si una persona hace un código más eficiente, que no tenga manías en explicar qué "trucos" ha usado. Pues quizá sumando los trucos usados por uno y otro quizá podemos crear soluciones más eficientes, aprender de todos. Pues sentirse parte de un éxito colectivo tampoco está mal, ¿no?
3) Para reducir la tendencia a que los códigos se tornen oscuros, compilaré los códigos en modo optimizado:
Código BASH:
Ver original
  1. g++ -O3 programa.cpp -o programa
Para que códigos no corran más rápido por usar operadores de bits o aritmética entera, un bucle u otro, etc etc... y así priorizando la eficiencia algorítmica frente a los pequeños detalles que siempre se puede encargar de optimizar un compilador.

Cualquier cosa para ir mejorando el tema idme diciendo.

Un saludo!
__________________
github.com/xgbuils | npm/xgbuils