Un puzzle de programmation comprend un objectif, un programme partiellement terminé et des règles décrivant comment le programme peut être modifié. Le programme est spécialement conçu pour rendre difficile la réalisation de l'objectif. Une réponse à un puzzle de programmation prend le programme et le modifie uniquement de la manière spécifiée dans les règles, de sorte que le but soit atteint.