Làm thế nào để giải quyết toàn bộ nhiệm vụ trên Trả lại đúng sự thật để giành chiến thắng trong 21 ký tự


13

Có một trang web được gọi là "Trả lại đúng để giành chiến thắng" với các nhiệm vụ thú vị cho các lập trình viên Javascript. Mục tiêu là tìm các đối số cho một hàm đã cho buộc nó trả về giá trị true.

Sau đây là một trong những nhiệm vụ:

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

Người dùng phải tìm đoạn trích cho giá trị của hàm xđó khiến hàm trả về đúng. Để kiểm tra đoạn mã, bạn gọi hàm với đoạn mã của mình là tham số (nghĩa là total(<snippet>)).

Tôi tìm thấy một giải pháp gồm 22 ký tự:

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

Một số người tìm thấy giải pháp trong 21 ký tự. Tôi không thể tìm ra giải pháp này. Giải pháp trong 21 ký tự là gì?


3
Bạn nên liên kết cuộc thi / trang nhiệm vụ được lấy từ đó.
Emigna


2
{valueOf:Math.random}thỉnh thoảng hoạt động ... nhưng tôi nghi ngờ điều đó sẽ vi phạm quy tắc nào đó ... (hoặc có thể không?)
Arnauld

1
Đó là những quyết định khó khăn; trong số 24 người đầu tiên, tôi chỉ có thể trả lời 14 ...
Neil

4
Ghi chú của nhà phát triển mặn ... có chức năng trả về Boolean được gọi là tổng cộng giống như đinh trên bảng phấn!
scunliffe

Câu trả lời:


7

21 ký tự

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

Trò đùa ban đầu của tôi, đã bị hạ cấp và đề nghị xóa:

11 ký tự :)

total=_=>!0

Kiểm tra:

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

3
Suy nghĩ tốt về công việc, nhưng thách thức là kết thúc function total(x) { ... } total(<insert here>)và có kết quả của total()cuộc gọi true, vì vậy tôi không nghĩ rằng việc này sẽ hiệu quả ...
ETHproductions

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

Đã thử điều đó, và cũng có thể 0)||(true. Mặc dù không hoạt động, và bây giờ tôi hoàn toàn bối rối bởi vì có một cấp độ khác mà bạn phải làm 0);(!0hoặc tương tự ...
Sản phẩm ETH

Giải pháp mới hơn của bạn thật tuyệt vời, +1 từ tôi!
Sản phẩm ETH

4

Câu trả lời gian lận

Tôi đã đề cập đến nó trong các ý kiến, nhưng nó đã không được thử nghiệm. Nó bây giờ là. Bạn sẽ phải tiếp tục gửi nó cho đến khi nó hoạt động.

{valueOf:Math.random}

Bản giới thiệu

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)')


Bạn có thể giải thích thêm về cách thức này hoạt động? Tôi chỉ không thể hiểu làm thế nào x == xtrở thành sự thật nếu x được chọn ngẫu nhiên mỗi lần.
tsh

1
@tsh Thủ thuật là valueOfkhông được gọi khi kiểm tra đẳng thức được xử lý. Mặt khác, các toán tử so sánh mong đợi các giá trị nguyên thủy, bắt buộc valueOfphải gọi. Đây là một thử nghiệm cho thấy rằng.
Arnauld

Tôi nhận được số điểm cao <s> 15 </ s> 16 lần lặp !!!
Bạch tuộc ma thuật Urn

@MagicOctopusUrn Thôi nào, bạn có thể làm tốt hơn thế! Chèn tiền và chơi lại!
Arnauld
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.