Chúng ta hãy lấy một lưới gồm 16 ký tự ASCII có thể in 16x16 (mã điểm 0x20 đến 0x7E). Có 30 đường dẫn chọn 15 từ góc trên bên trái đến góc dưới bên phải, chỉ thực hiện các bước di chuyển trực giao, như ví dụ sau:
##..............
.#..............
.######.........
......##........
.......##.......
........#.......
........#.......
........#.......
........###.....
..........###...
............#...
............####
...............#
...............#
...............#
Mỗi đường dẫn như vậy bao gồm chính xác 31 ký tự. Lưu ý rằng mỗi ký tự đó nằm trên một trong số 31 đường chéo khác nhau:
0123456789ABCDEF
123456789ABCDEFG
23456789ABCDEFGH
3456789ABCDEFGHI
456789ABCDEFGHIJ
56789ABCDEFGHIJK
6789ABCDEFGHIJKL
789ABCDEFGHIJKLM
89ABCDEFGHIJKLMN
9ABCDEFGHIJKLMNO
ABCDEFGHIJKLMNOP
BCDEFGHIJKLMNOPQ
CDEFGHIJKLMNOPQR
DEFGHIJKLMNOPQRS
EFGHIJKLMNOPQRST
FGHIJKLMNOPQRSTU
Đây không phải là một lưới ví dụ. Đây là một hình ảnh của 31 đường chéo.
Chúng ta sẽ gọi một lưới theo đường chéo duy nhất nếu không có đường chéo nào chứa cùng một ký tự hai lần. Nếu lưới có thuộc tính này, không có hai đường dẫn sẽ chứa cùng một chuỗi. (Chỉ cần làm rõ, bản thân hình dung về cơ bản là đối lập với đường chéo độc đáo.)
Các thách thức
Thiết kế lưới 16x16 độc đáo theo đường chéo, sao cho càng nhiều đường dẫn càng tốt là mã hợp lệ in Jabberwocky
ra STDOUT (với ngắt dòng tùy chọn) bằng càng nhiều ngôn ngữ càng tốt. Mỗi mã có thể là một chương trình đầy đủ hoặc phần thân của hàm không tham số mà không có câu lệnh return (điều này là để không làm nản lòng các ngôn ngữ cần có mã của chúng trong một số hàm / lớp / không gian tên).
Lưu ý: Để đơn giản, bạn có thể sử dụng một số ký tự dành riêng cho các ô không sử dụng như Ypnypn đã làm.
Đối với mỗi đường dẫn hợp lệ, vui lòng nêu rõ một ngôn ngữ lập trình mà nó hợp lệ.
Người chiến thắng là bài nộp với số lượng ngôn ngữ lớn nhất được liệt kê trong danh sách trên. (Ngoài ra, đối với mỗi ngôn ngữ bạn muốn đếm, hãy hiển thị một đường dẫn hợp lệ trong ngôn ngữ đó, nhưng đảm bảo không đếm bất kỳ đường dẫn nào cho hai ngôn ngữ.)
Trong trường hợp hòa, đếm các ô lưới không được bao phủ bởi bất kỳ đường dẫn hợp lệ nào. Ít tế bào không sử dụng chiến thắng. Nếu vẫn còn một sự ràng buộc, tôi sẽ chấp nhận câu trả lời với số phiếu (mạng) nhiều nhất.
Tập lệnh xác nhận
Tôi chỉ nhanh chóng kết hợp một đoạn nhỏ của CJam mà bạn có thể sử dụng để xác thực rằng một lưới là duy nhất theo đường chéo.
- Chuyển đến trình thông dịch trực tuyến của CJam .
Dán đoạn mã sau
l:A; qN/W%A16**33/z{A-__|=}%:*"D""Not d"?"iagonally unique"
Trong trường đầu vào, đặt ký tự dành riêng của bạn lên dòng đầu tiên (sử dụng ký tự không được sử dụng nếu bạn không khởi kiện ký tự dành riêng), rồi lưới của bạn ở dòng 2 đến 17. Ví dụ: cho câu trả lời của Ypnypn:
~ pr~~~~~~~~~~~~~ tin~~~~~~~~~~~~ ~ypt(~~~~~~~~~~~ ~~ef(~~~~~~~~~~~ ~~ "J~~~~~~~~~~ ~~~~~ab~~~~~~~~~ ~~~~~~be~~~~~~~~ ~~~~~~~rwo~~~~~~ ~~~~~~~~~ck~~~~~ ~~~~~~~~~~y~~~~~ ~~~~~~~~~~\n~~~~ ~~~~~~~~~~~")) ~ ~~~~~~~~~~~ ; ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
Chạy.
Hãy cho tôi biết nếu bạn nghĩ rằng nó có một lỗi.