Thử thách này tương tự như bạn có thể Meta Quine không?
Một quine là một chương trình tự sản xuất trên STDOUT. Thử thách này là tạo ra một chương trình A mà khi chạy sẽ tạo ra một chương trình B trên STDOUT. Chương trình B khi chạy tạo chương trình A trên STDOUT. Chương trình A và B phải được viết bằng (và chạy) cùng một ngôn ngữ. Câu hỏi được liên kết ràng buộc A! = B. Điều đó có vẻ quá dễ dàng. Vì vậy, đối với câu hỏi này, chúng tôi khẳng định A và B là các cổ vật, sử dụng các quy tắc sau:
- Chương trình A và B không được sử dụng bất kỳ ký tự nào giống nhau, lưu cho khoảng trắng và dấu phân cách câu lệnh và ký tự dấu chấm câu.
- Mỗi chương trình A và B phải chứa ít nhất một ký tự không phải là khoảng trắng cũng như dấu phân cách câu lệnh, cũng không phải là ký tự dấu chấm câu.
- Đối với mục đích của quy tắc 1 và 2, thuật ngữ 'khoảng trắng' không bao gồm bất kỳ ký hiệu hoặc chuỗi ký hiệu nào mà chính nó là một câu lệnh, toán tử hoặc ký hiệu được giải thích (trái ngược với dấu phân cách). Do đó, trong ngôn ngữ Whitespace, không có khoảng trắng.
- Dấu phân cách câu lệnh là một thành phần cú pháp thường được sử dụng trong ngôn ngữ để phân tách các câu lệnh. Điều này sẽ bao gồm dòng mới trong python hoặc dấu chấm phẩy trong Java, perl hoặc C.
- Ký tự dấu chấm câu là ký tự ASCII không phải là khoảng trắng cũng như trong lớp ký tự từ POSIX (nghĩa là dấu gạch dưới không phải là dấu chấm câu cho mục đích này) - tức là
ispunct()
sẽ trả về đúng, và không phải vậy_
. - Chương trình A khi chạy phải tạo chương trình (Chương trình B) trên STDOUT của nó, khi chạy lần lượt sẽ tạo Chương trình A.
- Chương trình A và B phải cùng ngôn ngữ lập trình.
- Ngôn ngữ lập trình được sử dụng phải thực sự là ngôn ngữ lập trình. Trừ khi bạn làm một trường hợp tốt nếu không, tôi sẽ đề nghị nó phải hoàn thành Turing.
- Ít nhất một trong số A và B phải thực hiện ít nhất một câu trong ngôn ngữ.
Đây là mã golf, vì vậy câu trả lời ngắn nhất sẽ thắng, điểm số là độ dài của chương trình A tính bằng byte (tức là độ dài của chương trình B không liên quan).
A
và a
được coi là "nhân vật" khác nhau?