Jump to content

Practice Problems in LOLGraphics/Solution to Problem II

From Wikibooks, open books for an open world
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 

Explanation

[edit | edit source]

This code is pretty easy to understand. First it check is the number more than 8999 (which is the same as more than or equal to 9000 since LOLGraphics only supports integer numbers). If it is, it types “,Θ” to the screen since this is the Greek numeral for 9000 then subtracts 9000 from the number. Then it repeats the process for 8000, 7000, ..., 2000, 1000, 900, 800, ..., 200, 100, 90, 80, ..., 20, 10, 9, 8, ..., 2, 1. Notice that when it gets to 1, the code checks is the number greater than 0.

One more important thing to put attention on is the delay between two commands. The default is 100 milliseconds (0.1 sec) but since there are many checks, it was reduced to 1 millisecond (0.001 sec).

Alternative ways

[edit | edit source]

There is another more complex way to write the same code. First divide the number by 1000, then check if it’s a digit 1-9 (not 0), print the relevant character. Then divide the number by 100, but notice that then you will have to subtract 10 from the number until you get a number smaller than 10 which makes this way extremely inefficient. Notice though that since LOLGrapics only supports integer numbers the result of 9999/1000 will be 9 not 9.999 or 10 like you would expect. Readers familiar with programming will recall that other programming languages also take only the integer part when dividing integer variables.