Tüm karakterleri sabit bir miktarda azaltın ve bir döngüye yazdırmadan hemen önce ekleyin
Kredi @LukStorms benzer bir yaklaşım kullanır, Hello World meydan okuma için onun cevabını .
( STN
sırasıyla Boşluk, Sekme ve Yeni satır için kullanılır.)
Harfler için değerleri her zaman 11 bayttır (yani 'A' karakteri için 65 değerini SSSTSSSSSTN
itmek; 'z' karakteri için 122 değerini itmek SSSTTTTSTSN
). Büyük miktarda metin çıktısı almak istediğinizde bu pahalı olabilir. Bunun yerine, yazdırmak istediğiniz tüm karakterlerin değerlerini sabit bir miktarda azaltabilir ve daha sonra bunları yazdırmak için döngüde bu sabit miktarı ekleyebilirsiniz.
Bu, aşağıdaki kodla yapılabilir (bu durumda sabit değerin 100 olduğunu varsayalım):
- Karakterler için tüm değerleri (eksi sabit miktar 100) ters sırada itin
NSSN
(Bir Label_0 oluşturun; temelde döngüyü başlatır)
SSSTTSSTSSN
(Sabit tutarı 100 itin)
TSSS
(Yığının ilk iki değerini birlikte ekleyin)
TNSS
(Şimdi doğru değeri karakter olarak pop ve yazdır)
NSNN
(Label_0'a atla; döngünün sonraki yinelemesine git)
Bu, programı yığın üzerinde başka bir şey olmadan Add ( ) yapmaya çalıştığında ( meta göre izin verilir) bir hata ile durur TSSS
. Bunu bu cevabımı golf için kullandım ( bayt sayısını azaltmak için yaptığım şeylerin 5. ve 6. maddelerine bakınız ).
Sabit bir miktarın en kısa yaklaşım olup olmadığı, ne yazdırdığınıza bağlıdır. @LukStorm , Hello World yanıtında 107 kullandı.
Üst değer (kopyalama bu Not SNS
(aynı gibi, bitişik bir karakter iki) l
in Hello
), ya da başka konuma kopyalama değerler daha da golf buna ek olarak kullanılabilir bayt.