跳转到内容

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。熟悉编程的读者会想起,其他编程语言在对整数变量进行除法时也只取整数部分。

华夏公益教科书