Con rắn (ngôn ngữ) của bạn dài bao nhiêu?


14

Tiếp theo từ thử thách đặt hàng thứ ba , nhiệm vụ của bạn là viết một chương trình Ouroboros sử dụng càng nhiều ngôn ngữ càng tốt.

Nghĩa là, trong ngôn ngữ A, hãy viết chương trình pA tạo ra chương trình pB bằng ngôn ngữ B. Chương trình pB sẽ xuất chương trình pC bằng ngôn ngữ C, và cứ như vậy cho đến khi cuối cùng một chương trình xuất ra chương trình pA gốc bằng ngôn ngữ A.

Không có hai ngôn ngữ trong vòng lặp của bạn có thể giống nhau hoặc tập hợp con hoặc siêu bộ của nhau. Không có chương trình nào trong vòng lặp có thể giống hệt nhau.

Chuỗi ngôn ngữ dài nhất giành chiến thắng. Độ dài của mã nguồn sẽ là bộ ngắt kết nối.

Dưới đây là một giải pháp ví dụ về độ dài 3 được đưa ra bởi Ventero.

s='print q<puts %%q{s=%r;print s%%s}>';print s%s

với Python tạo đoạn mã Perl này

print q<puts %q{s='print q<puts %%q{s=%r;print s%%s}>';print s%s}>

tạo mã Ruby sau

puts %q{s='print q<puts %%q{s=%r;print s%%s}>';print s%s}

sau đó in đoạn mã Python gốc:

s='print q<puts %%q{s=%r;print s%%s}>';print s%s



@Ypnypn Đó không phải là bản sao của nó phải không? Ý tôi là điều này là làm cho vòng lặp càng dài càng tốt với một bộ ngắt kết nối độ dài mã nguồn. Không ai từng có cơ hội đăng một đoạn dài 4 Ourobious trước đó :) Ngoài ra một vòng lặp khác với một chuỗi.

Nó thực sự rất giống với cái này , nhưng nó không yêu cầu trình tự lặp lại, vì vậy không có thành phần quine.
Martin Ender

4
Con thú 50 ngôn ngữ dường như là một người chiến thắng trước khi chúng tôi bắt đầu.

Câu trả lời:


8

Đây là một vòng lặp gồm 4 ngôn ngữ:

C -> Bash -> Batch -> Python -> C

C

main(){char *c="echo %cecho print %cmain(){char *c=%c%c%s%c%c;printf(c,34,39,92,34,c,92,34,39,34);}%c%c";printf(c,34,39,92,34,c,92,34,39,34);}

Bash

echo "echo print 'main(){char *c=\"echo %cecho print %cmain(){char *c=%c%c%s%c%c;printf(c,34,39,92,34,c,92,34,39,34);}%c%c\";printf(c,34,39,92,34,c,92,34,39,34);}'"

Lô hàng

echo print 'main(){char *c="echo %cecho print %cmain(){char *c=%c%c%s%c%c;printf(c,34,39,92,34,c,92,34,39,34);}%c%c";printf(c,34,39,92,34,c,92,34,39,34);}'

Con trăn

print 'main(){char *c="echo %cecho print %cmain(){char *c=%c%c%s%c%c;printf(c,34,39,92,34,c,92,34,39,34);}%c%c";printf(c,34,39,92,34,c,92,34,39,34);}'

Rất ấn tượng!
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.