Hạ tất cả các ký tự xuống một lượng cố định và thêm nó ngay trước khi in trong một vòng lặp
Tín dụng cho @LukStorms , người sử dụng một cách tiếp cận tương tự trong câu trả lời của mình cho thử thách Hello World .
( STN
được sử dụng cho Space, Tab và New-line tương ứng.)
Đẩy các giá trị cho các chữ cái luôn là 11 byte (tức là đẩy giá trị 65 cho ký tự 'A' là SSSTSSSSSTN
; đẩy giá trị 122 cho ký tự 'z' là SSSTTTTSTSN
). Khi bạn muốn xuất số lượng lớn văn bản, điều này có thể tốn kém. Thay vào đó, bạn có thể hạ thấp giá trị của tất cả các ký tự bạn muốn in theo một lượng cố định, sau đó trong vòng lặp để in chúng thêm số lượng cố định này.
Điều này có thể được thực hiện với mã sau đây (giả sử giá trị cố định là 100 trong trường hợp này):
- Đẩy tất cả các giá trị cho các ký tự (trừ số tiền cố định 100) theo thứ tự ngược lại
NSSN
(Tạo một Nhãn_0; về cơ bản bắt đầu vòng lặp)
SSSTTSSTSSN
(Đẩy số tiền cố định 100)
TSSS
(Thêm hai giá trị trên cùng của ngăn xếp với nhau)
TNSS
(Pop và in giá trị chính xác bây giờ dưới dạng ký tự)
NSNN
(Chuyển đến Label_0; chuyển đến lần lặp tiếp theo của vòng lặp)
Điều này sẽ dừng chương trình có lỗi ( được cho phép theo meta ) ngay khi nó cố gắng thực hiện Thêm ( TSSS
) mà không có gì thêm trên ngăn xếp. Tôi đã sử dụng điều này để đánh golf câu trả lời này của tôi (xem mục 5 và 6 trong số những điều tôi đã làm để giảm số lượng byte ).
Việc số lượng cố định 100 có phải là cách tiếp cận ngắn nhất hay không phụ thuộc vào những gì bạn đang in. Ví dụ @LukStorm đã sử dụng 107 trong câu trả lời Hello World của anh ấy.
Lưu ý rằng sao chép giá trị trên cùng ( SNS
) cho hai trong số các ký tự liền kề (như l
in Hello
) hoặc sao chép giá trị từ một vị trí khác vẫn có thể được sử dụng ngoài điều này để đánh gôn nhiều byte hơn.