> <> , 56 byte
^
.
+
8
f
0
o
a
o
~
:
?
~
:
?
:
-
*
4
8
:
^
^
}
*
3
d
'
Hãy thử trực tuyến! hoặc xác minh tất cả các đột biến .
Chương trình gốc hoạt động như thế nào (lỗi thời)
Trình thông dịch bắt đầu trong ô (0, 0) . ^
đặt hướng lên trên , để con trỏ lệnh (IP) bao quanh ô (0, 20) .
'
kích hoạt chế độ chuỗi: cho đến khi '
gặp lần tiếp theo , tất cả các ký tự dưới IP được đẩy trên ngăn xếp. Điều tương tự '
được tìm thấy một lần nữa sau khi quấn quanh, vì vậy chúng tôi đẩy
d3*}^^:84*=?~oao0f.^
IP hạ cánh tại (0, 19) , vẫn tiếp tục đi lên. Thực hiện d3*}
đẩy 13 = 0xd , sau đó 3 , nhân cả hai giá trị ( 39 / trích dẫn đơn ), sau đó xoay ngăn xếp sang phải. Điều này rời khỏi ngăn xếp như sau.
'd3*}^^:84*=?~oao0f.^
Hai hướng dẫn tiếp theo ( ^
) không làm gì vào thời điểm này.
:84*=
nhân đôi đỉnh của ngăn xếp, đẩy 8 và 4 , nhân chúng ( 32 / dấu cách ), sau đó kiểm tra ký tự trùng lặp để tìm sự bằng nhau với không gian . Đối với chương trình không thay đổi, điều này sẽ luôn đẩy 0 .
?
bỏ qua hướng dẫn tiếp theo nếu đỉnh của ngăn xếp bị sai lệch. Đối với chương trình ban đầu, nó luôn luôn như vậy, vì vậy ~
luôn luôn bị bỏ qua.
oao
bật và in phần trên cùng của ngăn xếp, đẩy 10 / linefeed , sau đó bật và in linefeed .
Cuối cùng 0f.
nhảy đến ô (0, 15) (điểm cuối ^
), bắt đầu lại với ký tự tiếp theo trên ngăn xếp.
Khi ngăn xếp trống, toàn bộ mã nguồn đã được in. :
sẽ thất bại và chương trình thoát.
Làm thế nào các chương trình đột biến hoạt động (lỗi thời)
Sao chép bất kỳ ký tự không phải dòng nào sẽ chỉ mở rộng chương trình theo chiều ngang. Vì chương trình được thực thi theo chiều dọc, các hướng dẫn bổ sung này sẽ không bao giờ được thực thi.
Sao chép bất kỳ nguồn cấp dữ liệu nào trước dòng dưới cùng ^
sẽ chuyển các ô (0, 14) và (0, 15) thành (0, 15) và (0, 16) . 0f.
Bây giờ sẽ nhảy đến ô trước điểm cuối ^
, cũng là một ^
, vì vậy chương trình không bị ảnh hưởng bởi sự thay đổi.
Cuối cùng, bất kỳ ký tự linefeed trùng lặp cũng sẽ thay đổi chuỗi. Dòng ngắn được độn với không gian, do đó, một 32 / không gian sẽ được chèn vào vị trí của linefeed. 84*=
sẽ đẩy 1 cho không gian, vì vậy ?
đừng bỏ qua hướng dẫn tiếp theo. Trong trường hợp này, ~
bật và loại bỏ không gian , vì vậy phần sau o
sẽ in ký tự bên trên không gian thay thế.
0
và00
trong CJam cả hai đầu ra0
.