' '' '' ' ' '''' '' '' ' '' ' ' '' '' '''' ' '"'' ''"' '' '' '' '' "'" "" "" "" "" ' '' '' '' '' ' ' '' '' "'' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" " ''""" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" "" '' '' '' '' ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" " '' ''""" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" "" '' '' '' "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" " '' '' ''"" ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" "" '' '' '' '' ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' '''"" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" " '' ''" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" ' '' "' '' '' ''" "" ' '' '' "' "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" """" "" '' '' ''" ' '' ' ' '' '' '' '' ' ' '' ''"'' '''' '' '' '' "' '' '' "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' "' '' "" '' '' '' ''" " '' ''" " '' ' ' '' '' '' '''' '' '' '' ' ' '' '' '' '''' '' '' ''" " '' ''"" "" ' '' '' '' ''' "" "" "" "" '' ' ' '' '' '' '' ' ' '' '' "'' '''' '' "" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" "" '' '' '' '' ' '' '' '' "' '' ' ' '' '' '' '' ' ' '' ''"'' '''' '' '' '' "" ''""" "" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" "" '' '' '' '' ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" '' ' ' '' '' '' '' ' ' '' '' "'' '''' '' '' ''" " '' '' '' ''' '' '' '' ''' "" "" "" "" ' '' '' '' "' '' "" '' '' '' '' ' ' '' '' ''''" " ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" "" '' '' ''" ' ''"' "" "" "" "" " ' '' ''"'" "" ' '' '' '' ''' "" "" "" """ '' '' ''"" ' '' '' '' '''" "" "" "" " ' '' '' '' '''" "" "" "" ' '' "' '' '' '' ''" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ''' "" "" "" "" ' '' '' '' ' ' '' ' ' '' '' '' '''' '''' ''' "" "" ''" ' ''"'"" "" ''" ' ''"' '' "" ''" ' ''"' '' '' '' '' ' ' '''' ' ' '''' "" '' '' "" '"' "" " ' '' '' '' '''" "" "" "" '"' "" """" '' '' '' ' ' '''' " "" " ' '' '' '''" " '' ' ' '''' '' '' ''"" " '' ' ' '' '''' "" "" """" ' ''' "" '' ' ' '' '' '''' " '' ' ' '' '' '' '''' ''
คำอธิบาย
โปรแกรมนี้เทียบเท่ากับ pseudocode เช่นนี้:
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
}
}
ด้วยการกำหนดตัวแปรต่อไปนี้:
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)
อย่างที่คุณเห็นฉันหลีกเลี่ยงตัวแปรสล็อต 0 เพราะ0
ค่าคงที่ยาวนานในการเขียน
ดังนั้นเราอ่านตัวละครแต่ละตัวและเก็บค่าทั้งในและcp
ch
เราจะแก้ไขcp
แต่เก็บไว้ch
เพื่อที่เราจะสามารถพิมพ์ได้หากจำเป็น เราทำการลบตัวเลข 65, 4, 4, 6 และอื่น ๆ อย่างต่อเนื่องcp
เพื่อตรวจสอบว่าเป็นตัวอักษรเสียงสระที่เป็นไปได้ 10 ตัวใน ASCII หรือไม่
vs
มักจะมี 3 น้อยกว่าจำนวนของสระที่ยังคงได้รับอนุญาตให้พิมพ์ มันเริ่มต้นที่0
จึงสามารถพิมพ์เสียงสระได้ 3 เสียง เมื่อมาถึง-3
เราจะหยุดพิมพ์สระ
ถ้าเราพบไม่ใช่สระ (รวมทั้งพื้นที่) เรารันตามมาด้วยprint(ch)
vs = 0
ในขณะที่คุณคาดเดาอาจตั้งค่าเคาน์เตอร์สระ
ถ้าเราพบสระ((--vs)+4) ? print(ch) : (++vs)
เราดำเนินการ เราจะทำลายสิ่งนี้ลง:
- การลดลง
vs
;
- ถ้าค่าอยู่ในขณะนี้
-4
เราได้ไปไกลเกินไปจึงไม่พิมพ์อะไร แต่เพิ่มขึ้นvs
กลับไป-3
ดังนั้นเราจะยังคงปฏิเสธที่จะพิมพ์สระ;
- มิฉะนั้นให้พิมพ์อักขระ
aaYYAAaaaAERGH
คุณควรจะรวมถึงการทดสอบบางอย่างมากขึ้นกับกรณีผสมเช่น