Mostrando las entradas con la etiqueta reglas generales. Mostrar todas las entradas
Mostrando las entradas con la etiqueta reglas generales. Mostrar todas las entradas

miércoles, marzo 26, 2008

Midiendo la elegancia

Una de las cosas más estimulantes y sorprendentes de este proyecto es la comparación de la complejidad y eficiencia de los distintos algoritmos que se presentan. Algunos son simples y directos, pero logran un desempeño pobre. Otros son complicados o lentos, pero su complejidad se ve premiada por la victoria.

Pero cada tanto hay alguno de sencillez prístina que además gana limpiamente la competencia; y aunque eso puede indicar una pobreza de estructura del juego en cuestión, también indica estilo y elegancia.

Esto hace pensar que quizá sería interesante definir, para futuras competencias, categorías basadas en la complejidad intrínseca de los distintos algoritmos.

No es atractiva la idea de poner límites al tiempo de ejecución o uso de memoria, como hacen en otras competencias de este tipo; más bien sería deseable dividir los algoritmos según su uso de los recursos y luego, dentro de cada categoría, declarar un vencedor.

No queda claro cómo sería la mejor manera de hacerlo; si alguno se imagina un método elegante, que lo indique aquí y lo discutiremos.

domingo, octubre 01, 2006

Reflexiones varias

Pensé bastante sobre la posibilidad de ofrecer el código fuente del sistema y otras herramientas que uso, para que los participantes programadores puedan probar sus algoritmos antes de presentarlos; pero encontré varias razones (abiertas a discusión, claro) para no hacerlo:
  • Me da modorra tener que portar el código que tengo a un lenguaje más conocido (el Unicon no es muy popular, me he dado cuenta).
  • Sería injusto para los no-programadores, que testean sus algoritmos "sobre el papel", que los programadores tengan una herramienta "oficial" que les simplifique la tarea. Aún admitiendo que la programación es un arte complejo, la velocidad de una computadora nos permite hacer muchos experimentos difíciles de plantear teóricamente.
  • En gran medida (como me di cuenta en el concurso anterior) no hay código fuente "oficial" hasta que termina la recolección de algoritmos, porque cada nuevo algoritmo puede modificar mis ideas de cómo implementar otros algoritmos, cómo representar más eficientemente la información, etc.
  • La principal razón: es más divertido y enriquecedor para mí implementar todos los algoritmos, intercambiando ideas, preguntas, respuestas, dudas y sugerencias con los participantes.

Como dije, estas razones están abiertas a discusión, por supuesto; y obviamente, luego de que termina una competencia es necesario (y divertido) liberar el código del sistema y de todos los algoritmos, para que todos vean contra quién jugaron.
Veremos si la complejidad de la nueva competencia me hace arrepentir de esta decisión, jeje...

miércoles, septiembre 20, 2006

Sobre las repeticiones

Este es un principio que aplicaré en todos los concursos: las estrategias repetidas serán representadas por un solo algoritmo participante, con autoría compartida, salvo que el concurso en sí admita participación en equipos de algoritmos.
Esto representa el espíritu de los concursos: los que compiten son algoritmos, no personas...