跳轉到內容

LOLGraphics 實踐問題/問題 II 的解決方案

來自華夏公益教科書,開放世界的開放書籍

程式碼

[編輯 | 編輯原始碼]
HAI 3.4 0 1
IM IN UR CODE EXECUTIN UR KOMANDZ

I HAS A TWO BYTE DAT IZ CALLED X

DIS IZ MY LABEL! IT IZ KALLED START
PLZ ASK TEH USR 2 GIMME A TWO BYTE X
PLZ PRINT TWO BYTE X

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>8999
IF CEILIN KAT IZ NODDING PLZ RUN 9000

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>7999
IF CEILIN KAT IZ NODDING PLZ RUN 8000

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>6999
IF CEILIN KAT IZ NODDING PLZ RUN 7000

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>5999
IF CEILIN KAT IZ NODDING PLZ RUN 6000

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>4999
IF CEILIN KAT IZ NODDING PLZ RUN 5000

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>3999
IF CEILIN KAT IZ NODDING PLZ RUN 4000

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>2999
IF CEILIN KAT IZ NODDING PLZ RUN 3000

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>1999
IF CEILIN KAT IZ NODDING PLZ RUN 2000

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]/nowiki>>999
 IF CEILIN KAT IZ NODDING PLZ RUN 1000
 
 PLZ ASK CEILIN KAT 2 CHEK IZ <nowiki>[[X]]>899
IF CEILIN KAT IZ NODDING PLZ RUN 900
 
PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>799
IF CEILIN KAT IZ NODDING PLZ RUN 800

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>699
IF CEILIN KAT IZ NODDING PLZ RUN 700

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>599
IF CEILIN KAT IZ NODDING PLZ RUN 600

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>499
IF CEILIN KAT IZ NODDING PLZ RUN 500

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>399
IF CEILIN KAT IZ NODDING PLZ RUN 400

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>299
IF CEILIN KAT IZ NODDING PLZ RUN 300

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>199
IF CEILIN KAT IZ NODDING PLZ RUN 200

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>99
IF CEILIN KAT IZ NODDING PLZ RUN 100

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>89
IF CEILIN KAT IZ NODDING PLZ RUN 90

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>79
IF CEILIN KAT IZ NODDING PLZ RUN 80

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>69
IF CEILIN KAT IZ NODDING PLZ RUN 70

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>59
IF CEILIN KAT IZ NODDING PLZ RUN 60

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>49
IF CEILIN KAT IZ NODDING PLZ RUN 50

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>39
IF CEILIN KAT IZ NODDING PLZ RUN 40

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>29
IF CEILIN KAT IZ NODDING PLZ RUN 30

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>19
IF CEILIN KAT IZ NODDING PLZ RUN 20
 
PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>9
IF CEILIN KAT IZ NODDING PLZ RUN 10

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>8
IF CEILIN KAT IZ NODDING PLZ RUN 9

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>7
IF CEILIN KAT IZ NODDING PLZ RUN 8

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>6
IF CEILIN KAT IZ NODDING PLZ RUN 7
 
PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>5
IF CEILIN KAT IZ NODDING PLZ RUN 6
 
PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>4
IF CEILIN KAT IZ NODDING PLZ RUN 5

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>3
IF CEILIN KAT IZ NODDING PLZ RUN 4

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>2
IF CEILIN KAT IZ NODDING PLZ RUN 3

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>1
IF CEILIN KAT IZ NODDING PLZ RUN 2

PLZ ASK CEILIN KAT 2 CHEK IZ [[X]]>0
IF CEILIN KAT IZ NODDING PLZ RUN 1

PLZ PRINT TEXT 
PLZ PRINT TEXT ========
PLZ GOTO LABEL START
 
IM OUTTA UR CODE

IM IN UR SUBPROGRAM DAT IZ KALLED 9000
PLZ TYPE TEXT ,Θ
PLZ SET TWO BYTE X X-9000
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 8000
PLZ TYPE TEXT ,Η
PLZ SET TWO BYTE X X-8000
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 7000
PLZ TYPE TEXT ,Ζ
PLZ SET TWO BYTE X X-7000
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 6000
PLZ TYPE TEXT ,Ϛ
PLZ SET TWO BYTE X X-6000
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 5000
PLZ TYPE TEXT ,Ε
PLZ SET TWO BYTE X X-5000
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 4000
PLZ TYPE TEXT ,Δ
PLZ SET TWO BYTE X X-4000
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 3000
PLZ TYPE TEXT ,Γ
PLZ SET TWO BYTE X X-3000
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 2000
PLZ TYPE TEXT ,Β
PLZ SET TWO BYTE X X-2000
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 1000
PLZ TYPE TEXT ,Α
PLZ SET TWO BYTE X X-1000
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 900
PLZ TYPE TEXT Ϡʹ
PLZ SET TWO BYTE X X-900
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 800
PLZ TYPE TEXT Ωʹ
PLZ SET TWO BYTE X X-800
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 700
PLZ TYPE TEXT Ψʹ
PLZ SET TWO BYTE X X-700
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 600
PLZ TYPE TEXT Χʹ
PLZ SET TWO BYTE X X-600
IM OUTTA UR SUBPROGRAM
 
