Spiral , skor: 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
Bir tercüman bulunabilir burada .
Açıklama:
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
Program 0
dördüncü satırdaki karakterden başlar . Çalıştırılacak ilk kod parçası 0;vg
. ;
girdi olarak bir sayı alır ve yığına yerleştirir. v
kasada ne olduğunu (sıfır) yığına yerleştirir. Sayaç olarak kullanılacaktır. g
Bu, bir etikete ulaşıldığında, kontrol g
, koddaki harfin diğer bir yerine geçer .
Demek burası kontrolün şu anda:
X
v
g
Diğer tüm yönlerde boşluk olduğundan, işaretçi yukarı doğru hareket etmeye başlar.
v
yığına sıfır yerleştirir ve X
hemen yığından çıkar. Açılan değer sıfır olduğundan, komut işaretçisi hareket eder X
(aksi takdirde boşluk olarak değerlendirilir).
Varsayılan olarak, kontrol akışı sağa dönüş modundadır, bu yüzden şimdi kavşağa ulaştığında, komut gösterici sağa döner. v
Yine bir kez daha yığına bir sıfır iter *
, kayıt birer birer artar.
v*v*v
X
v
g
Bir sonraki v
adım kayıt defterinde olanı (sayı 1) yığına yerleştirir, komut gösterici bir sonrakine vurarak sağa dönmeye çalışır X
. Yığına yeni eklenen değer açılır ve kayıt defterine yerleştirilir. Sıfır X
olmadığından girilmez ve IP *
bunun yerine sağdaki bir sonraki adıma geçer ve kayıtdaki değeri tekrar artırır.
v*v*v*v*v
X X X X X
v v v v v
i h g f e
Bu, bu kısmın sonuna ulaşana ve *
s çizgisi başlayana kadar tekrar tekrar olur . Şimdiye kadar, kayıt defterindeki değer ASCII harfi g
eksi ASCII harfi olan 6'dır a
. Böylece 97 *
s'lik bir satırla , kayıttaki değeri 103'e yükseltiriz; bu g
da yazdırmak istediğimiz harfle eşleşir . v
yığına iter ve P
bir diğer etikettir P
, kodun ilk satırında diğerine atladık .
İşte .
yığındaki değeri çıkar ve karakter olarak yazdırır. Bundan sonra X
, fazlalık sıfırı yığından çıkar, sonra yığında ~
kalan iki değeri karşılaştırır (değerler sayaç ve giriş değeridir). Değerler aynıysa, operatör yığına sıfırı koyar (aksi halde -1 veya 1). Yine kontrol sağa dönmeye çalışır. X
Sıfır X
ise ve girdikten sonra !
programı sonlandırarak, yığından karşılaştırmanın değerini çıkarır .
P.X~ZZ*v+^
X
!
Aksi halde IP Z
, bu durumda yalnızca bir adım sağa atlayan bir etiket olan sekmesine devam eder. Bunu yapmanın nedeni, atlamanın kayıttaki değeri sıfıra ayarlamasıdır. *
yazmacı artırır ve v
sonuç 1'i yığına yerleştirir. +
yığının iki üst elemanını (1 ve sayaç) çıkarır, ekler ve sonucu yığına yerleştirir (bu sayede sayaç birer birer artar). ^
sonucu, yığından çıkarmadan yığından kayıt defterine kopyalar.
#
Kayıt defterindeki değeri birer birer v
azaltır, azalmış değeri yığına iter, IP sağa çevirmeye çalışır X
ve değeri yığından çıkar. Değer sıfır değilse, IP doğuya doğru ilerlemeye devam eder, kayıt sırasındaki değeri sıfıra düşürene kadar düşürür ve IP bir X
dal girer .
#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
Dal, sayacın değerine karşılık gelen bir etikete yönlendirir. Etikete vurulduktan sonra, kontrol, etiketle başladığımız bölümdeki etiketin diğer oluşumuna atlayarak g
başka bir yineleme başlatır. Aynı şekilde, g
kayıt defterindeki değer, yazdırmamız gereken mektubun ASCII değerine kadar artırılır. Ardından karakter yazdırılır ve sayaç artırılır, başka bir etiket seçilir. Bu, son yinelemenin ardından sayaç girişe eşit oluncaya kadar gerçekleşir ve program sona erer.
Düzenle:
P.X~Zv+^
X *
! Z
İle aynı şeyi elde eder
P.X~ZZ*v+^
X
!
ama daha az boşlukla.
Düzenleme 2:
vv****v+^v+^v+^v+^*v++P
Yerine kullanılabilir:
*****************************************************************vP