Lấy cảm hứng từ Hyperprogramming: N + N, N × N, N ^ N tất cả trong một .
Cảm ơn @MartinEnder và @trichoplax vì sự giúp đỡ của họ trong hộp cát.
Định nghĩa
Hyperquines
Xác định một hyperquine của thứ tự n là một chương trình đầy đủ giống như quine hoặc hàm P thỏa mãn tất cả các quy tắc áp dụng cho các quines thích hợp và, ngoài ra, có cấu trúc như sau.
P là nối của nhân vật ‡ nhóm gồm n bản sao của cùng một ký tự. Khi P được thực thi, đầu ra là sự kết hợp của các nhóm giống nhau, được tăng thêm một bản sao của ký tự.
Ví dụ
Trong một ngôn ngữ lập trình giả thuyết nơi mã nguồn
aabbcc
tạo ra đầu raaaabbbccc
, chương trình này tạo thành một siêu dữ liệu bậc 2 .Định nghĩa không yêu cầu các ký tự của các nhóm khác nhau phải khác nhau.
Nếu mã nguồn
aabbcc
tạo ra đầu raaaaabbbbcccc
, chương trình là một siêu dữ liệu của đơn hàng 1 ; mã nguồn bao gồm sáu nhóm ký tự đơn, đầu ra của sáu cặp ký tự.Trong GS2 , chương trình trống in
\n
và chương trình\n
in\n\n
. Tuy nhiên, không phải\n
cũng không phải\n\n
là hyperquines, vì chúng không thỏa mãn tất cả các thuộc tính của các quines thích hợp ; không có phần nào của mã nguồn mã hóa một phần khác của đầu ra.
Chuỗi hyperquine
Xác định một chuỗi hyperquine có độ dài n là một chuỗi hữu hạn của n chương trình đầy đủ hoặc n hàm
(P 1 , Vượt , P n ) thỏa mãn các ràng buộc sau.
Đầu ra của P 1 , Lọ, P n-1 lần lượt là P 2 , Rò, P n .
P 1 , Lọ , P n là các siêu dữ liệu.
Các đơn hàng của P 1 , tầm, P n tạo thành một chuỗi số nguyên liền kề tăng nghiêm ngặt .
Cuối cùng, định nghĩa một chuỗi hyperquine vô hạn là một chuỗi vô hạn của các chương trình hoặc hàm đầy đủ (P 1 , P 2 , CÁCH ) sao cho mỗi khoảng thời gian ban đầu (P 1 , một, P n ) tạo thành một chuỗi hyperquine có độ dài n .
Ví dụ
Trong ngôn ngữ lập trình giả thuyết, nơi mã nguồn
aabbcc
tạo ra đầu raaaabbbccc
, do đó, tạo ra đầu raaaaabbbbcccc
, cặp (aabbcc
,aaabbbccc
) tạo thành một chuỗi siêu liên kết có độ dài 2 .Lưu ý rằng
aaaabbbbcccc
- đầu ra của hyperquine cuối cùng trong chuỗi - không phải tạo ra một đầu ra cụ thể; nó thậm chí không phải là mã nguồn hợp lệ.Tiếp tục ví dụ trước, nếu
aaaabbbbcccc
phát sinh đầu raaaaaabbbbbccccc
, bộ ba (aabbcc
,aaabbbccc
,aaaabbbbcccc
) tạo thành một chuỗi hyperquine có độ dài 3 .Nếu mô hình này tiếp tục mãi mãi, trình tự (
aabbcc
,aaabbbccc
,aaaabbbbcccc
, ...) tạo thành một chuỗi hyperquine vô hạn.Cặp chương trình (
abc
,aabbcc
) có đầu ra (aabbcc
,aaaabbbbcccc
) không phải là một chuỗi hyperquine, vì các lệnh của hyperquines đều là 1 , vì vậy chúng không tạo thành một chuỗi tăng nghiêm ngặt.Cặp chương trình (
aabbcc
,aaaabbbbcccc
) có đầu ra (aaaabbbbcccc
,aaaaabbbbbccccc
) không phải là chuỗi hyperquine, vì thứ tự của hyperquines là 1 và 4 , vì vậy chúng không tạo thành một chuỗi các số nguyên liền kề.
Quy tắc
Bài tập
Trong ngôn ngữ lập trình mà bạn chọn, hãy viết một chuỗi hyperquine không tầm thường, tức là một chuỗi bao gồm ít nhất 2 hyperquine.
Như thường lệ, các chương trình của bạn có thể không nhận bất kỳ đầu vào hoặc truy cập mã nguồn riêng của họ dưới bất kỳ hình thức nào.
Nếu trình thông dịch của bạn in một dòng mới ẩn, các siêu dữ liệu của bạn phải tính đến điều này.
Tất cả các sơ hở tiêu chuẩn - đặc biệt là những liên quan đến quines - áp dụng.
Chấm điểm
Chuỗi hyperquine dài nhất chiến thắng. Nếu hai hoặc nhiều bài nộp được ràng buộc, bài nộp trong số này bắt đầu bằng hyperquine ngắn nhất (tính bằng ký tự ‡ ) sẽ thắng. Như thường lệ, thời gian đăng bài là bản bẻ khóa cuối cùng.
‡ Bạn phải sử dụng mã hóa ký tự tương tự cho mã nguồn, đầu ra, số ký tự, và thực hiện. Ví dụ, chương trình Python không phảiprint 42
là đệ trình UTF-32 gồm 2 ký tự, vì trình thông dịch coi mỗi byte là một ký tự đơn. Nếu ngôn ngữ bạn chọn không dựa trên ký tự, hãy coi tất cả các byte riêng lẻ là ký tự.