Ada situs yang disebut "Return True to Win" dengan tugas menarik untuk programmer Javascript. Tujuannya adalah untuk menemukan argumen ke fungsi yang diberikan yang memaksanya untuk mengembalikan nilai true.
Berikut ini adalah salah satu tugas:
function total(x) {
return (x < x) && (x == x) && (x > x);
}
Pengguna harus menemukan cuplikan untuk nilai x
yang menyebabkan fungsi mengembalikan true. Untuk menguji snippet, Anda memanggil fungsi dengan snippet Anda sebagai parameter (yaitu total(<snippet>)
).
Saya menemukan solusi 22 karakter:
{valueOf:_=>n++%3},n=0
Beberapa orang menemukan solusinya dalam 21 karakter. Saya tidak dapat menemukan solusi ini. Apa solusinya dalam 21 karakter?
code-golf
tips
javascript
Oleg
sumber
sumber
{valueOf:Math.random}
bekerja dari waktu ke waktu ... tapi saya menduga itu akan melanggar beberapa aturan ... (atau mungkin tidak?)Jawaban:
21 karakter
Lelucon asli saya, yang diturunkan dan diusulkan untuk dihapus:
11 karakter :)
Uji:
sumber
function total(x) { ... } total(<insert here>)
dan menerima hasil daritotal()
panggilan itutrue
, jadi saya tidak berpikir ini akan berhasil ...<insert here>
->0),(true
:)0)||(true
. Tidak ada yang bekerja, dan sekarang saya benar-benar bingung karena ada tingkat lain di mana Anda harus melakukan0);(!0
atauJawaban Cheaty
Saya sudah menyebutkannya di komentar, tetapi tidak diuji. Sekarang. Anda harus terus mengirimkannya sampai berfungsi.
Demo
sumber
x == x
menjadi benar jika x dipilih secara acak setiap waktu.valueOf
tidak dipanggil ketika tes kesetaraan diproses. Di sisi lain, operator perbandingan mengharapkan nilai-nilai primitif, yang memaksavalueOf
untuk dipanggil. Ini adalah tes yang menunjukkan hal itu.