21 karakterde “kazanmak için geri dönüş” konusundaki toplam görev nasıl çözülür?


13

Javascript programcıları için ilginç görevleri olan "Kazanmak İçin İade" adlı bir site var . Amaç, belirli bir işleve doğru dönmeye zorlayan argümanlar bulmaktır.

Görevlerden biri:

function total(x) {
  return (x < x) && (x == x) && (x > x);
}

Kullanıcılar x, işlevin true değerine dönmesine neden olan değerin snippet'lerini bulmalıdır . Parçacıkları test etmek için, parametre olarak (yani total(<snippet>)) snippet'inizle işlevi çağırırsınız .

22 karakterli bir çözüm buldum:

{valueOf:_=>n++%3},n=0

Bazı insanlar çözümü 21 karakterde buldu. Bu çözümü bulamıyorum. 21 karakterdeki çözüm nedir?


3
Görevin alındığı yarışmayı / sayfayı bağlamalısınız.
Emigna


2
{valueOf:Math.random}zaman zaman çalışıyor ... ama bunun bir kuralı ihlal edeceğinden şüpheleniyorum ... (ya da belki değil mi?)
Arnauld

1
Bunlar kesinlikle zor; İlk 24'ten sadece 14'ü cevaplayabilirim ...
Neil

4
Tuzlu geliştirici not ... "total" adı verilen Boolean işlevine sahip olmak, kara tahtadaki tırnaklara benzer!
scunliffe

Yanıtlar:


7

21 karakter

{valueOf:n=_=>n=2<<n}

Silinen ve silinmesi önerilen orijinal şakam:

11 karakter :)

total=_=>!0

Ölçek:

function total(x) {
  return (x < x) && (x == x) && (x > x);
}
var arg = total=_=>!0
console.log(total(arg))

3
Kutunun dışında düşünmek iyi bir iş, ama meydan okuma bitirmek function total(x) { ... } total(<insert here>)ve total()çağrı sonucu olması true, bu yüzden bunun işe yarayacağını sanmıyorum ...
ETHproductions

@ETHproductions <insert here>-> 0),(true:)
ngn

Bunu da denedim 0)||(true. Her ikisi de işe yaramıyor ve şimdi tamamen kafam karıştı çünkü yapmanız gereken 0);(!0ya da benzer bir şey yapmak zorunda olduğunuz başka bir seviye var ...
ETHproductions

Yeni çözümün şaşırtıcı, benden +1!
ETHproductions 21:18

4

Ucuz cevap

Daha önce yorumlarda bahsetmiştim, ancak test edilmedi. Şimdi. Çalışana kadar göndermeye devam etmeniz gerekir.

{valueOf:Math.random}

gösteri

function total(x) {
  return (x < x) && (x == x) && (x > x);
}

for(i = 1; !total({valueOf:Math.random}); i++);

console.log('Returned true after ' + i + ' iteration(s)')


Bunun nasıl çalıştığı hakkında daha fazla bilgi verebilir misiniz? x == xEğer x her seferinde rastgele seçilirse nasıl gerçekleştiğini anlayamıyorum .
tsh

1
@tsh Hüner, valueOfeşitlik testi işlendiğinde çağrılmamasıdır. Öte yandan, karşılaştırma işleçleri valueOfçağrılmaya zorlanan ilkel değerler bekler . İşte bunu gösteren bir test .
Arnauld

<s> 15 </s> 16 tekrardan yüksek bir puan aldım !!!
Sihirli Ahtapot Urn

@MagicOctopusUrn Hadi, bundan daha iyisini yapabilirsin! Jeton takın ve tekrar oynayın!
Arnauld
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.