|>I|
Hãy thử trực tuyến!
Hãy thử nó đảo ngược!
Điều này hoạt động cho bất kỳ đầu vào không chứa byte rỗng.
Giải trình
Ồ, tôi đã đạt đến điểm mà tôi viết chúng bằng tay ...
Chương trình đầy đủ là |>I|I<|
.
| Reverse the entire stack down to the EOF marker -1 (since there are no zeros in the input).
> Move one stack over to the right (which only contains zeros).
I Does nothing on zero.
| Does nothing on zero.
I Does nothing on zero.
< Move back to the initial stack.
| Reverse the input once more.
Như trong giải pháp cho thử thách trước, vì lệnh trung tâm |
không làm gì cả, toàn bộ chương trình cũng vậy.
Các chương trình đảo ngược là sau đó |I>|<I|
.
| Reverse the entire stack down to the EOF marker -1 (since there are no zeros in the input).
I Move the -1 one stack to the left and turn it into a +1.
> Move back to the initial stack.
| Reverse it again, but this time without the EOF marker.
< Move back to the left.
I Move the +1 back onto the initial stack and turn it into a -1 again.
| Reverse the entire stack. We now have the -1 as an EOF marker again at the bottom
and the rest of the stack has been reversed three times, i.e. one net reversal.
Thật thú vị, nếu chúng ta sử dụng chương trình đảo ngược này mà không -m
có giải pháp hoạt động lần này, do đó, các byte bổ sung phát sinh bằng cách bỏ qua -m
là những thứ chúng ta nhận được từ việc phản chiếu mã.
|I<|>I|
Hãy thử trực tuyến!
Hãy thử nó đảo ngược!
Giải trình
Phiên bản đảo ngược của chương trình này là |I>|<I|
, giống như trên để chúng ta có thể bỏ qua điều đó. Nhưng phiên bản không đảo ngược khác nhau. Vì <>
bây giờ chỉ ra một cách khác, lệnh trung tâm kết thúc không làm gì cả, vì vậy chương trình trở thành một con mèo:
| Reverse the entire stack down to the EOF marker -1 (since there are no zeros in the input).
I Move the -1 one stack to the left and turn it into a +1.
< Move another stack to the left, which contains only zeros.
| Does nothing on zero.
Và do đó, >I|
chính xác hoàn tác nửa đầu của chương trình.