Xoắn ốc , điểm: 61921 5127 4715 4655 4191
4.X~>v+^#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v
X * X X X X X X X X X X X X X X X X X X X X X X X X X
! > h y t f V b n j u [ ( 1 3 2 ) ] U J N B F T Y H G
0;vgv*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*vvv****v+^v+^v+^v+^*v++4
X X X X X X X X X X X X X X X X X X X X X X X X X X
v v v v v v v v v v v v v v v v v v v v v v v v v v
Y y J F V u t U [ G H B n 3 N 2 j ) h g f ] ( 1 b T
Một thông dịch viên có thể được tìm thấy ở đây .
Giải trình:
P.X~ZZ*v+^#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v
X X X X X X X X X X X X X X X X X X X X X X X X X X
! h y t f V b n j u r d c m k i e s x l o w a z p q
0;vgv*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*****************************************************************vP
X X X X X X X X X X X X X X X X X X X X X X X X X X
v v v v v v v v v v v v v v v v v v v v v v v v v v
z y x w V u t s r q p o n m l k j i h g f e d c b a
Chương trình bắt đầu ở 0nhân vật trên dòng thứ tư. Đoạn mã đầu tiên để chạy là 0;vg. ;lấy một số làm đầu vào và đặt nó vào ngăn xếp. vđặt những gì trong thanh ghi (một số không) vào ngăn xếp. Nó sẽ được sử dụng như là quầy. glà một nhãn, khi nó đạt được, điều khiển nhảy sang sự xuất hiện khác của chữ cái gtrong mã.
Vì vậy, đây là nơi kiểm soát bây giờ:
X
v
g
Vì có khoảng trắng ở tất cả các hướng khác, con trỏ lệnh bắt đầu di chuyển lên trên.
vđặt số 0 vào ngăn xếp và Xbật nó ra khỏi ngăn xếp ngay lập tức. Bởi vì giá trị popped bằng 0, con trỏ lệnh di chuyển đến X(nếu không nó sẽ coi nó là khoảng trắng).
Theo mặc định, luồng điều khiển ở chế độ rẽ phải, vì vậy bây giờ khi đến ngã ba, con trỏ lệnh sẽ quay sang phải. vmột lần nữa đẩy số 0 vào ngăn xếp, *tăng thanh ghi lên một.
v*v*v
X
v
g
Tiếp theo vđặt những gì trong thanh ghi (số 1) vào ngăn xếp, con trỏ lệnh cố gắng rẽ sang phải, nhấn tiếp theo X. Giá trị vừa được thêm vào ngăn xếp được bật lên và được đặt trong thanh ghi. Bởi vì nó khác không, Xkhông được nhập và *thay vào đó, IP sẽ chuyển sang bên phải ở bên phải, một lần nữa tăng giá trị trong thanh ghi.
v*v*v*v*v
X X X X X
v v v v v
i h g f e
Điều này xảy ra lặp đi lặp lại cho đến khi chúng ta kết thúc phần này và dòng *s bắt đầu. Đến bây giờ giá trị trong thanh ghi là 6, đó là chữ gASCII trừ chữ ASCII a. Do đó, với một dòng 97 *giây, chúng tôi tăng giá trị trong thanh ghi lên 103, khớp với chữ cái gchúng tôi muốn in. vđẩy nó vào ngăn xếp và Plà một nhãn khác khi nhấn mà chúng ta nhảy sang cái khác Ptrên dòng đầu tiên của mã.
Ở đây .bật giá trị từ ngăn xếp và in nó dưới dạng ký tự. Sau đó Xbật số 0 không liên tục từ ngăn xếp, sau đó ~so sánh hai giá trị còn lại trong ngăn xếp (các giá trị là bộ đếm và giá trị đầu vào). Nếu các giá trị là như nhau, toán tử đặt số 0 trong ngăn xếp (nếu không -1 hoặc 1). Một lần nữa, kiểm soát cố gắng rẽ phải. Xbật giá trị so sánh từ ngăn xếp, nếu nó bằng 0 Xvà sau khi !được nhập, kết thúc chương trình.
P.X~ZZ*v+^
X
!
Mặt khác, IP tiếp tục Zlà nhãn mà trong trường hợp này chỉ nhảy một bước sang phải. Lý do để làm điều này là việc nhảy đặt giá trị trong thanh ghi trở về không. *tăng thanh ghi và vđặt kết quả 1 vào ngăn xếp. +bật hai phần tử trên cùng của ngăn xếp (1 và bộ đếm), thêm chúng và đặt kết quả vào ngăn xếp (thực tế, điều này làm tăng bộ đếm lên một). ^sao chép kết quả từ ngăn xếp vào thanh ghi mà không xóa nó khỏi ngăn xếp.
#giảm giá trị trong thanh ghi theo một, vđẩy giá trị giảm xuống ngăn xếp, IP cố gắng quay sang phải và Xbật giá trị từ ngăn xếp. Nếu giá trị khác không, IP sẽ tiếp tục di chuyển về phía đông, giảm giá trị trong thanh ghi, cho đến khi nó về 0 và IP đi vào một Xnhánh.
#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v
X X X X X X X X X X X X X X X X X X X X X X X X X
h y t f V b n j u r d c m k i e s x l o w a z p q
Nhánh dẫn đến một nhãn tương ứng với giá trị của bộ đếm. Khi nhấn nhãn, điều khiển nhảy sang sự xuất hiện khác của nhãn trong phần chúng tôi bắt đầu với nhãn g, bắt đầu một lần lặp khác. Cũng như g, giá trị trong thanh ghi được tăng lên đến giá trị ASCII của chữ cái chúng ta cần in. Sau đó, ký tự được in và bộ đếm tăng lên, nhãn khác được chọn. Điều này xảy ra cho đến sau lần lặp cuối cùng, bộ đếm bằng đầu vào và chương trình kết thúc.
Chỉnh sửa:
P.X~Zv+^
X *
! Z
Đạt được điều tương tự như
P.X~ZZ*v+^
X
!
nhưng với ít khoảng trắng hơn.
Chỉnh sửa 2:
vv****v+^v+^v+^v+^*v++P
Có thể được sử dụng thay vì:
*****************************************************************vP