1 điểm bởi GN⁺ 3 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • JS Crossword là một trò chơi ô chữ mà kết quả khi chạy đáp án bằng eval() sẽ trở thành manh mối; 7 có thể giải bằng 3+4, còn [object Object] có thể giải bằng []+{}
  • Câu đố tận dụng các tính năng JavaScript ít được biết đến hoặc khá khó hiểu, nên được khuyến nghị cho những ai đã tương đối quen với JavaScript
  • Các ký tự có thể dùng bị giới hạn ở A-Za-z0-9!"()*+-./<=>[]`{}; không thể dùng khoảng trắng, dấu phẩy hay dấu chấm phẩy, và phân biệt chữ hoa chữ thường
  • Đáp án được đánh giá trong sandbox của eval(), có thể dùng DevTools, MDN và tìm kiếm, nhưng không khuyến khích giải bằng AI
  • Tiến độ được lưu cục bộ, và khi giải xong toàn bộ bảng sẽ thấy phần kết cùng tính năng phát lại; không thu thập thống kê nào

Luật chơi

  • JS Crossword là một trò chơi ô chữ mà kết quả khi chạy đáp án bằng eval() sẽ trở thành manh mối
  • Manh mối 7 có thể giải bằng 3+4, còn manh mối [object Object] có thể giải bằng []+{}
  • Vì sử dụng các tính năng JavaScript ít được biết đến hoặc hơi khó hiểu, nên được khuyến nghị cho những người đã tương đối quen với JavaScript
  • Các ký tự có thể dùng bị giới hạn ở A-Za-z0-9!"()*+-./<=>[]`{}; không thể dùng khoảng trắng, dấu phẩy hay dấu chấm phẩy
  • Ô chữ phân biệt chữ hoa chữ thường, và đáp án cuối cùng chỉ gồm các từ tiếng Anh, khớp với A-Za-z
  • Đáp án được đánh giá bên trong sandbox eval(), và có thể tự thử trực tiếp trong playground ở cuối trang
  • Có thể dùng các tài nguyên bên ngoài như DevTools, MDN và tìm kiếm, nhưng không khuyến khích giải bằng AI
  • Có thể đổi hướng nhập bằng cách nhấp vào ô hoặc nhấn ctrl, và tiến độ được lưu cục bộ
  • Màu sắc dùng để phân biệt khả năng đúng của đáp án, ký tự sai, lỗi và các ô được điền sẵn

Hoàn thành và chia sẻ

  • Đáp án cuối cùng được hiển thị là horses gonna answer
  • Khi giải xong toàn bộ bảng sẽ có một đoạn kết riêng, kèm thông báo rằng có âm thanh và hiệu ứng hình ảnh mạnh
  • Sau khi hoàn thành, nếu tải lại trình duyệt và chạy replayCapture() trong bảng điều khiển JavaScript, có thể xem lại quá trình chơi
  • Dữ liệu phát lại đều chỉ được lưu cục bộ, và tác giả cho biết không thu thập dữ liệu hay thống kê liên quan đến ô chữ
  • Nhạc phần kết là revolea - its giving music
  • Tác giả là Lyra Rebane, và Jorian Woltjer đã tham gia playtest
  • Liên kết chia sẻ ý kiến: fedi, bsky, twitter

1 bình luận

 
Ý kiến trên Lobste.rs
  • Có mấy đường kẻ đậm, không rõ chúng có ý nghĩa gì. Có phải để tách chuỗi không? Tôi chưa từng thấy kiểu đó trong ô chữ
    Sửa: nhìn thấy các ô liên quan được làm nổi bật thì chắc đúng là vậy. Giờ thì thấy khá hiển nhiên, nhưng ở manh mối đầu tiên tôi đã khá bối rối

    • Đúng vậy, đó là đường ngắt đáp án. Trong ô chữ thì đây là cách khá tiêu chuẩn, và ít nhất là trong các câu đố ở nước tôi thì rất phổ biến
  • Hơi tiếc là lời giải không phải duy nhất. Theo ký hiệu tr:nth-child,td:nth-child thì các ô đơn lẻ ở 2,6, 10,18, 13,14, 16,16, 18,8 có ràng buộc chưa đủ chặt
    Cũng có ít nhất một, có lẽ là nhiều hơn, trường hợp có nhiều cách tiếp cận. 38-down có vẻ được định hướng để dùng this, nhưng một người khác đăng ảnh chụp màn hình hoàn thành đã dùng /h/s, và cách đó cũng hoạt động
    Khi sửa ở ô giao nhau thì kiểu như một đáp án được sửa đúng còn đáp án kia lại hỏng, nên phần kiểm tra đáp án đôi lúc thất bại hoặc hoạt động kỳ lạ. Tôi phải nhập lại ký tự thì mới hiện màu xanh
    Chơi lại sau khi tải lại trang thì hệ thống công nhận 38-down của tôi là đã giải, nhưng màn trình diễn cuối cùng thì lại không. Nghiêm trọng hơn, 9-down là mục chưa giải cuối cùng, và tôi đã giải 22-across theo cách không tương thích với nó; khi đổi ô giao nhau để sửa 9-down thì 22-across bị hỏng, vậy mà vẫn hiện “whoaw!!” và tính là hoàn thành. Chơi lại sau khi tải lại trang thì nhận ra đúng là vẫn chưa xong
    Có vài lần tôi phải tìm trong thư viện chuẩn JavaScript để kiếm tên khớp với glob. Nếu tôi không có bản MDN cục bộ để chạy kiểu find -name "??x?x.html" thì chắc cũng không biết phải giải sao
    29-down vẫn cho cảm giác hơi như gian lận. Dù vậy, nó thật sự rất vui và đã lấy của tôi kha khá thời gian buổi sáng 🙂

    • Cảm ơn vì đã chơi ^^!
      Lời giải không duy nhất là chủ đích. Việc có nhiều cách giải cũng vậy. Đây là một thử thách kiểu hacker, nên nếu bạn nghĩ ra được cách giải khéo léo khác thì tôi thấy cứ nên cho phép
      Tôi khá tò mò liệu có cách tái hiện ổn định lỗi kiểm tra đáp án ở ô giao nhau hay không
      Bạn bắt đúng vấn đề ở phần lời giải giao nhau rồi đấy. Có lẽ là một lỗi race condition JavaScript bất đồng bộ khá thú vị, nhưng dù sao thì chắc cũng khá dễ sửa
  • Thật sự xuất sắc! Tôi mất vài tiếng, giữa chừng phải nghỉ mấy lần để ngẫm thêm, nhưng cuối cùng cũng giải được. Tôi rất thích kiểu trải nghiệm này, và cũng rất thích ô chữ biểu thức chính quy. Cảm ơn vì đã làm ra và chia sẻ

  • Tôi chỉ giải được khoảng một nửa, nhưng trong quá trình đó cũng học được vài thứ. JavaScript có không chỉ những trường hợp biên kỳ quặc mà còn cả di sản tồn đọng lâu năm
    Những manh mối dài quá mở nên rất khó để bắt đầu. Tôi thích 1-down và 33-down
    Dù sao đây vẫn là một tác phẩm rất ấn tượng

  • Trời ơi, cái này khó quá :)

  • Những trang web chặn hoặc can thiệp vào nút quay lại của trình duyệt nên bị đánh dấu là spam

    • Sửa: Đã sửa. Hóa ra một số trình duyệt xem việc gán iframe.src là một lần điều hướng