Thông thường, các đa âm được xây dựng theo cách mà mỗi ngôn ngữ có thể bỏ qua các phần của mã hiện diện cho các ngôn ngữ khác, bằng cách gói chúng trong chuỗi ký tự, sử dụng cú pháp nhận xét hoặc các thủ thuật tương tự khác.
Mục tiêu của bạn là viết một polyglot trong đó đầu ra cho mỗi ngôn ngữ là mã từ polyglot tạo ra đầu ra đó. Cụ thể, đầu ra phải được xây dựng từ mã polyglot chỉ với việc xóa và nó phải là một quine trong ngôn ngữ đã cho.
Quy tắc
- Chỉ cho phép các quines thích hợp (không đọc mã nguồn, không lấy đầu vào, đầu ra phải ở STDOUT hoặc thay thế gần nhất nếu STDOUT không phải là một tùy chọn và các chương trình phải bao gồm nhiều hơn chỉ là chữ được in ngầm).
- Vì các ngôn ngữ khác nhau có thể sử dụng các bảng mã khác nhau, các byte thô là vấn đề quan trọng ở đây. Ví dụ: nếu ngôn ngữ A sử dụng UTF-8 và ngôn ngữ B sử dụng CP437, mã (hex)
C3 88 46 47
sẽÈFG
dành cho ngôn ngữ A và├êFG
ngôn ngữ B. - Tất cả các đầu ra phải khác biệt (một lần nữa, so sánh các byte thô). Điều này tránh sự phức tạp khi cố gắng hạn chế các phiên bản ngôn ngữ nhỏ - nếu hai ngôn ngữ sử dụng cùng một phần mã để làm điều tương tự, bạn không thể yêu cầu cả hai.
- Nếu bạn có hai ngôn ngữ A và B
XY
là đầu ra hợp lệ ở cả hai, nhưngYZ
cũng hợp lệ trong B, bạn có thể chọnXY
làm đầu ra cho A vàYZ
làm đầu ra cho B, vì vậy bạn có thể yêu cầu cả hai ngôn ngữ đó trong điểm của mình ( nhưng bạn không thể yêu cầuXY
cả hai ngôn ngữ vì quy tắc trên).
- Nếu bạn có hai ngôn ngữ A và B
- Tất cả các đầu ra phải càng ngắn càng tốt. Ví dụ: nếu mã của bạn là
print('foo')#something
, đối với Python 3 (bỏ qua thực tế là đầu ra không đúng), mã bạn cần xuất sẽ làprint('foo')
, vàprint('foo')#
sẽ không được phép. Nếu có nhiều chuỗi có độ dài bằng nhau (tối thiểu) tạo ra đầu ra chính xác, bạn có thể chọn bất kỳ chuỗi nào trong số chúng. - Đệ trình phải là đa âm trong ít nhất 2 ngôn ngữ.
- Điểm của bạn sẽ được đưa ra bởi
(number of programming languages with distinct outputs)**3/(total byte size of polyglot)
. Điểm cao nhất sẽ thắng. Trong trường hợp hai bài nộp đạt được cùng số điểm, bài nộp đạt được điểm đó trước sẽ giành chiến thắng.