Một metaquine là một chương trình không phải là một quine, nhưng đầu ra của nó, khi được chạy như một chương trình trong cùng một ngôn ngữ, là một quine.
Mục tiêu của thử thách này là viết một metaquine. Đây là môn đánh gôn , vì vậy, đoạn mã ngắn nhất sẽ thắng, với câu trả lời sớm nhất được sử dụng như một bộ bẻ khóa. Lưu ý rằng chỉ có các chương trình đầy đủ mới được chấp nhận, do định nghĩa của một quine.
Quy tắc cho Quines
Chỉ có quines thực sự được chấp nhận. Đó là, bạn cần in toàn bộ mã nguồn nguyên văn sang STDOUT, không có :
- đọc mã nguồn của bạn, trực tiếp hoặc gián tiếp.
- dựa vào môi trường REPL chỉ đơn giản là đánh giá và in mọi biểu thức bạn cung cấp cho nó.
- dựa vào các tính năng ngôn ngữ chỉ in ra nguồn trong một số trường hợp nhất định.
- sử dụng thông báo lỗi hoặc STDERR để viết tất cả hoặc một phần của quine. (Bạn có thể viết mọi thứ cho STDERR hoặc đưa ra các cảnh báo / lỗi không nghiêm trọng miễn là STDOUT là một câu hỏi hợp lệ và các thông báo lỗi không phải là một phần của nó.)
- mã nguồn bao gồm hoàn toàn bằng chữ (cho dù chúng là chuỗi ký tự, chữ số, v.v.) và / hoặc NOP.
Bất kỳ đầu ra không thể ngăn chặn nào (như thông báo bản quyền, thông báo khởi động / tắt máy hoặc nguồn cấp dữ liệu theo dõi) có thể bị bỏ qua trong đầu ra vì tính hợp lệ của quine.
Thí dụ
Bỏ qua quy tắc cấm các chương trình chỉ có nghĩa đen và câu hỏi tích hợp sẵn, đây sẽ là một metaquine trong Nghiêm túc:
"Q"
Chương trình bao gồm một chuỗi ký tự đơn "Q"
, được in ngầm ở đầu ra. Khi đầu ra ( Q
) được chạy, nó là một quine ( Q
là hàm quine tích hợp).
T
là một câu trả lời Pyth 1 byte dễ dàng.