Quelle valeur faut-il fournir à la fonction secret() pour obtenir le mot VRAI tout en faisant en sorte que la première condition soit également considérée comme vraie ?
Le développeur qui ne disait jamais la vérité
Imaginée par @Obed · 0 résolution(s)
Explication de la solution
L'énigme repose sur une particularité de la comparaison faible en PHP avec ==.
La valeur 0 peut être comparée à la chaîne "0" avec == et être considérée comme égale.
Ainsi :
0 == "0" // true
Mais il y a un piège : avec le code présenté, la première condition serait donc exécutée avant la seconde et retournerait FAUX.
La véritable solution consiste donc à comprendre que l'ordre des conditions rend l'énigme impossible telle quelle.
L'énigme teste ainsi une compétence importante chez un développeur : ne pas seulement chercher une valeur, mais vérifier le comportement réel du programme.
La bonne réponse est donc :
Aucune valeur.
La contradiction vient du fait que toute valeur satisfaisant la première condition avec == sera interceptée avant d'atteindre la seconde.
Le développeur ne cherchait pas une valeur magique : il cherchait à voir si le joueur remarquerait le bug logique.