Piet, 188 53 46 41 byte
5bpjhbttttfttatraaearfjearoaearbcatsdcclq
Thông dịch viên trực tuyến có sẵn ở đây.
Mã piet này làm tiêu chuẩn (n>0)-(n<0)
, vì không có dấu kiểm tra dựng sẵn. Trong thực tế, không có ít hơn so với nội dung, vì vậy một mô tả chính xác hơn về phương pháp này sẽ là (n>0)-(0>n)
.
Các văn bản trên đại diện cho hình ảnh. Bạn có thể tạo hình ảnh bằng cách dán nó vào hộp văn bản trên trang thông dịch. Để thuận tiện, tôi đã cung cấp hình ảnh bên dưới với kích thước codel là 31 pixel. Lưới ở đó để dễ đọc và không phải là một phần của chương trình. Cũng lưu ý rằng chương trình này không vượt qua bất kỳ codel trắng nào; theo các bảng mã màu xung quanh viền của hình ảnh để theo dòng chương trình.
Giải trình
Instruction Δ Hue Δ Lightness Stack
------------ ----- ----------- --------------------
In (Number) 4 2 n
Duplicate 4 0 n, n
Push [1] 0 1 1, n, n
Duplicate 4 0 1, 1, in, in
Subtract 1 1 0, in, in
Duplicate 4 0 0, 0, in, in
Push [4] 0 1 4, 0, 0, in, in
Push [1] 0 1 1, 4, 0, 0, in, in
Roll 4 1 0, in, in, 0
Greater 3 0 greater, in, 0
Push [3] 0 1 3, greater, in, 0
Push [1] 0 1 1, 3, greater, in, 0
Roll 4 1 in, 0, greater
Greater 3 0 less, greater
Subtract 1 1 sign
Out (Number) 5 1 [Empty]
[Exit] [N/A] [N/A] [Empty]
Để giảm kích thước tệp hơn nữa, tôi thực sự cần phải thay đổi chương trình (gasp) thay vì chỉ nén tệp như tôi đã làm. Tôi muốn xóa một hàng có thể đánh xuống 36. Tôi cũng có thể phát triển trình thông dịch riêng có định dạng đầu vào nhỏ hơn nhiều, vì thực sự thay đổi mã để làm cho nó nhỏ hơn không phải là mã golf.
Các mod nói với tôi rằng kích thước tập tin tổng thể là những gì được tính cho mã Piet. Vì trình thông dịch chấp nhận văn bản là đầu vào hợp lệ và văn bản thô có số byte nhỏ hơn nhiều so với bất kỳ hình ảnh nào, văn bản là lựa chọn rõ ràng. Tôi xin lỗi vì táo tợn về điều này nhưng tôi không đưa ra các quy tắc. Các cuộc thảo luận về điều này làm cho ý kiến của tôi về vấn đề này rõ ràng.
Nếu bạn nghĩ rằng điều đó đi ngược lại với tinh thần của Piet hoặc muốn thảo luận thêm về điều này vì bất kỳ lý do gì, vui lòng xem cuộc thảo luận về meta .