IM IN UR SUBPROGRAM DAT IZ KALLED 500
PLZ TYPE TEXT Φʹ
PLZ SET TWO BYTE X X-500
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 400
PLZ TYPE TEXT Υʹ
PLZ SET TWO BYTE X X-400
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 300
PLZ TYPE TEXT Τʹ
PLZ SET TWO BYTE X X-300
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 200
PLZ TYPE TEXT Σʹ
PLZ SET TWO BYTE X X-200
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 100
PLZ TYPE TEXT Ρʹ
PLZ SET TWO BYTE X X-100
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 90
PLZ TYPE TEXT Ϟʹ
PLZ SET TWO BYTE X X-90
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 80
PLZ TYPE TEXT Πʹ
PLZ SET TWO BYTE X X-80
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 70
PLZ TYPE TEXT Οʹ
PLZ SET TWO BYTE X X-70
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 60
PLZ TYPE TEXT Ξʹ
PLZ SET TWO BYTE X X-60
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 50
PLZ TYPE TEXT Νʹ
PLZ SET TWO BYTE X X-50
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 40
PLZ TYPE TEXT Μʹ
PLZ SET TWO BYTE X X-40
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 30
PLZ TYPE TEXT Λʹ
PLZ SET TWO BYTE X X-30
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 20
PLZ TYPE TEXT Κʹ
PLZ SET TWO BYTE X X-20
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 10
PLZ TYPE TEXT Ιʹ
PLZ SET TWO BYTE X X-10
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 9
PLZ TYPE TEXT Θʹ
PLZ SET TWO BYTE X X-9
IM OUTTA UR SUBPROGRAM
 
IM IN UR SUBPROGRAM DAT IZ KALLED 8
PLZ TYPE TEXT Ηʹ
PLZ SET TWO BYTE X X-8
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 7
PLZ TYPE TEXT Ζʹ
PLZ SET TWO BYTE X X-7
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 6
PLZ TYPE TEXT Ϛʹ
PLZ SET TWO BYTE X X-6
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 5
PLZ TYPE TEXT Εʹ
PLZ SET TWO BYTE X X-5
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 4
PLZ TYPE TEXT Δʹ
PLZ SET TWO BYTE X X-4
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 3
PLZ TYPE TEXT Γʹ
PLZ SET TWO BYTE X X-3
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 2
PLZ TYPE TEXT Βʹ
PLZ SET TWO BYTE X X-2
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED 1
PLZ TYPE TEXT Αʹ
PLZ SET TWO BYTE X X-1
IM OUTTA UR SUBPROGRAM

這段程式碼很容易理解。首先,它檢查數字是否大於 8999(由於 LOLGraphics 僅支援整數,因此與大於或等於 9000 相同)。如果是,它會在螢幕上顯示“,Θ”,因為這是 9000 的希臘數字,然後從數字中減去 9000。然後它對 8000、7000、...、2000、1000、900、800、...、200、100、90、80、...、20、10、9、8、...、2、1 重複這個過程。請注意,當它到達 1 時,程式碼會檢查數字是否大於 0。

另一件需要注意的重要事項是兩個命令之間的延遲。預設值為 100 毫秒(0.1 秒),但由於有許多檢查,因此它被減少到 1 毫秒(0.001 秒)。

其他方法

[編輯 | 編輯原始碼]

還有另一種更復雜的方法可以編寫相同的程式碼。首先將數字除以 1000,然後檢查它是否為 1-9 的數字(不是 0),並列印相關字元。然後將數字除以 100,但請注意,然後您將不得不從數字中減去 10,直到您得到小於 10 的數字,這使得這種方法極其低效。請注意,由於 LOLGrapics 僅支援整數,因此 9999/1000 的結果將是 9,而不是您所期望的 9.999 或 10。熟悉程式設計的讀者會想起,其他程式語言在對整數變數進行除法時也只取整數部分。

華夏公益教科書