(Đây là một biến thể trong In một phủ định mã của bạn , điều mà tôi rất thích! Cảm ơn Martin Büttner ♦ - gần như tất cả văn bản này là của anh ấy.)
Chúng ta hãy xem các ký hiệu là các ký tự ASCII có thể in sau đây (lưu ý rằng không gian được bao gồm):
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
Và các chữ số là:
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Hãy xem xét một hình vuông các ký tự ASCII có thể in được cho chiều dài N, như sau:
ONE,
{two}
&3,+=
!four
f|ve.
Chúng tôi cũng yêu cầu mỗi hàng và mỗi cột phải chứa ít nhất một ký hiệu và một chữ số. (Ví dụ trên thỏa mãn điều này.)
Chúng tôi định nghĩa phủ định biểu tượng của một hình vuông như vậy là một hình vuông có cùng kích thước trong đó mỗi biểu tượng được thay thế bằng một chữ số và ngược lại. Ví dụ: dưới đây sẽ là một phủ định biểu tượng hợp lệ của ví dụ trên:
[&]OK
a...b
1/100
i@#$%
(R) z
Việc lựa chọn các ký tự cụ thể là không liên quan miễn là chúng nằm trong danh mục trên.
Các thách thức
Nhiệm vụ của bạn là viết một chương trình có mã nguồn vuông có độ dài cạnh N> 1, in một âm bản tượng trưng của mã nguồn của nó sang STDOUT. Không gian lưu trữ phải được in. Bạn có thể hoặc không thể in một dòng mới.
Các quy tắc quine thông thường cũng được áp dụng, vì vậy bạn không được đọc mã nguồn của riêng mình, trực tiếp hoặc gián tiếp. Tương tự, bạn không được giả sử môi trường REPL sẽ tự động in giá trị của từng biểu thức đã nhập.
Người chiến thắng là chương trình có độ dài cạnh thấp nhất N. Trong trường hợp hòa, bài nộp có ít ký hiệu nhất trong mã nguồn sẽ thắng. Nếu vẫn còn hòa, câu trả lời sớm nhất sẽ thắng.