Este desafío se basa en algunos hallazgos nuevos relacionados con la conjetura de Collatz y está diseñado de alguna manera en el espíritu de un proyecto colaborativo de polymath . Los expertos en teoría matemática / numérica consideran extremadamente difícil o quizás imposible resolver la conjetura completa, pero esta tarea más simple es bastante factible y hay muchos ejemplos de código de muestra. En el mejor de los casos, se pueden obtener nuevas ideas teóricas sobre el problema basadas en las entradas de los concursantes / ingenio / creatividad.
El nuevo hallazgo es el siguiente: Imagine una serie contigua de enteros [ n1 ... n2 ] digamos m total. Asigne estos enteros a una estructura de lista. Ahora una versión generalizada de la conjetura de Collatz puede proceder de la siguiente manera. Itere uno de los enteros m (o menos) en la siguiente lista según algunos criterios / algoritmos de selección. Elimine ese número entero de la lista si llega a 1. Claramente, la conjetura de Collatz es equivalente a determinar si este proceso siempre tiene éxito para todas las opciones de n1, n2 .
Aquí está el giro, una restricción adicional. En cada paso, agregue las iteraciones m actuales en la lista juntas. Luego considere la función f (i) donde i es el número de iteración yf (i) es la suma de iteraciones actuales en la lista. Busque f (i) con una propiedad "bonita" particular.
Todo el concepto general está mejor documentado aquí (con muchos ejemplos en ruby). El hallazgo es que existen estrategias / heurísticas / algoritmos bastante simples que conducen a una " f (i) " decreciente de forma aproximadamente monotónica y existen muchos ejemplos en esa página. Aquí hay un ejemplo de la salida gráfica (trazada a través de gnuplot):
Así que aquí está el desafío: usar variaciones en los ejemplos existentes o ideas completamente nuevas para construir un algoritmo de selección que resulte en una f (i) "lo más cerca posible de una disminución monotónica". Los participantes deben incluir un gráfico de f (i) en su presentación. Los votantes pueden votar según ese gráfico y las ideas algorítmicas en el código.
¡El concurso se basará en n1 = 200 / n2 = 400 parámetros solamente! (lo mismo en la página de muestra). Pero con suerte los concursantes explorarán otras regiones y también intentarán generalizar sus algoritmos.
Tenga en cuenta que una táctica que podría ser muy útil aquí son los algoritmos de tipo de descenso de gradiente o algoritmos genéticos.
Puede discutir todo esto en el chat para los participantes interesados.
Para algunos árbitros, otro desafío codegolf Collatz: Conjetura Collatz (por Doorknob )