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...

10 comentarios:

Carlos Luna dijo...

Pues a mí ya me parece bien que no se libere el código hasta después de la competición, pero rogaría que las especificaciones fuesen siempre lo más técnicas y precisas posible.

Marcos dijo...

¡Por supuesto! Por eso no duden que habrá más de una modificación (ajuste, mejor dicho) hasta que quede todo pulido como para el planteo definitivo.
Igualmente hasta ahora no ha surgido nada demasiado extraño, más que la cuestión de las estrategias "mafiosas" de que habla Rafael en su comentario.

Anónimo dijo...

Una duda relativa a lo de las mafias, pero no tanto... aunque no se sepan los nombres, se sabrá qué ha hecho cada jugador? se sabrán cuáles han sido los números, pero sin asociarse a las elecciones de los turnos anteriores? o simplemente se sabrá cuál ha sido el número ganador de la ronda?

Si conocemos el comportamiento individual de cada jugador, se pueden hacer predicciones más precisas en lugar de predicir el comportamiento del grupo como un conjunto...

Marcos dijo...

Si, como especifiqué en las reglas, el historial completo de cada jugador estará disponible, además de las jugadas ganadoras.
Igualmente aclararé mejor algunos puntos en otro post.

Anónimo dijo...

sí, ya lo he visto, es que no sé por qué se me había pasado ^_^

dfbdsgf dijo...

Entonces ¿las estrategias "mafiosas" están permitidas? puesto que cada uno puede mandar 3 algoritmos ¿puede mandar uno que beneficie claramente a otro?

No veo porqué no.

Carlos Luna dijo...

Pues muy sencillo, porque si Marcos detecta una táctica sospechosa simplemente lo investiga, habla con el creador, etc, etc... no olvidemos que Marcos hace de "juez" para que las tácticas no hagan trampas y que luego libera el código fuente para que cada cual pueda comprobar que ha sido así.

dfbdsgf dijo...

Creo que algunos algoritmos sin ni siquera proponerselo pueden perjudicar a otros o beneficiarlos.

Es lógico que Marcos evite estrategias sospechosas entre algoritmos del mismo autor, pero lo tendrá muy dificil para algoritmos de autores diferentes.

Por eso propongo un método de rondas en las que se hagan combinaciones distintas, ya que dos algoritmos determinísticos iguales sencillamente se anularían el uno al otro aunque sean muy buenos. Supongo que Marcos ya lo habrá pensado.

Anónimo dijo...

@eljose

Creo yo que si un algoritmo es anulado por otro, entonces no puede decirse que es muy bueno.

En mi opinión, el algoritmista debe prever la posibilidad de que participe un algoritmo semejante o idéntico al propio.

Carlos Luna dijo...

Totalmente de acuerdo con Ivan. Hay que estar en todo!