Turunkan semua karakter dengan jumlah tetap dan tambahkan tepat sebelum mencetak dalam satu lingkaran
Penghargaan untuk @LukStorms , yang menggunakan pendekatan serupa dalam jawabannya untuk tantangan Hello World .
( STN
digunakan untuk masing-masing Space, Tab, dan New-line.)
Mendorong nilai untuk huruf selalu 11 byte (yaitu mendorong nilai 65 untuk karakter 'A' SSSTSSSSSTN
; mendorong nilai 122 untuk karakter 'z' adalah SSSTTTTSTSN
). Bila Anda ingin menampilkan teks dalam jumlah besar, ini bisa mahal. Sebagai gantinya, Anda dapat menurunkan nilai semua karakter yang ingin Anda cetak dengan jumlah tetap, dan kemudian dalam lingkaran untuk mencetaknya tambahkan jumlah tetap ini.
Ini dapat dilakukan dengan kode berikut (mari kita asumsikan nilainya tetap 100 dalam hal ini):
- Tekan semua nilai untuk karakter (minus jumlah tetap 100) dalam urutan terbalik
NSSN
(Buat Label_0; pada dasarnya memulai loop)
SSSTTSSTSSN
(Dorong jumlah tetap 100)
TSSS
(Tambahkan dua nilai teratas tumpukan bersama-sama)
TNSS
(Pop dan cetak nilai sekarang benar sebagai karakter)
NSNN
(Lompat ke Label_0; pergi ke iterasi loop berikutnya)
Ini akan menghentikan program dengan kesalahan ( yang diizinkan sesuai dengan meta ) segera setelah mencoba melakukan Tambah ( TSSS
) dengan tidak lebih dari tumpukan. Saya telah menggunakan ini untuk golf jawaban saya ini (lihat item 5 dan 6 dari Hal - hal yang saya lakukan untuk menurunkan byte-count ).
Apakah jumlah tetap 100 adalah pendekatan terpendek tergantung pada apa yang Anda cetak. @LukStorm misalnya menggunakan 107 dalam jawaban Hello World-nya.
Perhatikan bahwa menyalin nilai teratas ( SNS
) untuk dua karakter yang berdekatan yang sama (seperti l
dalam Hello
), atau menyalin nilai dari posisi lain masih dapat digunakan selain untuk golf lebih banyak byte.