Istnieje strona o nazwie „Return True to Win” z interesującymi zadaniami dla programistów Javascript. Celem jest znalezienie argumentów dla danej funkcji, które zmuszają ją do zwrócenia wartości true.
Oto jedno z zadań:
function total(x) {
return (x < x) && (x == x) && (x > x);
}
Użytkownicy muszą znaleźć fragmenty, których wartość x
powoduje, że funkcja zwraca true. Aby przetestować urywki, wywołujesz funkcję z urywkiem jako parametrem (tj total(<snippet>)
.).
Znalazłem rozwiązanie 22-znakowe:
{valueOf:_=>n++%3},n=0
Niektóre osoby znalazły rozwiązanie w 21 znakach. Nie mogę znaleźć tego rozwiązania. Jakie jest rozwiązanie w 21 znakach?
code-golf
tips
javascript
Oleg
źródło
źródło
{valueOf:Math.random}
działa od czasu do czasu ... ale podejrzewam, że naruszałoby to jakąś zasadę ... (a może nie?)Odpowiedzi:
21 znaków
Mój oryginalny żart, który został odrzucony i zaproponował usunięcie:
11 znaków :)
Test:
źródło
function total(x) { ... } total(<insert here>)
i uzyskanie wynikutotal()
rozmowytrue
, więc nie sądzę, aby to zadziałało ...<insert here>
->0),(true
:)0)||(true
. Żadna z nich jednak nie działa, a teraz jestem całkowicie zdezorientowany, ponieważ istnieje inny poziom, w którym musisz zrobić0);(!0
lub coś podobnego ...Oszukana odpowiedź
Wspomniałem już o tym w komentarzach, ale nie został przetestowany. To jest teraz. Musisz go przesyłać, dopóki nie zadziała.
Próbny
źródło
x == x
stało, jeśli x jest wybierane losowo za każdym razem.valueOf
nie jest wywoływana podczas przetwarzania testu równości. Z drugiej strony operatory porównania oczekują prymitywnych wartości, które zmuszająvalueOf
do wywołania. Oto test, który to pokazuje.