aboutsummaryrefslogtreecommitdiff
path: root/projects/11/K/Board.vm
diff options
context:
space:
mode:
authorYuchen Pei <me@ypei.me>2018-01-20 15:41:49 +0100
committerYuchen Pei <me@ypei.me>2018-01-20 15:41:49 +0100
commitd3a0cc3a8ba6dfeb64d3faeffdeb6845b60e5840 (patch)
treed58df9ec2480e2a9ec6240f9c797f83d1a0b1056 /projects/11/K/Board.vm
parent3571f998b28fbc8d9250ba04c983935f10a16c15 (diff)
rearranged the dir for github
- removed tools and pdfs - rearranged the projects dirs - added md files - other minor changes
Diffstat (limited to 'projects/11/K/Board.vm')
-rw-r--r--projects/11/K/Board.vm1183
1 files changed, 0 insertions, 1183 deletions
diff --git a/projects/11/K/Board.vm b/projects/11/K/Board.vm
deleted file mode 100644
index 272b52d..0000000
--- a/projects/11/K/Board.vm
+++ /dev/null
@@ -1,1183 +0,0 @@
-function Board.new 3
-push constant 3
-call Memory.alloc 1
-pop pointer 0
-push constant 4
-call Array.new 1
-pop this 0
-push constant 0
-pop local 0
-label new.While0
-push local 0
-push constant 4
-lt
-not
-if-goto new.EndWhile0
-push constant 0
-pop local 1
-push constant 4
-call Array.new 1
-push this 0
-push local 0
-add
-pop pointer 1
-pop that 0
-push this 0
-push local 0
-add
-pop pointer 1
-push that 0
-pop local 2
-label new.While0.While0
-push local 1
-push constant 4
-lt
-not
-if-goto new.While0.EndWhile0
-push constant 32
-push local 2
-push local 1
-add
-pop pointer 1
-pop that 0
-push local 1
-push constant 1
-add
-pop local 1
-goto new.While0.While0
-label new.While0.EndWhile0
-push local 0
-push constant 1
-add
-pop local 0
-goto new.While0
-label new.EndWhile0
-push this 0
-push constant 0
-add
-pop pointer 1
-push that 0
-pop local 2
-push constant 65
-push local 2
-push constant 0
-add
-pop pointer 1
-pop that 0
-push constant 0
-pop this 1
-push constant 0
-pop this 2
-push pointer 0
-return
-function Board.arrange 0
-push argument 0
-pop pointer 0
-push argument 2
-not
-if-goto arrange.Else0
-push pointer 0
-push argument 1
-push this 0
-call Board.deepcopy 3
-pop temp 0
-goto arrange.Endif0
-label arrange.Else0
-push pointer 0
-push argument 1
-push this 0
-call Board.transpose 3
-pop temp 0
-label arrange.Endif0
-push pointer 0
-push argument 1
-call Board.dispose4 2
-pop temp 0
-push constant 0
-return
-function Board.copy 1
-push argument 0
-pop pointer 0
-push constant 0
-pop local 0
-label copy.While0
-push local 0
-push constant 4
-lt
-not
-if-goto copy.EndWhile0
-push argument 1
-push local 0
-add
-pop pointer 1
-push that 0
-push argument 2
-push local 0
-add
-pop pointer 1
-pop that 0
-push local 0
-push constant 1
-add
-pop local 0
-goto copy.While0
-label copy.EndWhile0
-push constant 0
-return
-function Board.deepcopy 1
-push argument 0
-pop pointer 0
-push constant 0
-pop local 0
-label deepcopy.While0
-push local 0
-push constant 4
-lt
-not
-if-goto deepcopy.EndWhile0
-push pointer 0
-push argument 1
-push local 0
-add
-pop pointer 1
-push that 0
-push argument 2
-push local 0
-add
-pop pointer 1
-push that 0
-call Board.copy 3
-pop temp 0
-push local 0
-push constant 1
-add
-pop local 0
-goto deepcopy.While0
-label deepcopy.EndWhile0
-push constant 0
-return
-function Board.transpose 4
-push argument 0
-pop pointer 0
-push constant 0
-pop local 0
-label transpose.While0
-push local 0
-push constant 4
-lt
-not
-if-goto transpose.EndWhile0
-push constant 0
-pop local 1
-push argument 2
-push local 0
-add
-pop pointer 1
-push that 0
-pop local 2
-label transpose.While0.While0
-push local 1
-push constant 4
-lt
-not
-if-goto transpose.While0.EndWhile0
-push argument 1
-push local 1
-add
-pop pointer 1
-push that 0
-pop local 3
-push local 3
-push local 0
-add
-pop pointer 1
-push that 0
-push local 2
-push local 1
-add
-pop pointer 1
-pop that 0
-push local 1
-push constant 1
-add
-pop local 1
-goto transpose.While0.While0
-label transpose.While0.EndWhile0
-push local 0
-push constant 1
-add
-pop local 0
-goto transpose.While0
-label transpose.EndWhile0
-push constant 0
-return
-function Board.dispose4 2
-push argument 0
-pop pointer 0
-push constant 0
-pop local 0
-label dispose4.While0
-push local 0
-push constant 4
-lt
-not
-if-goto dispose4.EndWhile0
-push argument 1
-push local 0
-add
-pop pointer 1
-push that 0
-pop local 1
-push local 1
-call Array.dispose 1
-pop temp 0
-push local 0
-push constant 1
-add
-pop local 0
-goto dispose4.While0
-label dispose4.EndWhile0
-push argument 1
-call Array.dispose 1
-pop temp 0
-push constant 0
-return
-function Board.new4 2
-push argument 0
-pop pointer 0
-push constant 4
-call Array.new 1
-pop local 0
-push constant 0
-pop local 1
-label new4.While0
-push local 1
-push constant 4
-lt
-not
-if-goto new4.EndWhile0
-push constant 4
-call Array.new 1
-push local 0
-push local 1
-add
-pop pointer 1
-pop that 0
-push local 1
-push constant 1
-add
-pop local 1
-goto new4.While0
-label new4.EndWhile0
-push local 0
-return
-function Board.getStrips 1
-push argument 0
-pop pointer 0
-push pointer 0
-call Board.new4 1
-pop local 0
-push argument 1
-not
-if-goto getStrips.Else0
-push pointer 0
-push this 0
-push local 0
-call Board.deepcopy 3
-pop temp 0
-goto getStrips.Endif0
-label getStrips.Else0
-push pointer 0
-push this 0
-push local 0
-call Board.transpose 3
-pop temp 0
-label getStrips.Endif0
-push local 0
-return
-function Board.align 2
-push argument 0
-pop pointer 0
-push constant 0
-pop local 0
-push constant 0
-pop local 1
-push argument 2
-not
-if-goto align.Else0
-label align.Else0.While0
-push local 0
-push constant 4
-lt
-not
-if-goto align.Else0.EndWhile0
-push argument 1
-push local 0
-add
-pop pointer 1
-push that 0
-push constant 64
-gt
-not
-if-goto align.Else0.While0.Else0
-push argument 1
-push local 0
-add
-pop pointer 1
-push that 0
-push argument 1
-push local 1
-add
-pop pointer 1
-pop that 0
-push local 1
-push constant 1
-add
-pop local 1
-label align.Else0.While0.Else0
-push local 0
-push constant 1
-add
-pop local 0
-goto align.Else0.While0
-label align.Else0.EndWhile0
-label align.Else0.While1
-push local 1
-push constant 4
-lt
-not
-if-goto align.Else0.EndWhile1
-push constant 32
-push argument 1
-push local 1
-add
-pop pointer 1
-pop that 0
-push local 1
-push constant 1
-add
-pop local 1
-goto align.Else0.While1
-label align.Else0.EndWhile1
-goto align.Endif0
-label align.Else0
-label align.If0.While0
-push local 0
-push constant 4
-lt
-not
-if-goto align.If0.EndWhile0
-push argument 1
-push constant 3
-push local 0
-sub
-add
-pop pointer 1
-push that 0
-push constant 64
-gt
-not
-if-goto align.If0.While0.Else0
-push argument 1
-push constant 3
-push local 0
-sub
-add
-pop pointer 1
-push that 0
-push argument 1
-push constant 3
-push local 1
-sub
-add
-pop pointer 1
-pop that 0
-push local 1
-push constant 1
-add
-pop local 1
-label align.If0.While0.Else0
-push local 0
-push constant 1
-add
-pop local 0
-goto align.If0.While0
-label align.If0.EndWhile0
-label align.If0.While1
-push local 1
-push constant 4
-lt
-not
-if-goto align.If0.EndWhile1
-push constant 32
-push argument 1
-push constant 3
-push local 1
-sub
-add
-pop pointer 1
-pop that 0
-push local 1
-push constant 1
-add
-pop local 1
-goto align.If0.While1
-label align.If0.EndWhile1
-label align.Endif0
-push argument 1
-return
-function Board.reduce 0
-push argument 0
-pop pointer 0
-push argument 1
-push constant 0
-add
-pop pointer 1
-push that 0
-push argument 1
-push constant 1
-add
-pop pointer 1
-push that 0
-eq
-push argument 1
-push constant 2
-add
-pop pointer 1
-push that 0
-push argument 1
-push constant 3
-add
-pop pointer 1
-push that 0
-eq
-and
-push argument 1
-push constant 0
-add
-pop pointer 1
-push that 0
-push constant 64
-gt
-and
-push argument 1
-push constant 2
-add
-pop pointer 1
-push that 0
-push constant 64
-gt
-and
-not
-if-goto reduce.Else0
-push argument 2
-not
-if-goto reduce.Else0.Else0
-push argument 1
-push constant 0
-add
-pop pointer 1
-push that 0
-push constant 1
-add
-push argument 1
-push constant 0
-add
-pop pointer 1
-pop that 0
-push argument 1
-push constant 2
-add
-pop pointer 1
-push that 0
-push constant 1
-add
-push argument 1
-push constant 1
-add
-pop pointer 1
-pop that 0
-push constant 32
-push argument 1
-push constant 2
-add
-pop pointer 1
-pop that 0
-push constant 32
-push argument 1
-push constant 3
-add
-pop pointer 1
-pop that 0
-goto reduce.Else0.Endif0
-label reduce.Else0.Else0
-push argument 1
-push constant 3
-add
-pop pointer 1
-push that 0
-push constant 1
-add
-push argument 1
-push constant 3
-add
-pop pointer 1
-pop that 0
-push argument 1
-push constant 1
-add
-pop pointer 1
-push that 0
-push constant 1
-add
-push argument 1
-push constant 2
-add
-pop pointer 1
-pop that 0
-push constant 32
-push argument 1
-push constant 1
-add
-pop pointer 1
-pop that 0
-push constant 32
-push argument 1
-push constant 0
-add
-pop pointer 1
-pop that 0
-label reduce.Else0.Endif0
-push argument 1
-return
-label reduce.Else0
-push argument 1
-push constant 0
-add
-pop pointer 1
-push that 0
-push argument 1
-push constant 1
-add
-pop pointer 1
-push that 0
-eq
-push argument 1
-push constant 0
-add
-pop pointer 1
-push that 0
-push constant 64
-gt
-and
-not
-if-goto reduce.Else1
-push argument 2
-not
-if-goto reduce.Else1.Else0
-push argument 1
-push constant 0
-add
-pop pointer 1
-push that 0
-push constant 1
-add
-push argument 1
-push constant 0
-add
-pop pointer 1
-pop that 0
-push argument 1
-push constant 2
-add
-pop pointer 1
-push that 0
-push argument 1
-push constant 1
-add
-pop pointer 1
-pop that 0
-push argument 1
-push constant 3
-add
-pop pointer 1
-push that 0
-push argument 1
-push constant 2
-add
-pop pointer 1
-pop that 0
-push constant 32
-push argument 1
-push constant 3
-add
-pop pointer 1
-pop that 0
-goto reduce.Else1.Endif0
-label reduce.Else1.Else0
-push argument 1
-push constant 1
-add
-pop pointer 1
-push that 0
-push constant 1
-add
-push argument 1
-push constant 1
-add
-pop pointer 1
-pop that 0
-push constant 32
-push argument 1
-push constant 0
-add
-pop pointer 1
-pop that 0
-label reduce.Else1.Endif0
-push argument 1
-return
-label reduce.Else1
-push argument 1
-push constant 2
-add
-pop pointer 1
-push that 0
-push argument 1
-push constant 3
-add
-pop pointer 1
-push that 0
-eq
-push argument 1
-push constant 2
-add
-pop pointer 1
-push that 0
-push constant 64
-gt
-and
-not
-if-goto reduce.Else2
-push argument 2
-not
-if-goto reduce.Else2.Else0
-push argument 1
-push constant 2
-add
-pop pointer 1
-push that 0
-push constant 1
-add
-push argument 1
-push constant 2
-add
-pop pointer 1
-pop that 0
-push constant 32
-push argument 1
-push constant 3
-add
-pop pointer 1
-pop that 0
-goto reduce.Else2.Endif0
-label reduce.Else2.Else0
-push argument 1
-push constant 3
-add
-pop pointer 1
-push that 0
-push constant 1
-add
-push argument 1
-push constant 3
-add
-pop pointer 1
-pop that 0
-push argument 1
-push constant 1
-add
-pop pointer 1
-push that 0
-push argument 1
-push constant 2
-add
-pop pointer 1
-pop that 0
-push argument 1
-push constant 0
-add
-pop pointer 1
-push that 0
-push argument 1
-push constant 1
-add
-pop pointer 1
-pop that 0
-push constant 32
-push argument 1
-push constant 0
-add
-pop pointer 1
-pop that 0
-label reduce.Else2.Endif0
-push argument 1
-return
-label reduce.Else2
-push argument 1
-push constant 1
-add
-pop pointer 1
-push that 0
-push argument 1
-push constant 2
-add
-pop pointer 1
-push that 0
-eq
-push argument 1
-push constant 1
-add
-pop pointer 1
-push that 0
-push constant 64
-gt
-and
-not
-if-goto reduce.Else3
-push argument 2
-not
-if-goto reduce.Else3.Else0
-push argument 1
-push constant 1
-add
-pop pointer 1
-push that 0
-push constant 1
-add
-push argument 1
-push constant 1
-add
-pop pointer 1
-pop that 0
-push argument 1
-push constant 3
-add
-pop pointer 1
-push that 0
-push argument 1
-push constant 2
-add
-pop pointer 1
-pop that 0
-push constant 32
-push argument 1
-push constant 3
-add
-pop pointer 1
-pop that 0
-goto reduce.Else3.Endif0
-label reduce.Else3.Else0
-push argument 1
-push constant 2
-add
-pop pointer 1
-push that 0
-push constant 1
-add
-push argument 1
-push constant 2
-add
-pop pointer 1
-pop that 0
-push argument 1
-push constant 0
-add
-pop pointer 1
-push that 0
-push argument 1
-push constant 1
-add
-pop pointer 1
-pop that 0
-push constant 32
-push argument 1
-push constant 0
-add
-pop pointer 1
-pop that 0
-label reduce.Else3.Endif0
-push argument 1
-return
-label reduce.Else3
-push argument 1
-return
-function Board.addTile 5
-push argument 0
-pop pointer 0
-push this 2
-push constant 25173
-call Math.multiply 2
-push constant 13849
-add
-pop this 2
-push this 2
-push constant 0
-lt
-not
-if-goto addTile.Else0
-push this 2
-neg
-pop this 2
-label addTile.Else0
-push this 2
-push this 2
-push constant 2
-call Math.divide 2
-push constant 2
-call Math.multiply 2
-sub
-push constant 0
-eq
-not
-if-goto addTile.Else1
-push constant 1
-pop local 3
-goto addTile.Endif1
-label addTile.Else1
-push constant 1
-neg
-pop local 3
-label addTile.Endif1
-push this 2
-push this 2
-push constant 16
-call Math.divide 2
-push constant 16
-call Math.multiply 2
-sub
-pop this 2
-push this 2
-push constant 4
-call Math.divide 2
-pop local 1
-push this 2
-push constant 4
-push local 1
-call Math.multiply 2
-sub
-pop local 2
-push this 0
-push local 1
-add
-pop pointer 1
-push that 0
-pop local 0
-push constant 65
-pop local 4
-label addTile.While2
-push local 0
-push local 2
-add
-pop pointer 1
-push that 0
-push constant 64
-gt
-not
-if-goto addTile.EndWhile2
-push this 2
-push local 3
-add
-pop this 2
-push this 2
-push constant 0
-lt
-not
-if-goto addTile.While2.Else0
-push constant 15
-pop this 2
-label addTile.While2.Else0
-push this 2
-push this 2
-push constant 16
-call Math.divide 2
-push constant 16
-call Math.multiply 2
-sub
-pop this 2
-push this 2
-push constant 4
-call Math.divide 2
-pop local 1
-push this 2
-push constant 4
-push local 1
-call Math.multiply 2
-sub
-pop local 2
-push this 0
-push local 1
-add
-pop pointer 1
-push that 0
-pop local 0
-push constant 131
-push local 4
-sub
-pop local 4
-goto addTile.While2
-label addTile.EndWhile2
-push local 4
-push local 0
-push local 2
-add
-pop pointer 1
-pop that 0
-push constant 0
-return
-function Board.transform 4
-push argument 0
-pop pointer 0
-push argument 1
-push constant 0
-eq
-push argument 1
-push constant 1
-eq
-or
-not
-if-goto transform.Else0
-push constant 1
-neg
-pop local 1
-goto transform.Endif0
-label transform.Else0
-push constant 0
-pop local 1
-label transform.Endif0
-push argument 1
-push constant 0
-eq
-push argument 1
-push constant 2
-eq
-or
-not
-if-goto transform.Else1
-push constant 1
-neg
-pop local 0
-goto transform.Endif1
-label transform.Else1
-push constant 0
-pop local 0
-label transform.Endif1
-push pointer 0
-push local 0
-call Board.getStrips 2
-pop local 2
-push constant 0
-pop local 3
-label transform.While2
-push local 3
-push constant 4
-lt
-not
-if-goto transform.EndWhile2
-push pointer 0
-push pointer 0
-push local 2
-push local 3
-add
-pop pointer 1
-push that 0
-push local 1
-call Board.align 3
-push local 1
-call Board.reduce 3
-push local 2
-push local 3
-add
-pop pointer 1
-pop that 0
-push local 3
-push constant 1
-add
-pop local 3
-goto transform.While2
-label transform.EndWhile2
-push pointer 0
-push local 2
-push local 0
-call Board.arrange 3
-pop temp 0
-push constant 0
-return
-function Board.next 0
-push argument 0
-pop pointer 0
-push this 1
-push constant 1
-add
-pop this 1
-push pointer 0
-push argument 1
-call Board.transform 2
-pop temp 0
-push pointer 0
-call Board.addTile 1
-pop temp 0
-push constant 0
-return
-function Board.draw 5
-push argument 0
-pop pointer 0
-push constant 9
-pop local 0
-push constant 30
-pop local 1
-push local 0
-push constant 1
-sub
-push local 1
-push constant 1
-sub
-call Output.moveCursor 2
-pop temp 0
-push constant 6
-call String.new 1
-push constant 43
-call String.appendChar 2
-push constant 45
-call String.appendChar 2
-push constant 45
-call String.appendChar 2
-push constant 45
-call String.appendChar 2
-push constant 45
-call String.appendChar 2
-push constant 43
-call String.appendChar 2
-call Output.printString 1
-pop temp 0
-push local 0
-push constant 4
-add
-push local 1
-push constant 1
-sub
-call Output.moveCursor 2
-pop temp 0
-push constant 6
-call String.new 1
-push constant 43
-call String.appendChar 2
-push constant 45
-call String.appendChar 2
-push constant 45
-call String.appendChar 2
-push constant 45
-call String.appendChar 2
-push constant 45
-call String.appendChar 2
-push constant 43
-call String.appendChar 2
-call Output.printString 1
-pop temp 0
-push constant 0
-pop local 2
-label draw.While0
-push local 2
-push constant 4
-lt
-not
-if-goto draw.EndWhile0
-push constant 0
-pop local 3
-push local 0
-push local 2
-add
-push local 1
-push constant 1
-sub
-call Output.moveCursor 2
-pop temp 0
-push constant 1
-call String.new 1
-push constant 124
-call String.appendChar 2
-call Output.printString 1
-pop temp 0
-push this 0
-push local 2
-add
-pop pointer 1
-push that 0
-pop local 4
-label draw.While0.While0
-push local 3
-push constant 4
-lt
-not
-if-goto draw.While0.EndWhile0
-push local 4
-push local 3
-add
-pop pointer 1
-push that 0
-call Output.printChar 1
-pop temp 0
-push local 3
-push constant 1
-add
-pop local 3
-goto draw.While0.While0
-label draw.While0.EndWhile0
-push constant 1
-call String.new 1
-push constant 124
-call String.appendChar 2
-call Output.printString 1
-pop temp 0
-push local 2
-push constant 1
-add
-pop local 2
-goto draw.While0
-label draw.EndWhile0
-push local 0
-push constant 6
-add
-push local 1
-push constant 2
-sub
-call Output.moveCursor 2
-pop temp 0
-push constant 6
-call String.new 1
-push constant 84
-call String.appendChar 2
-push constant 117
-call String.appendChar 2
-push constant 114
-call String.appendChar 2
-push constant 110
-call String.appendChar 2
-push constant 58
-call String.appendChar 2
-push constant 32
-call String.appendChar 2
-call Output.printString 1
-pop temp 0
-push this 1
-call Output.printInt 1
-pop temp 0
-push constant 0
-return
-function Board.dispose 0
-push argument 0
-pop pointer 0
-push pointer 0
-call Memory.deAlloc 1
-pop temp 0
-push constant 0
-return