Hay un sitio llamado "Return True to Win" con tareas interesantes para los programadores de Javascript. El objetivo es encontrar argumentos para una función dada que la obligue a devolver verdadero.
La siguiente es una de las tareas:
function total(x) {
return (x < x) && (x == x) && (x > x);
}
Los usuarios deben encontrar fragmentos para el valor de xeso hacen que la función devuelva verdadero. Para probar fragmentos, llame a la función con su fragmento como parámetro (es decir total(<snippet>)).
Encontré una solución de 22 caracteres:
{valueOf:_=>n++%3},n=0
Algunas personas encontraron la solución en 21 caracteres. No puedo encontrar esta solución. ¿Cuál es la solución en 21 caracteres?
code-golf
tips
javascript
Oleg
fuente
fuente

{valueOf:Math.random}funciona de vez en cuando ... pero sospecho que eso infringiría alguna regla ... (¿o tal vez no?)Respuestas:
21 caracteres
Mi broma original, que fue rechazada y propuesta para su eliminación:
11 caracteres :)
Prueba:
fuente
function total(x) { ... } total(<insert here>)y tener el resultado de latotal()llamadatrue, así que no creo que esto funcione ...<insert here>->0),(true:)0)||(true. Sin embargo, ninguno de los dos funciona, y ahora estoy totalmente confundido porque hay otro nivel en el que tienes que hacer0);(!0o algo similar ...Respuesta engañosa
Ya lo he mencionado en los comentarios, pero no fue probado. Esto es ahora. Tendrás que seguir enviándolo hasta que funcione.
Manifestación
fuente
x == xhizo realidad si x se elige al azar cada vez.valueOfno se invoca cuando se procesa la prueba de igualdad. Por otro lado, los operadores de comparación esperan valores primitivos, que obliganvalueOfa ser llamados. Aquí hay una prueba que muestra eso.