Mục đích của thử thách này là viết một chương trình thỏa mãn các điều kiện sau:
Chương trình này không phải là palindromic, hoặc về cơ bản là palindromic (có nghĩa là có thể loại bỏ các ký tự để biến nó thành một palindrom mà không thay đổi các hiệu ứng của chương trình).
Chương trình không phải là một sự kết hợp (có nghĩa là nó không tạo ra đầu vào ban đầu của nó khi chạy trên đầu ra của nó)
Các phân cực ngược chương trình là nghịch đảo của chương trình bình thường; vì vậy khi chương trình đảo ngược được chạy trên đầu ra của chương trình bình thường, nó sẽ trả về đầu vào ban đầu.
Không đảo ngược có nghĩa là gì? Vâng, nó khác nhau giữa các ngôn ngữ.
- Đối với hầu hết các phi esolang, điều này có nghĩa là đảo ngược thứ tự của các hoạt động phụ trong một hoạt động, đảo ngược thứ tự của các đối số và đảo ngược nội dung của các danh sách / mảng / tuples / từ điển / ngăn xếp / hàng đợi / v.v. như đảo ngược thứ tự các khối mã và các dòng độc lập (nhưng không phải các dòng trong các khối)
Ví dụ:
Haskell :
x`mod`y
-> y`mod`x
; zipWith ((*3).(+)) [1,2,3] [4,5,6]
->zipWith ((+).(*3)) [6,5,4] [3,2,1]
Con trăn : 2**3
-> 3**2
; for x,y in [(1,2),(3,4),(5,6)]
->for y,x in [(6,5),(4,3),(2,1)]
Đối với các ngôn ngữ có chức năng 1 ký tự (như Pyth, APL), chỉ cần đảo ngược chuỗi hướng dẫn
Đối với các esolang 1 chiều như BF, đảo ngược các hướng dẫn hoặc hoán đổi cực tính; hoán đổi phân cực là
[]
->{}
,+
->-
,-
->+
,>
-><
,<
->>
,.
->,
và,
->.
(nhưng không phải cả hai)Đối với các esolang 2 chiều như Befunge, bạn có thể thực hiện phản xạ trên các trục x hoặc y hoặc đường chéo, xoay 180 độ hoặc thực hiện kết hợp phản xạ và xoay
Các hoạt động giao hoán được cho phép, nhưng các hoạt động palindromic thì không: 2*x
tốt, nhưng x+x
là xấu. Định nghĩa về đảo cực là khá lỏng lẻo, nhưng hãy sử dụng phán đoán của bạn để biết điều gì có ý nghĩa; đối tượng không phải là tìm kẽ hở thông minh nhất, mà là tìm ra giải pháp thông minh nhất.
Đây là một cuộc thi phổ biến, vì vậy một lỗ hổng rất thông minh có thể phổ biến, nhưng hãy cố gắng giữ vững tinh thần của thử thách này. Người chiến thắng sẽ được công bố khi có ít nhất 10 giải pháp với ít nhất 1 upvote và có ít nhất một giải pháp có nhiều upvote hơn so với các bài nộp với ít nhất 1 upvote; hoặc trong 1 tháng, tùy theo điều kiện nào đến trước. Đây là thử thách đầu tiên của tôi, vì vậy hãy cố gắng công bằng và cho tôi phản hồi mang tính xây dựng, nhưng cũng cho tôi biết nếu đây là một thử thách không hợp lý hoặc nó theo bất kỳ cách nào bị phân loại hoặc mơ hồ. Nếu bạn có câu hỏi về một ngôn ngữ không phù hợp với bất kỳ chuồng lợn nào tôi đã đặt ra ở đây, hãy bình luận và tôi sẽ uốn éo theo ý muốn của cộng đồng nếu có sự phản đối mạnh mẽ đối với việc làm rõ hoặc thay đổi quy tắc cụ thể.
CẬP NHẬT
Đã đúng 1 tháng kể từ khi cuộc thi này bắt đầu (tôi tình cờ kiểm tra nó một cách tình cờ, không biết rằng tôi đã thực sự đúng giờ). Vì đây là một cuộc thi phổ biến, người chiến thắng (bởi một trận lở đất) là Pietu1998-Befunge . Mặc dù các thành phần dưới cùng (bộ đảo ngược văn bản và bảng chữ cái ngược) đều là các tham gia, nhưng bộ mã hóa / giải mã thì không, vì vậy không có vấn đề gì ở đó. Điểm thưởng (trong tâm trí của tôi) để quản lý để viết "BEFUNGE" ở giữa. Cá nhân tôi thích sự mới lạ của giải pháp Theseus của Zgarb , vì ngôn ngữ có vẻ hay (nếu bị hạn chế). Cảm ơn tất cả mọi người đã tham gia, và trong khi người chiến thắng đã được chọn, tôi sẽ để cuộc thi này hoàn toàn mở và chào đón những bài dự thi trong tương lai.
()
palindromic? Về mặt kỹ thuật, điều ngược lại là )(
.