Mi respuesta se refiere a la programación competitiva, más que a la ingeniería de software. Aquí va.
Tendría que citar un par de problemas codechef Long Contest aquí. Si tiene un concurso de 10 días dedicado a la programación algorítmica, seguramente tendrá problemas muy serios.
Ambos son del concurso largo de noviembre 2011 de Codechef.
Color Domino Tilings and Cuts: Comprenda que sin acceso a Internet por la noche, y que yo haya tenido “una solución” durante la noche, me tenía
(a) codifique la solución durante aproximadamente una o dos horas por la noche: hasta las 4 de la mañana
(b) mantenerse despierto (con excitación nerviosa) hasta las 6 de la mañana hasta que llegue la red.
(c) ¡Envíelo para encontrarlo dando respuestas incorrectas!
y luego pasé las siguientes ~ 4 horas tratando de probar todas las suposiciones que hice en la solución (y probar que manejar cada caso especial no fue fácil), luego volver al código y volver a intentarlo, etc. y finalmente encontrar el error fue un error de codificación y no una violación del razonamiento lógico.
- En este algoritmo de clasificación de radix, ¿qué representa cada variable? (Java)
- ¿Es cierto que si entendemos los algoritmos podemos entender todos los programas difíciles de todos los idiomas?
- Dada la secuencia creciente, en cada paso puede elegir 2 elementos consecutivos, reemplazarlos con su suma y no puede elegir el último elemento, ¿cuál es el número máximo de movimientos que puede hacer para que la secuencia siga aumentando?
- Cómo demostrar que O (f (n) - g (n)) no es necesariamente igual a O (f (n)) - O (g (n))
- ¿Qué es el algoritmo A * en inteligencia artificial?
Si bien el anterior fue sin duda el más difícil, me gustaría citar también el siguiente problema más difícil del concurso: Lucky Days.
Este … bueno, todo lo que puedo decir es que fue una solución realmente agradable, que implicaba una variación del método gigante-step-baby-step. Resultó que otros encontraron algoritmos aún más eficientes durante el transcurso del concurso, pero la emoción de descifrar este algoritmo en realidad y luego tener que resolver varias optimizaciones para que pase, hace que este problema también sea digno de mención.