Il existe un site appelé "Return True to Win" avec des tâches intéressantes pour les programmeurs Javascript. Le but est de trouver des arguments à une fonction donnée qui la forcent à retourner true.
Voici l'une des tâches:
function total(x) {
return (x < x) && (x == x) && (x > x);
}
Les utilisateurs doivent trouver des extraits de code pour x
que la fonction renvoie true. Pour tester des extraits, vous appelez la fonction avec votre extrait comme paramètre (c. total(<snippet>)
-à-d.).
J'ai trouvé une solution à 22 caractères:
{valueOf:_=>n++%3},n=0
Certaines personnes ont trouvé la solution en 21 caractères. Je ne peux pas trouver cette solution. Quelle est la solution en 21 caractères?
code-golf
tips
javascript
Oleg
la source
la source
{valueOf:Math.random}
fonctionne de temps en temps ... mais je soupçonne que cela enfreindrait une règle ... (ou peut-être pas?)Réponses:
21 caractères
Ma blague originale, qui a été rejetée et proposée à la suppression:
11 caractères :)
Tester:
la source
function total(x) { ... } total(<insert here>)
et de faire en sorte que le résultat de l'total()
appel soittrue
, donc je ne pense pas que cela fonctionnera ...<insert here>
->0),(true
:)0)||(true
. Aucun des deux ne fonctionne cependant, et maintenant je suis totalement confus car il y a un autre niveau où vous devez faire0);(!0
ou faire des choses similaires ...Réponse tricheuse
Je l'ai déjà mentionné dans les commentaires, mais il n'a pas été testé. C'est maintenant. Vous devrez continuer à le soumettre jusqu'à ce que cela fonctionne.
Démo
la source
x == x
devient vrai si x est choisi au hasard à chaque fois.valueOf
n'est pas invoquée lors du traitement du test d'égalité. D'un autre côté, les opérateurs de comparaison attendent des valeurs primitives, ce qui obligevalueOf
à être appelé. Voici un test qui le montre.