' '' '' ' ' '''' '' '' ' ' '' ' ' '' '' '''' ' ' '''' '''' '' '' '' '' "'" "" "" "" "" ' '' '' '' '' ' ' '' '' '''' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' ''""" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '' ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' ''""" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' ''"" ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '' ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' '''"" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' ''" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" ' '' "' '' '' ''" "" ' '' '' ''' "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" """" "' '' '' ''" ' '' ' ' '' '' '' '' ' ' '' '' '''' '''' '' '' '' "' '' '' "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' "' '' "' '' '' '' ''"' '' ''" "' '' ' ' '' '' '' '''' '' '' '' ' ' '' '' '' '''' '' '' ''"' '' ''"" "" ' '' '' '' ''' "" "" "" " ' '' ' ' '' '' '' '' ' ' '' '' '''' '''' '' "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '' ' '' '' '' "' '' ' ' '' '' '' '' ' ' '' '' '''' '''' '' '' '' "' ''""" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '' ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "' '' ' ' '' '' '' '' ' ' '' '' '''' '''' '' '' ''"' '' '' '' ''' '' '' '' ''' "" "" "" "" ' '' '' '' "' '' "' '' '' '' '' ' ' '' '' ''''" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" "' '' '' ''" ' '' "' "" "" "" "" " ' '' '' '''" "" ' '' '' '' ''' "" "" "" "" ' '' '' ''"" ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" ' '' "' '' '' '' ''" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ' ' '' ' ' '' '' '' '''' '''' ''' "" "' ''" ' '' "'"" "' ''" ' '' "' '' "' ''" ' ''"' '' '' '' '' ' ' '''' ' ' '''' " ' '' '' "" ' ''' "" " ' '' '' '' '''" "" "" "" ' ''' "" "'" ' '' '' '' ' ' '''' "' "" " ' '' '' '''" " ' '' ' ' '''' '' '' '''" " ' '' ' ' '' '''''" "" """" ' ''' "" ' '' ' ' '' '' '''' "' '' ' ' '' '' '' '''' ''
açıklama
Bu program şu şekilde sözde koduna eşdeğerdir:
while (cp = (ch = read)) + 1 {
(
(cp -= 65) ? // A
(cp -= 4) ? // E
(cp -= 4) ? // I
(cp -= 6) ? // O
(cp -= 6) ? // U
(cp -= 12) ? // a
(cp -= 4) ? // e
(cp -= 4) ? // i
(cp -= 6) ? // o
(cp - 6) ? // u
0
: 1
: 1
: 1
: 1
: 1
: 1
: 1
: 1
: 1
: 1
) ? ((--vs)+4) ? print(ch) : (++vs) : {
print(ch)
vs = 0
}
}
aşağıdaki değişken atamalarıyla:
0 (unused) (13 bytes)
1 cp ( 4 bytes; occurs 20× in the code)
2 vs ( 7 bytes; occurs 5× in the code)
3 ch (10 bytes; occurs 3× in the code)
Gördüğünüz gibi, değişken slot 0'dan kaçındım çünkü 0
yazmak için çok uzun bir sabit.
Her karakteri okuyup hem de değerini depolamak Yani cp
ve ch
. Gerekirse yazdırabilmemiz için değiştireceğiz, cp
ancak saklayacağız ch
. cp
ASCII'deki 10 olası sesli harf karakterinden her birinin olup olmadığını kontrol etmek için 65, 4, 4, 6 vb .
vs
her zaman yazdırılmasına izin verilen ünlü sayısından 3 daha az içerir. Başlangıçta başlar 0
, böylece 3 sesli harf yazdırılabilir. O ulaştığında -3
, biz sesli harfleri yazdırırken durdurun.
Biz karşılaşırsanız olmayan sesli harf (boşluk dahil), biz yürütmek print(ch)
ardındanvs = 0
. Muhtemelen tahmin ettiğiniz gibi, sesli harfler sayacını sıfırlar.
Bir sesli harfle karşılaşırsak , idam ederiz ((--vs)+4) ? print(ch) : (++vs)
. Bunu parçalayalım:
- azalma
vs
;
- değer şimdi ise
-4
, çok ileri gittik, bu yüzden hiçbir şey yazdırmayın, ancak vs
tekrar artırın , -3
böylece devam edeceğiz sesli harfleri yazdırmak için reddetme;
- aksi takdirde karakteri yazdırın.
aaYYAAaaaAERGH
.