Aceto , 19 17 byte không cạnh tranh
Phiên bản mới (17 byte):
Phiên bản mới này lấy từng ký tự một và được thực hiện tốt nhất với -F
tùy chọn. Nó hoạt động tương tự, nhưng không giống với giải pháp trước đó:
>,
Op0
p|1u
,ip^
Câu trả lời cũ (19 byte):
(Không cạnh tranh vì tôi phải sửa hai lỗi trong trình thông dịch)
|p1u
iOp<
|!`X
rd!r
Đây là câu trả lời Aceto đầu tiên nêu bật những gì nó có thể làm tương đối tốt, tôi muốn nói. "Danh sách" là các luồng đầu vào, với một đầu vào trên mỗi dòng, "1" cho đúng và "0" cho sai, với một chuỗi trống biểu thị phần cuối của danh sách.
Các chương trình Aceto chạy trên đường cong Hilbert, bắt đầu ở phía dưới bên trái và kết thúc ở phía dưới bên phải. Đầu tiên, chúng ta đọc r
một chuỗi d
, tăng và phủ định (!
) nó, biến các chuỗi rỗng thành True, mọi thứ khác thành Sai. Sau đó, có một gương ngang có điều kiện ( |
): Nếu phần tử trên cùng của ngăn xếp là trung thực, hãy nhân bản theo chiều ngang. Điều này xảy ra khi chuỗi rỗng. Nếu chúng ta phản chiếu, chúng ta sẽ hạ cánh X
, cái đó giết chết người phiên dịch.
i
Mặt khác, chúng tôi chuyển đổi bản sao còn lại trên ngăn xếp thành nteger và thực hiện một gương ngang có điều kiện khác: Lần này, vì 1 là trung thực và 0 là giả, chúng tôi phản chiếu nếu chúng ta thấy giá trị thật (đầu tiên). Nếu chúng ta không phản chiếu (vì vậy chúng ta đã thấy 0), chúng tap
xé những gì trên ngăn xếp (vì ngăn xếp trống, không) và nhảy đến O
đường cong gốc, nơi chúng ta bắt đầu, bắt đầu lại toàn bộ quá trình.
Mặt khác, khi chúng ta nhìn thấy 1, chúng ta phản chiếu và hạ cánh trên u
, đảo ngược hướng chúng ta di chuyển trên đường cong Hilbert. 1p
in 1 và bây giờ chúng ta sẽ tiếp tục như vậy O
nếu chúng ta đã thấy 0, nhưng vì chúng ta đang ở "chế độ đảo ngược", nguồn gốc của chúng ta ở phía dưới bên phải , vì vậy chúng ta nhảy đến đó.
Bây giờ chúng tôi đọc r
một chuỗi khác, và phủ nhận nó. Nếu chuỗi trống và do đó, phần tử ngăn xếp trên cùng là trung thực, `
sẽ không thoát lệnh tiếp theo ( X
), khiến chúng ta thoát.
Nếu không (nếu chuỗi không có sản phẩm nào), chúng tôi làm thoát khỏi X
và bỏ qua nó. Trong trường hợp đó, chúng ta đi sang trái ( <
), p
rint 0 (vì ngăn xếp trống) và nhảy trở lại O
rigin.