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 x
eso 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);(!0
o 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 == x
hizo realidad si x se elige al azar cada vez.valueOf
no se invoca cuando se procesa la prueba de igualdad. Por otro lado, los operadores de comparación esperan valores primitivos, que obliganvalueOf
a ser llamados. Aquí hay una prueba que muestra eso.