summaryrefslogtreecommitdiff
path: root/localrepo/2048-game-20230809.356.tar
blob: 2efa39436993002e9a62f7165345c31a2bea0a76 (plain)
ofshex dumpascii
0000 32 30 34 38 2d 67 61 6d 65 2d 32 30 32 33 30 38 30 39 2e 33 35 36 2f 00 00 00 00 00 00 00 00 00 2048-game-20230809.356/.........
0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0060 00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000755.0000000.0000000.0000
0080 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 32 32 34 32 00 20 35 00 00 00 0000000.00000000000.012242..5...
00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0100 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
0120 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0200 32 30 34 38 2d 67 61 6d 65 2d 32 30 32 33 30 38 30 39 2e 33 35 36 2f 32 30 34 38 2d 67 61 6d 65 2048-game-20230809.356/2048-game
0220 2d 70 6b 67 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -pkg.el.........................
0240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0260 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
0280 30 30 30 30 36 32 33 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 36 35 30 00 20 30 00 00 00 0000623.00000000000.014650..0...
02a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0300 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
0320 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
0340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0400 28 64 65 66 69 6e 65 2d 70 61 63 6b 61 67 65 20 22 32 30 34 38 2d 67 61 6d 65 22 20 22 32 30 32 (define-package."2048-game"."202
0420 33 30 38 30 39 2e 33 35 36 22 20 22 70 6c 61 79 20 32 30 34 38 20 69 6e 20 45 6d 61 63 73 22 0a 30809.356"."play.2048.in.Emacs".
0440 20 20 27 28 28 65 6d 61 63 73 20 22 32 34 2e 33 22 29 29 0a 20 20 3a 63 6f 6d 6d 69 74 20 22 38 ..'((emacs."24.3"))...:commit."8
0460 31 37 35 63 61 35 31 39 31 31 37 35 31 38 33 62 39 35 32 32 31 34 31 64 63 62 35 35 64 33 30 36 175ca5191175183b9522141dcb55d306
0480 37 33 64 32 33 32 33 22 20 3a 61 75 74 68 6f 72 73 0a 20 20 27 28 28 22 5a 61 63 68 61 72 79 20 73d2323".:authors...'(("Zachary.
04a0 4b 61 6e 66 65 72 22 20 2e 20 22 7a 6b 61 6e 66 65 72 40 67 6d 61 69 6c 2e 63 6f 6d 22 29 29 0a Kanfer"..."zkanfer@gmail.com")).
04c0 20 20 3a 6d 61 69 6e 74 61 69 6e 65 72 73 0a 20 20 27 28 28 22 5a 61 63 68 61 72 79 20 4b 61 6e ..:maintainers...'(("Zachary.Kan
04e0 66 65 72 22 20 2e 20 22 7a 6b 61 6e 66 65 72 40 67 6d 61 69 6c 2e 63 6f 6d 22 29 29 0a 20 20 3a fer"..."zkanfer@gmail.com"))...:
0500 6d 61 69 6e 74 61 69 6e 65 72 0a 20 20 27 28 22 5a 61 63 68 61 72 79 20 4b 61 6e 66 65 72 22 20 maintainer...'("Zachary.Kanfer".
0520 2e 20 22 7a 6b 61 6e 66 65 72 40 67 6d 61 69 6c 2e 63 6f 6d 22 29 0a 20 20 3a 75 72 6c 20 22 68 .."zkanfer@gmail.com")...:url."h
0540 74 74 70 73 3a 2f 2f 68 67 2e 73 72 2e 68 74 2f 7e 7a 63 6b 2f 67 61 6d 65 2d 32 30 34 38 22 29 ttps://hg.sr.ht/~zck/game-2048")
0560 0a 3b 3b 20 4c 6f 63 61 6c 20 56 61 72 69 61 62 6c 65 73 3a 0a 3b 3b 20 6e 6f 2d 62 79 74 65 2d .;;.Local.Variables:.;;.no-byte-
0580 63 6f 6d 70 69 6c 65 3a 20 74 0a 3b 3b 20 45 6e 64 3a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 compile:.t.;;.End:..............
05a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
05c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
05e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0600 32 30 34 38 2d 67 61 6d 65 2d 32 30 32 33 30 38 30 39 2e 33 35 36 2f 32 30 34 38 2d 67 61 6d 65 2048-game-20230809.356/2048-game
0620 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .el.............................
0640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0660 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
0680 30 30 35 31 35 32 32 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 30 37 35 00 20 30 00 00 00 0051522.00000000000.014075..0...
06a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
06c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
06e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0700 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
0720 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
0740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
07a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
07c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
07e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0800 3b 3b 3b 20 32 30 34 38 2d 67 61 6d 65 2e 65 6c 20 2d 2d 2d 20 70 6c 61 79 20 32 30 34 38 20 69 ;;;.2048-game.el.---.play.2048.i
0820 6e 20 45 6d 61 63 73 0a 0a 3b 3b 20 43 6f 70 79 72 69 67 68 74 20 32 30 31 34 20 5a 61 63 68 61 n.Emacs..;;.Copyright.2014.Zacha
0840 72 79 20 4b 61 6e 66 65 72 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 5a 61 63 68 61 72 79 20 4b 61 ry.Kanfer..;;.Author:.Zachary.Ka
0860 6e 66 65 72 20 3c 7a 6b 61 6e 66 65 72 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 3b 3b 20 56 65 72 73 nfer.<zkanfer@gmail.com>.;;.Vers
0880 69 6f 6e 3a 20 32 30 32 33 2e 38 2e 38 2e 31 0a 3b 3b 20 55 52 4c 3a 20 68 74 74 70 73 3a 2f 2f ion:.2023.8.8.1.;;.URL:.https://
08a0 68 67 2e 73 72 2e 68 74 2f 7e 7a 63 6b 2f 67 61 6d 65 2d 32 30 34 38 0a 0a 3b 3b 20 50 61 63 6b hg.sr.ht/~zck/game-2048..;;.Pack
08c0 61 67 65 2d 52 65 71 75 69 72 65 73 3a 20 28 28 65 6d 61 63 73 20 22 32 34 2e 33 22 29 29 0a 0a age-Requires:.((emacs."24.3"))..
08e0 3b 3b 20 54 68 69 73 20 66 69 6c 65 20 69 73 20 6e 6f 74 20 70 61 72 74 20 6f 66 20 47 4e 55 20 ;;.This.file.is.not.part.of.GNU.
0900 45 6d 61 63 73 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 Emacs..;;.This.program.is.free.s
0920 6f 66 74 77 61 72 65 3a 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 oftware:.you.can.redistribute.it
0940 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 .and/or.modify.;;.it.under.the.t
0960 65 72 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c erms.of.the.GNU.General.Public.L
0980 69 63 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 icense.as.published.by.;;.the.Fr
09a0 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 ee.Software.Foundation,.either.v
09c0 65 72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 ersion.3.of.the.License,.or.;;.(
09e0 61 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f at.your.option).any.later.versio
0a00 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 n...;;.This.program.is.distribut
0a20 65 64 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 ed.in.the.hope.that.it.will.be.u
0a40 73 65 66 75 6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e seful,.;;.but.WITHOUT.ANY.WARRAN
0a60 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 TY;.without.even.the.implied.war
0a80 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 ranty.of.;;.MERCHANTABILITY.or.F
0aa0 49 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e ITNESS.FOR.A.PARTICULAR.PURPOSE.
0ac0 20 20 53 65 65 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 ..See.the.;;.GNU.General.Public.
0ae0 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f License.for.more.details...;;.Yo
0b00 75 20 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 u.should.have.received.a.copy.of
0b20 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a .the.GNU.General.Public.License.
0b40 3b 3b 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 ;;.along.with.this.program...If.
0b60 6e 6f 74 2c 20 73 65 65 20 3c 68 74 74 70 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 not,.see.<http://www.gnu.org/lic
0b80 65 6e 73 65 73 2f 3e 2e 0a 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 enses/>....;;;.Commentary:..;;.T
0ba0 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e his.program.is.an.implementation
0bc0 20 6f 66 20 32 30 34 38 20 66 6f 72 20 45 6d 61 63 73 2e 0a 3b 3b 20 49 74 73 20 73 6f 75 72 63 .of.2048.for.Emacs..;;.Its.sourc
0be0 65 20 72 65 70 6f 73 69 74 6f 72 79 20 69 73 20 68 74 74 70 73 3a 2f 2f 68 67 2e 73 72 2e 68 74 e.repository.is.https://hg.sr.ht
0c00 2f 7e 7a 63 6b 2f 67 61 6d 65 2d 32 30 34 38 0a 0a 3b 3b 20 54 6f 20 62 65 67 69 6e 20 70 6c 61 /~zck/game-2048..;;.To.begin.pla
0c20 79 69 6e 67 2c 20 63 61 6c 6c 20 60 4d 2d 78 20 32 30 34 38 2d 67 61 6d 65 60 2c 20 74 68 65 6e ying,.call.`M-x.2048-game`,.then
0c40 20 75 73 65 20 74 68 65 20 61 72 72 6f 77 20 6b 65 79 73 2c 0a 3b 3b 20 70 2f 6e 2f 62 2f 66 2c .use.the.arrow.keys,.;;.p/n/b/f,
0c60 20 6f 72 20 43 2d 70 2f 43 2d 6e 2f 43 2d 62 2f 43 2d 66 20 74 6f 20 6d 6f 76 65 20 74 68 65 20 .or.C-p/C-n/C-b/C-f.to.move.the.
0c80 74 69 6c 65 73 20 61 72 6f 75 6e 64 2e 0a 0a 3b 3b 20 57 68 65 6e 65 76 65 72 20 79 6f 75 20 6d tiles.around...;;.Whenever.you.m
0ca0 6f 76 65 20 74 68 65 20 62 6f 61 72 64 2c 20 61 6c 6c 20 74 69 6c 65 73 20 73 6c 69 64 65 20 61 ove.the.board,.all.tiles.slide.a
0cc0 73 20 66 61 72 20 74 6f 20 74 68 61 74 20 64 69 72 65 63 74 69 6f 6e 0a 3b 3b 20 61 73 20 74 68 s.far.to.that.direction.;;.as.th
0ce0 65 79 20 63 61 6e 20 67 6f 2e 20 20 49 66 20 61 20 74 69 6c 65 20 63 6f 6c 6c 69 64 65 73 20 77 ey.can.go...If.a.tile.collides.w
0d00 69 74 68 20 61 6e 6f 74 68 65 72 20 74 69 6c 65 20 6f 66 20 74 68 65 20 73 61 6d 65 20 76 61 6c ith.another.tile.of.the.same.val
0d20 75 65 2c 0a 3b 3b 20 74 68 65 20 74 69 6c 65 73 20 63 6f 6d 62 69 6e 65 20 69 6e 74 6f 20 61 20 ue,.;;.the.tiles.combine.into.a.
0d40 74 69 6c 65 20 77 69 74 68 20 64 6f 75 62 6c 65 20 74 68 65 20 69 6e 69 74 69 61 6c 20 76 61 6c tile.with.double.the.initial.val
0d60 75 65 2c 20 61 6e 64 20 79 6f 75 0a 3b 3b 20 67 61 69 6e 20 74 68 65 20 6e 65 77 20 74 69 6c 65 ue,.and.you.;;.gain.the.new.tile
0d80 27 73 20 76 61 6c 75 65 20 61 73 20 79 6f 75 72 20 73 63 6f 72 65 2e 0a 0a 3b 3b 20 54 68 65 20 's.value.as.your.score...;;.The.
0da0 67 6f 61 6c 20 69 73 20 74 6f 20 63 72 65 61 74 65 20 61 20 74 69 6c 65 20 77 69 74 68 20 76 61 goal.is.to.create.a.tile.with.va
0dc0 6c 75 65 20 32 30 34 38 2e 0a 0a 3b 3b 20 54 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 62 6f lue.2048...;;.The.size.of.the.bo
0de0 61 72 64 20 61 6e 64 20 67 6f 61 6c 20 76 61 6c 75 65 20 63 61 6e 20 62 65 20 63 75 73 74 6f 6d ard.and.goal.value.can.be.custom
0e00 69 7a 65 64 20 2d 2d 20 73 65 65 20 74 68 65 20 76 61 72 69 61 62 6c 65 73 0a 3b 3b 20 2a 32 30 ized.--.see.the.variables.;;.*20
0e20 34 38 2d 63 6f 6c 75 6d 6e 73 2a 2c 20 2a 32 30 34 38 2d 72 6f 77 73 2a 2c 20 61 6e 64 20 2a 32 48-columns*,.*2048-rows*,.and.*2
0e40 30 34 38 2d 76 69 63 74 6f 72 79 2d 76 61 6c 75 65 2a 2e 0a 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 048-victory-value*....;;;.Code:.
0e60 0a 28 64 65 66 69 6e 65 2d 64 65 72 69 76 65 64 2d 6d 6f 64 65 20 32 30 34 38 2d 6d 6f 64 65 20 .(define-derived-mode.2048-mode.
0e80 73 70 65 63 69 61 6c 2d 6d 6f 64 65 20 22 32 30 34 38 2d 6d 6f 64 65 22 0a 20 20 28 64 65 66 69 special-mode."2048-mode"...(defi
0ea0 6e 65 2d 6b 65 79 20 32 30 34 38 2d 6d 6f 64 65 2d 6d 61 70 20 28 6b 62 64 20 22 70 22 29 20 27 ne-key.2048-mode-map.(kbd."p").'
0ec0 32 30 34 38 2d 75 70 29 0a 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 32 30 34 38 2d 6d 6f 64 65 2048-up)...(define-key.2048-mode
0ee0 2d 6d 61 70 20 28 6b 62 64 20 22 43 2d 70 22 29 20 27 32 30 34 38 2d 75 70 29 0a 20 20 28 64 65 -map.(kbd."C-p").'2048-up)...(de
0f00 66 69 6e 65 2d 6b 65 79 20 32 30 34 38 2d 6d 6f 64 65 2d 6d 61 70 20 28 6b 62 64 20 22 3c 75 70 fine-key.2048-mode-map.(kbd."<up
0f20 3e 22 29 20 27 32 30 34 38 2d 75 70 29 0a 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 32 30 34 38 >").'2048-up)...(define-key.2048
0f40 2d 6d 6f 64 65 2d 6d 61 70 20 28 6b 62 64 20 22 6e 22 29 20 27 32 30 34 38 2d 64 6f 77 6e 29 0a -mode-map.(kbd."n").'2048-down).
0f60 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 32 30 34 38 2d 6d 6f 64 65 2d 6d 61 70 20 28 6b 62 64 ..(define-key.2048-mode-map.(kbd
0f80 20 22 43 2d 6e 22 29 20 27 32 30 34 38 2d 64 6f 77 6e 29 0a 20 20 28 64 65 66 69 6e 65 2d 6b 65 ."C-n").'2048-down)...(define-ke
0fa0 79 20 32 30 34 38 2d 6d 6f 64 65 2d 6d 61 70 20 28 6b 62 64 20 22 3c 64 6f 77 6e 3e 22 29 20 27 y.2048-mode-map.(kbd."<down>").'
0fc0 32 30 34 38 2d 64 6f 77 6e 29 0a 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 32 30 34 38 2d 6d 6f 2048-down)...(define-key.2048-mo
0fe0 64 65 2d 6d 61 70 20 28 6b 62 64 20 22 62 22 29 20 27 32 30 34 38 2d 6c 65 66 74 29 0a 20 20 28 de-map.(kbd."b").'2048-left)...(
1000 64 65 66 69 6e 65 2d 6b 65 79 20 32 30 34 38 2d 6d 6f 64 65 2d 6d 61 70 20 28 6b 62 64 20 22 43 define-key.2048-mode-map.(kbd."C
1020 2d 62 22 29 20 27 32 30 34 38 2d 6c 65 66 74 29 0a 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 32 -b").'2048-left)...(define-key.2
1040 30 34 38 2d 6d 6f 64 65 2d 6d 61 70 20 28 6b 62 64 20 22 3c 6c 65 66 74 3e 22 29 20 27 32 30 34 048-mode-map.(kbd."<left>").'204
1060 38 2d 6c 65 66 74 29 0a 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 32 30 34 38 2d 6d 6f 64 65 2d 8-left)...(define-key.2048-mode-
1080 6d 61 70 20 28 6b 62 64 20 22 66 22 29 20 27 32 30 34 38 2d 72 69 67 68 74 29 0a 20 20 28 64 65 map.(kbd."f").'2048-right)...(de
10a0 66 69 6e 65 2d 6b 65 79 20 32 30 34 38 2d 6d 6f 64 65 2d 6d 61 70 20 28 6b 62 64 20 22 43 2d 66 fine-key.2048-mode-map.(kbd."C-f
10c0 22 29 20 27 32 30 34 38 2d 72 69 67 68 74 29 0a 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 32 30 ").'2048-right)...(define-key.20
10e0 34 38 2d 6d 6f 64 65 2d 6d 61 70 20 28 6b 62 64 20 22 3c 72 69 67 68 74 3e 22 29 20 27 32 30 34 48-mode-map.(kbd."<right>").'204
1100 38 2d 72 69 67 68 74 29 0a 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 32 30 34 38 2d 6d 6f 64 65 8-right)...(define-key.2048-mode
1120 2d 6d 61 70 20 28 6b 62 64 20 22 72 22 29 20 27 32 30 34 38 2d 72 61 6e 64 6f 6d 2d 6d 6f 76 65 -map.(kbd."r").'2048-random-move
1140 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 32 30 34 38 2d 67 ))..;;;###autoload.(defun.2048-g
1160 61 6d 65 20 28 29 20 22 53 74 61 72 74 20 70 6c 61 79 69 6e 67 20 32 30 34 38 2e 22 0a 20 20 28 ame.()."Start.playing.2048."...(
1180 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 73 77 69 74 63 68 2d 74 6f 2d 62 75 66 66 65 72 interactive)...(switch-to-buffer
11a0 20 22 32 30 34 38 22 29 0a 20 20 28 62 75 66 66 65 72 2d 64 69 73 61 62 6c 65 2d 75 6e 64 6f 20 ."2048")...(buffer-disable-undo.
11c0 22 32 30 34 38 22 29 0a 20 20 28 32 30 34 38 2d 6d 6f 64 65 29 0a 20 20 28 32 30 34 38 2d 69 6e "2048")...(2048-mode)...(2048-in
11e0 69 74 29 29 0a 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 0a 0a 28 64 65 66 76 61 72 it))..(require.'cl-lib)..(defvar
1200 20 2a 32 30 34 38 2d 62 6f 61 72 64 2a 20 6e 69 6c 0a 20 20 22 54 68 65 20 62 6f 61 72 64 20 69 .*2048-board*.nil..."The.board.i
1220 74 73 65 6c 66 2e 0a 0a 49 66 20 61 20 6e 75 6d 62 65 72 20 69 73 20 69 6e 20 74 68 65 20 73 71 tself...If.a.number.is.in.the.sq
1240 75 61 72 65 2c 20 74 68 65 20 6e 75 6d 62 65 72 20 69 73 20 73 74 6f 72 65 64 2e 20 20 4f 74 68 uare,.the.number.is.stored...Oth
1260 65 72 77 69 73 65 2c 20 30 20 69 73 20 73 74 6f 72 65 64 2e 0a 0a 49 6e 73 74 65 61 64 20 6f 66 erwise,.0.is.stored...Instead.of
1280 20 61 63 63 65 73 73 69 6e 67 20 74 68 69 73 20 64 69 72 65 63 74 6c 79 2c 20 75 73 65 20 32 30 .accessing.this.directly,.use.20
12a0 34 38 2d 67 65 74 2d 63 65 6c 6c 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 2a 32 30 34 38 2d 63 6f 48-get-cell.")..(defvar.*2048-co
12c0 6d 62 69 6e 65 73 2d 74 68 69 73 2d 6d 6f 76 65 2a 20 6e 69 6c 0a 20 20 22 54 68 69 73 20 73 74 mbines-this-move*.nil..."This.st
12e0 6f 72 65 73 2c 20 66 6f 72 20 65 61 63 68 20 63 65 6c 6c 20 69 6e 20 74 68 65 20 62 6f 61 72 64 ores,.for.each.cell.in.the.board
1300 2c 20 77 68 65 74 68 65 72 20 74 68 65 20 6e 75 6d 62 65 72 20 69 6e 20 69 74 20 77 61 73 20 67 ,.whether.the.number.in.it.was.g
1320 65 6e 65 72 61 74 65 64 20 74 68 69 73 20 74 75 72 6e 20 62 79 20 74 77 6f 20 6e 75 6d 62 65 72 enerated.this.turn.by.two.number
1340 73 20 63 6f 6d 62 69 6e 69 6e 67 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 2a 32 30 34 38 2d 63 6f s.combining.")..(defvar.*2048-co
1360 6c 75 6d 6e 73 2a 20 34 0a 20 20 22 54 68 65 20 77 69 64 74 68 20 6f 66 20 74 68 65 20 62 6f 61 lumns*.4..."The.width.of.the.boa
1380 72 64 2e 20 20 49 74 20 63 6f 75 6c 64 20 62 65 20 63 75 73 74 6f 6d 69 7a 65 64 2c 20 69 66 20 rd...It.could.be.customized,.if.
13a0 79 6f 75 20 77 61 6e 74 65 64 20 74 6f 20 6d 61 6b 65 20 74 68 65 20 67 61 6d 65 20 76 65 72 79 you.wanted.to.make.the.game.very
13c0 20 76 65 72 79 20 68 61 72 64 2c 20 6f 72 20 76 65 72 79 20 76 65 72 79 20 65 61 73 79 2e 22 29 .very.hard,.or.very.very.easy.")
13e0 0a 0a 28 64 65 66 76 61 72 20 2a 32 30 34 38 2d 72 6f 77 73 2a 20 34 0a 20 20 22 54 68 65 20 68 ..(defvar.*2048-rows*.4..."The.h
1400 65 69 67 68 74 20 6f 66 20 74 68 65 20 62 6f 61 72 64 2e 20 20 49 74 20 63 6f 75 6c 64 20 62 65 eight.of.the.board...It.could.be
1420 20 63 75 73 74 6f 6d 69 7a 65 64 2c 20 69 66 20 79 6f 75 20 77 61 6e 74 65 64 20 74 6f 20 6d 61 .customized,.if.you.wanted.to.ma
1440 6b 65 20 74 68 65 20 67 61 6d 65 20 76 65 72 79 20 76 65 72 79 20 74 61 6c 6c 2c 20 6f 72 20 76 ke.the.game.very.very.tall,.or.v
1460 65 72 79 20 76 65 72 79 20 73 68 6f 72 74 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 2a 32 30 34 38 ery.very.short.")..(defvar.*2048
1480 2d 70 6f 73 73 69 62 6c 65 2d 76 61 6c 75 65 73 2d 74 6f 2d 69 6e 73 65 72 74 2a 20 28 63 6f 6e -possible-values-to-insert*.(con
14a0 73 20 34 20 28 6d 61 6b 65 2d 6c 69 73 74 20 39 20 32 29 29 0a 20 20 22 54 6f 20 67 65 74 20 74 s.4.(make-list.9.2))..."To.get.t
14c0 68 65 20 76 61 6c 75 65 20 6f 66 20 61 20 6e 65 77 20 65 6c 65 6d 65 6e 74 2c 20 72 61 6e 64 6f he.value.of.a.new.element,.rando
14e0 6d 6c 79 20 63 68 6f 6f 73 65 20 61 20 6e 75 6d 62 65 72 20 66 72 6f 6d 20 74 68 69 73 20 73 65 mly.choose.a.number.from.this.se
1500 71 75 65 6e 63 65 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 2a 32 30 34 38 2d 76 69 63 74 6f 72 79 quence.")..(defvar.*2048-victory
1520 2d 76 61 6c 75 65 2a 20 6e 69 6c 0a 20 20 22 57 68 65 6e 20 74 68 69 73 20 6e 75 6d 62 65 72 20 -value*.nil..."When.this.number.
1540 69 73 20 72 65 61 63 68 65 64 2c 20 74 68 65 20 75 73 65 72 20 77 69 6e 73 21 20 59 61 79 21 22 is.reached,.the.user.wins!.Yay!"
1560 29 0a 0a 28 64 65 66 76 61 72 20 2a 32 30 34 38 2d 64 65 66 61 75 6c 74 2d 76 69 63 74 6f 72 79 )..(defvar.*2048-default-victory
1580 2d 76 61 6c 75 65 2a 20 32 30 34 38 0a 20 20 22 57 68 65 6e 20 74 68 65 20 67 61 6d 65 20 73 74 -value*.2048..."When.the.game.st
15a0 61 72 74 73 2c 20 72 65 73 65 74 20 2a 32 30 34 38 2d 76 69 63 74 6f 72 79 2d 76 61 6c 75 65 2a arts,.reset.*2048-victory-value*
15c0 20 74 6f 20 74 68 69 73 20 76 61 6c 75 65 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 2a 32 30 34 38 .to.this.value.")..(defvar.*2048
15e0 2d 64 65 62 75 67 2a 20 6e 69 6c 0a 20 20 22 57 68 65 6e 20 27 74 2c 20 70 72 69 6e 74 20 64 65 -debug*.nil..."When.'t,.print.de
1600 62 75 67 67 69 6e 67 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 22 29 0a 0a 28 64 65 66 63 6f 6e 73 bugging.information.")..(defcons
1620 74 20 2a 32 30 34 38 2d 6e 75 6d 62 65 72 73 2a 20 27 28 30 20 32 20 34 20 38 20 31 36 20 33 32 t.*2048-numbers*.'(0.2.4.8.16.32
1640 20 36 34 20 31 32 38 20 32 35 36 20 35 31 32 20 31 30 32 34 20 32 30 34 38 29 29 0a 0a 28 64 65 .64.128.256.512.1024.2048))..(de
1660 66 76 61 72 20 2a 32 30 34 38 2d 73 63 6f 72 65 2a 20 6e 69 6c 0a 20 20 22 43 75 72 72 65 6e 74 fvar.*2048-score*.nil..."Current
1680 20 73 63 6f 72 65 20 69 6e 20 74 68 65 20 67 61 6d 65 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 2a .score.in.the.game.")..(defvar.*
16a0 32 30 34 38 2d 68 69 2d 74 69 6c 65 2a 20 6e 69 6c 0a 20 20 22 43 75 72 72 65 6e 74 20 68 69 67 2048-hi-tile*.nil..."Current.hig
16c0 68 65 73 74 2d 6e 75 6d 62 65 72 20 74 69 6c 65 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 2a 32 30 hest-number.tile.")..(defvar.*20
16e0 34 38 2d 68 69 73 74 6f 72 79 2a 20 6e 69 6c 0a 20 20 22 53 63 6f 72 65 20 68 69 73 74 6f 72 79 48-history*.nil..."Score.history
1700 20 69 6e 20 74 68 69 73 20 45 6d 61 63 73 20 73 65 73 73 69 6f 6e 2e 20 20 45 61 63 68 20 65 6c .in.this.Emacs.session...Each.el
1720 65 6d 65 6e 74 20 69 73 20 28 53 43 4f 52 45 20 48 49 2d 54 49 4c 45 20 54 49 4d 45 29 2e 22 29 ement.is.(SCORE.HI-TILE.TIME).")
1740 0a 0a 28 64 65 66 76 61 72 20 2a 32 30 34 38 2d 68 69 73 74 6f 72 79 2d 73 69 7a 65 2a 20 31 30 ..(defvar.*2048-history-size*.10
1760 0a 20 20 22 4b 65 65 70 20 74 68 69 73 20 6d 61 6e 79 20 69 74 65 6d 73 20 69 6e 20 74 68 65 20 ..."Keep.this.many.items.in.the.
1780 68 69 73 74 6f 72 79 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 2a 32 30 34 38 2d 67 61 6d 65 2d 68 history.")..(defvar.*2048-game-h
17a0 61 73 2d 62 65 65 6e 2d 61 64 64 65 64 2d 74 6f 2d 68 69 73 74 6f 72 79 2a 20 6e 69 6c 0a 20 20 as-been-added-to-history*.nil...
17c0 22 57 68 65 74 68 65 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 67 61 6d 65 20 68 61 73 20 62 65 "Whether.the.current.game.has.be
17e0 65 6e 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 68 69 73 74 6f 72 79 20 79 65 74 2e 0a 0a 52 69 en.added.to.the.history.yet...Ri
1800 67 68 74 20 6e 6f 77 2c 20 69 74 27 73 20 6f 6e 6c 79 20 66 6f 72 20 75 73 65 20 77 68 65 6e 20 ght.now,.it's.only.for.use.when.
1820 74 68 65 20 67 61 6d 65 20 68 61 73 20 62 65 65 6e 20 6c 6f 73 74 2e 20 20 53 69 6e 63 65 0a 74 the.game.has.been.lost...Since.t
1840 68 65 20 75 73 65 72 20 63 61 6e 20 63 68 6f 6f 73 65 20 74 6f 20 6e 6f 74 20 73 74 61 72 74 20 he.user.can.choose.to.not.start.
1860 61 20 6e 65 77 20 67 61 6d 65 2c 20 77 65 20 77 61 6e 74 20 74 6f 20 61 64 64 20 74 68 65 0a 73 a.new.game,.we.want.to.add.the.s
1880 63 6f 72 65 20 74 6f 20 74 68 65 20 68 69 73 74 6f 72 79 20 74 68 65 20 66 69 72 73 74 20 74 69 core.to.the.history.the.first.ti
18a0 6d 65 20 74 68 65 20 67 61 6d 65 20 69 73 20 6c 6f 73 74 2c 20 62 75 74 20 6e 6f 74 20 61 6e 79 me.the.game.is.lost,.but.not.any
18c0 0a 6f 74 68 65 72 20 74 69 6d 65 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 2a 32 30 34 38 2d 67 61 .other.time.")..(defvar.*2048-ga
18e0 6d 65 2d 65 70 6f 63 68 2a 20 6e 69 6c 0a 20 20 22 54 68 65 20 74 69 6d 65 20 74 68 65 20 63 75 me-epoch*.nil..."The.time.the.cu
1900 72 72 65 6e 74 20 67 61 6d 65 20 73 74 61 72 74 65 64 2e 22 29 0a 0a 3b 3b 20 54 68 65 73 65 20 rrent.game.started.")..;;.These.
1920 61 72 65 20 70 72 65 66 69 78 65 64 20 77 69 74 68 20 22 74 77 65 6e 74 79 66 6f 72 74 79 65 69 are.prefixed.with."twentyfortyei
1940 67 68 74 2d 66 61 63 65 2d 22 2c 20 6e 6f 74 20 22 32 30 34 38 2d 66 61 63 65 22 0a 3b 3b 20 62 ght-face-",.not."2048-face".;;.b
1960 65 63 61 75 73 65 20 66 61 63 65 20 6e 61 6d 65 73 20 73 74 61 72 74 69 6e 67 20 77 69 74 68 20 ecause.face.names.starting.with.
1980 6e 75 6d 62 65 72 73 20 62 72 65 61 6b 20 68 74 6d 6c 66 6f 6e 74 69 66 79 2d 62 75 66 66 65 72 numbers.break.htmlfontify-buffer
19a0 2c 0a 3b 3b 20 61 73 20 43 53 53 20 63 6c 61 73 73 65 73 20 62 65 67 69 6e 6e 69 6e 67 20 77 69 ,.;;.as.CSS.classes.beginning.wi
19c0 74 68 20 6e 75 6d 62 65 72 73 20 61 72 65 20 69 67 6e 6f 72 65 64 2e 0a 28 64 65 66 66 61 63 65 th.numbers.are.ignored..(defface
19e0 20 74 77 65 6e 74 79 66 6f 72 74 79 65 69 67 68 74 2d 66 61 63 65 2d 32 20 20 20 20 27 28 28 74 .twentyfortyeight-face-2....'((t
1a00 20 2e 20 28 3a 62 61 63 6b 67 72 6f 75 6e 64 20 22 6b 68 61 6b 69 22 20 3a 66 6f 72 65 67 72 6f ...(:background."khaki".:foregro
1a20 75 6e 64 20 22 62 6c 61 63 6b 22 29 29 29 20 22 46 61 63 65 20 66 6f 72 20 74 68 65 20 74 69 6c und."black")))."Face.for.the.til
1a40 65 20 32 2e 22 20 3a 67 72 6f 75 70 20 27 32 30 34 38 2d 66 61 63 65 73 29 0a 28 64 65 66 66 61 e.2.".:group.'2048-faces).(deffa
1a60 63 65 20 74 77 65 6e 74 79 66 6f 72 74 79 65 69 67 68 74 2d 66 61 63 65 2d 34 20 20 20 20 27 28 ce.twentyfortyeight-face-4....'(
1a80 28 74 20 2e 20 28 3a 62 61 63 6b 67 72 6f 75 6e 64 20 22 62 75 72 6c 79 77 6f 6f 64 22 20 3a 66 (t...(:background."burlywood".:f
1aa0 6f 72 65 67 72 6f 75 6e 64 20 22 62 6c 61 63 6b 22 29 29 29 20 22 46 61 63 65 20 66 6f 72 20 74 oreground."black")))."Face.for.t
1ac0 68 65 20 74 69 6c 65 20 34 2e 22 20 3a 67 72 6f 75 70 20 27 32 30 34 38 2d 66 61 63 65 73 29 0a he.tile.4.".:group.'2048-faces).
1ae0 28 64 65 66 66 61 63 65 20 74 77 65 6e 74 79 66 6f 72 74 79 65 69 67 68 74 2d 66 61 63 65 2d 38 (defface.twentyfortyeight-face-8
1b00 20 20 20 20 27 28 28 74 20 2e 20 28 3a 62 61 63 6b 67 72 6f 75 6e 64 20 22 6f 72 61 6e 67 65 33 ....'((t...(:background."orange3
1b20 22 20 3a 66 6f 72 65 67 72 6f 75 6e 64 20 22 62 6c 61 63 6b 22 29 29 29 20 22 46 61 63 65 20 66 ".:foreground."black")))."Face.f
1b40 6f 72 20 74 68 65 20 74 69 6c 65 20 38 2e 22 20 3a 67 72 6f 75 70 20 27 32 30 34 38 2d 66 61 63 or.the.tile.8.".:group.'2048-fac
1b60 65 73 29 0a 28 64 65 66 66 61 63 65 20 74 77 65 6e 74 79 66 6f 72 74 79 65 69 67 68 74 2d 66 61 es).(defface.twentyfortyeight-fa
1b80 63 65 2d 31 36 20 20 20 27 28 28 74 20 2e 20 28 3a 62 61 63 6b 67 72 6f 75 6e 64 20 22 6f 72 61 ce-16...'((t...(:background."ora
1ba0 6e 67 65 22 20 3a 66 6f 72 65 67 72 6f 75 6e 64 20 22 62 6c 61 63 6b 22 29 29 29 20 22 46 61 63 nge".:foreground."black")))."Fac
1bc0 65 20 66 6f 72 20 74 68 65 20 74 69 6c 65 20 31 36 2e 22 20 3a 67 72 6f 75 70 20 27 32 30 34 38 e.for.the.tile.16.".:group.'2048
1be0 2d 66 61 63 65 73 29 0a 28 64 65 66 66 61 63 65 20 74 77 65 6e 74 79 66 6f 72 74 79 65 69 67 68 -faces).(defface.twentyfortyeigh
1c00 74 2d 66 61 63 65 2d 33 32 20 20 20 27 28 28 74 20 2e 20 28 3a 62 61 63 6b 67 72 6f 75 6e 64 20 t-face-32...'((t...(:background.
1c20 22 6f 72 61 6e 67 65 20 72 65 64 22 20 3a 66 6f 72 65 67 72 6f 75 6e 64 20 22 62 6c 61 63 6b 22 "orange.red".:foreground."black"
1c40 29 29 29 20 22 46 61 63 65 20 66 6f 72 20 74 68 65 20 74 69 6c 65 20 33 32 2e 22 20 3a 67 72 6f )))."Face.for.the.tile.32.".:gro
1c60 75 70 20 27 32 30 34 38 2d 66 61 63 65 73 29 0a 28 64 65 66 66 61 63 65 20 74 77 65 6e 74 79 66 up.'2048-faces).(defface.twentyf
1c80 6f 72 74 79 65 69 67 68 74 2d 66 61 63 65 2d 36 34 20 20 20 27 28 28 74 20 2e 20 28 3a 62 61 63 ortyeight-face-64...'((t...(:bac
1ca0 6b 67 72 6f 75 6e 64 20 22 66 69 72 65 62 72 69 63 6b 22 20 3a 66 6f 72 65 67 72 6f 75 6e 64 20 kground."firebrick".:foreground.
1cc0 22 77 68 69 74 65 22 29 29 29 20 22 46 61 63 65 20 66 6f 72 20 74 68 65 20 74 69 6c 65 20 36 34 "white")))."Face.for.the.tile.64
1ce0 2e 22 20 3a 67 72 6f 75 70 20 27 32 30 34 38 2d 66 61 63 65 73 29 0a 28 64 65 66 66 61 63 65 20 .".:group.'2048-faces).(defface.
1d00 74 77 65 6e 74 79 66 6f 72 74 79 65 69 67 68 74 2d 66 61 63 65 2d 31 32 38 20 20 27 28 28 74 20 twentyfortyeight-face-128..'((t.
1d20 2e 20 28 3a 62 61 63 6b 67 72 6f 75 6e 64 20 22 64 61 72 6b 20 72 65 64 22 20 3a 66 6f 72 65 67 ..(:background."dark.red".:foreg
1d40 72 6f 75 6e 64 20 22 77 68 69 74 65 22 29 29 29 20 22 46 61 63 65 20 66 6f 72 20 74 68 65 20 74 round."white")))."Face.for.the.t
1d60 69 6c 65 20 31 32 38 2e 22 20 3a 67 72 6f 75 70 20 27 32 30 34 38 2d 66 61 63 65 73 29 0a 28 64 ile.128.".:group.'2048-faces).(d
1d80 65 66 66 61 63 65 20 74 77 65 6e 74 79 66 6f 72 74 79 65 69 67 68 74 2d 66 61 63 65 2d 32 35 36 efface.twentyfortyeight-face-256
1da0 20 20 27 28 28 74 20 2e 20 28 3a 62 61 63 6b 67 72 6f 75 6e 64 20 22 64 61 72 6b 20 6d 61 67 65 ..'((t...(:background."dark.mage
1dc0 6e 74 61 22 20 3a 66 6f 72 65 67 72 6f 75 6e 64 20 22 77 68 69 74 65 22 29 29 29 20 22 46 61 63 nta".:foreground."white")))."Fac
1de0 65 20 66 6f 72 20 74 68 65 20 74 69 6c 65 20 32 35 36 2e 22 20 3a 67 72 6f 75 70 20 27 32 30 34 e.for.the.tile.256.".:group.'204
1e00 38 2d 66 61 63 65 73 29 0a 28 64 65 66 66 61 63 65 20 74 77 65 6e 74 79 66 6f 72 74 79 65 69 67 8-faces).(defface.twentyfortyeig
1e20 68 74 2d 66 61 63 65 2d 35 31 32 20 20 27 28 28 74 20 2e 20 28 3a 62 61 63 6b 67 72 6f 75 6e 64 ht-face-512..'((t...(:background
1e40 20 22 6d 61 67 65 6e 74 61 22 20 3a 66 6f 72 65 67 72 6f 75 6e 64 20 22 62 6c 61 63 6b 22 29 29 ."magenta".:foreground."black"))
1e60 29 20 22 46 61 63 65 20 66 6f 72 20 74 68 65 20 74 69 6c 65 20 35 31 32 2e 22 20 3a 67 72 6f 75 )."Face.for.the.tile.512.".:grou
1e80 70 20 27 32 30 34 38 2d 66 61 63 65 73 29 0a 28 64 65 66 66 61 63 65 20 74 77 65 6e 74 79 66 6f p.'2048-faces).(defface.twentyfo
1ea0 72 74 79 65 69 67 68 74 2d 66 61 63 65 2d 31 30 32 34 20 27 28 28 74 20 2e 20 28 3a 62 61 63 6b rtyeight-face-1024.'((t...(:back
1ec0 67 72 6f 75 6e 64 20 22 67 6f 6c 64 22 20 3a 66 6f 72 65 67 72 6f 75 6e 64 20 22 62 6c 61 63 6b ground."gold".:foreground."black
1ee0 22 29 29 29 20 22 46 61 63 65 20 66 6f 72 20 74 68 65 20 74 69 6c 65 20 31 30 32 34 2e 22 20 3a ")))."Face.for.the.tile.1024.".:
1f00 67 72 6f 75 70 20 27 32 30 34 38 2d 66 61 63 65 73 29 0a 28 64 65 66 66 61 63 65 20 74 77 65 6e group.'2048-faces).(defface.twen
1f20 74 79 66 6f 72 74 79 65 69 67 68 74 2d 66 61 63 65 2d 32 30 34 38 20 27 28 28 74 20 2e 20 28 3a tyfortyeight-face-2048.'((t...(:
1f40 62 61 63 6b 67 72 6f 75 6e 64 20 22 79 65 6c 6c 6f 77 22 20 3a 66 6f 72 65 67 72 6f 75 6e 64 20 background."yellow".:foreground.
1f60 22 62 6c 61 63 6b 22 29 29 29 20 22 46 61 63 65 20 66 6f 72 20 74 68 65 20 74 69 6c 65 20 32 30 "black")))."Face.for.the.tile.20
1f80 34 38 2e 22 20 3a 67 72 6f 75 70 20 27 32 30 34 38 2d 66 61 63 65 73 29 0a 0a 28 64 65 66 75 6e 48.".:group.'2048-faces)..(defun
1fa0 20 32 30 34 38 2d 67 65 74 2d 66 61 63 65 20 28 6e 75 6d 62 65 72 29 0a 20 20 22 52 65 74 75 72 .2048-get-face.(number)..."Retur
1fc0 6e 20 74 68 65 20 66 61 63 65 20 66 6f 72 20 73 71 75 61 72 65 73 20 68 6f 6c 64 69 6e 67 20 4e n.the.face.for.squares.holding.N
1fe0 55 4d 42 45 52 2e 22 0a 20 20 28 6c 65 74 20 28 28 66 61 63 65 2d 73 79 6d 62 6f 6c 20 28 32 30 UMBER."...(let.((face-symbol.(20
2000 34 38 2d 67 65 74 2d 66 61 63 65 2d 73 79 6d 62 6f 6c 20 6e 75 6d 62 65 72 29 29 29 0a 20 20 20 48-get-face-symbol.number)))....
2020 20 28 69 66 20 28 66 61 63 65 70 20 66 61 63 65 2d 73 79 6d 62 6f 6c 29 0a 20 20 20 20 20 20 20 .(if.(facep.face-symbol)........
2040 20 66 61 63 65 2d 73 79 6d 62 6f 6c 0a 20 20 20 20 20 20 27 74 77 65 6e 74 79 66 6f 72 74 79 65 .face-symbol.......'twentyfortye
2060 69 67 68 74 2d 66 61 63 65 2d 32 30 34 38 29 29 29 0a 0a 28 64 65 66 75 6e 20 32 30 34 38 2d 67 ight-face-2048)))..(defun.2048-g
2080 65 74 2d 66 61 63 65 2d 73 79 6d 62 6f 6c 20 28 6e 75 6d 62 65 72 29 0a 20 20 22 52 65 74 75 72 et-face-symbol.(number)..."Retur
20a0 6e 20 74 68 65 20 66 61 63 65 20 73 79 6d 62 6f 6c 20 66 6f 72 20 73 71 75 61 72 65 73 20 68 6f n.the.face.symbol.for.squares.ho
20c0 6c 64 69 6e 67 20 4e 55 4d 42 45 52 2e 22 0a 20 20 28 69 6e 74 65 72 6e 20 28 63 6f 6e 63 61 74 lding.NUMBER."...(intern.(concat
20e0 20 22 74 77 65 6e 74 79 66 6f 72 74 79 65 69 67 68 74 2d 66 61 63 65 2d 22 0a 20 20 20 20 20 20 ."twentyfortyeight-face-".......
2100 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 74 2d 74 6f 2d 73 74 72 69 6e 67 20 6e 75 6d 62 .............(int-to-string.numb
2120 65 72 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 32 30 34 38 2d 65 6d 70 74 79 2d 74 69 6c 65 20 28 er))))..(defun.2048-empty-tile.(
2140 6e 75 6d 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 74 69 6c 65 20 74 6f 20 62 65 20 69 6e num)..."Return.the.tile.to.be.in
2160 73 65 72 74 65 64 20 66 6f 72 20 74 68 65 20 62 6c 61 6e 6b 20 70 61 72 74 20 6f 66 20 61 20 73 serted.for.the.blank.part.of.a.s
2180 71 75 61 72 65 20 68 6f 6c 64 69 6e 67 20 4e 55 4d 2e 0a 0a 54 68 61 74 20 69 73 2c 20 61 6e 20 quare.holding.NUM...That.is,.an.
21a0 65 6d 70 74 79 20 73 74 72 69 6e 67 20 77 69 74 68 20 66 6f 6e 74 20 73 74 75 66 66 20 6f 6e 20 empty.string.with.font.stuff.on.
21c0 69 74 2e 22 0a 20 20 28 73 79 6d 62 6f 6c 2d 76 61 6c 75 65 20 28 32 30 34 38 2d 65 6d 70 74 79 it."...(symbol-value.(2048-empty
21e0 2d 73 79 6d 62 6f 6c 20 6e 75 6d 29 29 29 0a 0a 28 64 65 66 75 6e 20 32 30 34 38 2d 65 6d 70 74 -symbol.num)))..(defun.2048-empt
2200 79 2d 73 79 6d 62 6f 6c 20 28 6e 75 6d 29 0a 20 20 22 52 65 74 75 72 6e 20 73 79 6d 62 6f 6c 20 y-symbol.(num)..."Return.symbol.
2220 6f 66 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 68 6f 6c 64 69 6e 67 20 65 6d 70 74 79 20 73 70 of.the.variable.holding.empty.sp
2240 61 63 65 20 66 6f 72 20 6e 75 6d 62 65 72 20 4e 55 4d 2e 22 0a 20 20 28 69 6e 74 65 72 6e 20 28 ace.for.number.NUM."...(intern.(
2260 63 6f 6e 63 61 74 20 22 32 30 34 38 2d 65 6d 70 74 79 2d 22 20 28 69 6e 74 2d 74 6f 2d 73 74 72 concat."2048-empty-".(int-to-str
2280 69 6e 67 20 6e 75 6d 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 32 30 34 38 2d 74 69 6c 65 2d 73 79 ing.num))))..(defun.2048-tile-sy
22a0 6d 62 6f 6c 20 28 6e 75 6d 29 0a 20 20 22 52 65 74 75 72 6e 20 73 79 6d 62 6f 6c 20 6f 66 20 74 mbol.(num)..."Return.symbol.of.t
22c0 68 65 20 76 61 72 69 61 62 6c 65 20 66 6f 72 20 74 68 65 20 74 69 6c 65 20 66 6f 72 20 73 71 75 he.variable.for.the.tile.for.squ
22e0 61 72 65 73 20 68 6f 6c 64 69 6e 67 20 4e 55 4d 2e 22 0a 20 20 28 69 6e 74 65 72 6e 20 28 63 6f ares.holding.NUM."...(intern.(co
2300 6e 63 61 74 20 22 32 30 34 38 2d 74 69 6c 65 2d 22 20 28 69 6e 74 2d 74 6f 2d 73 74 72 69 6e 67 ncat."2048-tile-".(int-to-string
2320 20 6e 75 6d 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 32 30 34 38 2d 74 69 6c 65 20 28 6e 75 6d 29 .num))))..(defun.2048-tile.(num)
2340 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 74 69 6c 65 20 74 6f 20 62 65 20 69 6e 73 65 72 74 ..."Return.the.tile.to.be.insert
2360 65 64 20 66 6f 72 20 61 20 73 71 75 61 72 65 20 68 6f 6c 64 69 6e 67 20 4e 55 4d 2e 0a 0a 54 68 ed.for.a.square.holding.NUM...Th
2380 65 20 74 69 6c 65 20 69 73 20 74 68 65 20 73 74 72 69 6e 67 2c 20 62 75 74 20 77 69 74 68 20 65 e.tile.is.the.string,.but.with.e
23a0 78 74 72 61 20 66 6f 6e 74 20 73 74 75 66 66 20 6f 6e 20 69 74 2e 22 0a 20 20 28 73 79 6d 62 6f xtra.font.stuff.on.it."...(symbo
23c0 6c 2d 76 61 6c 75 65 20 28 32 30 34 38 2d 74 69 6c 65 2d 73 79 6d 62 6f 6c 20 6e 75 6d 29 29 29 l-value.(2048-tile-symbol.num)))
23e0 0a 0a 28 64 65 66 6d 61 63 72 6f 20 32 30 34 38 2d 67 61 6d 65 2d 6d 6f 76 65 20 28 26 72 65 73 ..(defmacro.2048-game-move.(&res
2400 74 20 62 6f 64 79 29 0a 20 20 22 50 65 72 66 6f 72 6d 20 74 68 65 20 67 61 6d 65 20 6d 6f 76 65 t.body)..."Perform.the.game.move
2420 20 69 6e 64 69 63 61 74 65 64 20 62 79 20 42 4f 44 59 2e 0a 0a 54 68 69 73 20 6d 61 63 72 6f 20 .indicated.by.BODY...This.macro.
2440 69 73 20 75 73 65 64 20 74 6f 20 64 6f 20 73 6f 6d 65 20 68 6f 75 73 65 6b 65 65 70 69 6e 67 20 is.used.to.do.some.housekeeping.
2460 61 72 6f 75 6e 64 20 74 68 65 20 6d 6f 76 65 2e 22 0a 20 20 60 28 70 72 6f 67 6e 20 28 73 65 74 around.the.move."...`(progn.(set
2480 71 20 2a 32 30 34 38 2d 63 6f 6d 62 69 6e 65 73 2d 74 68 69 73 2d 6d 6f 76 65 2a 20 28 6d 61 6b q.*2048-combines-this-move*.(mak
24a0 65 2d 76 65 63 74 6f 72 20 28 2a 20 2a 32 30 34 38 2d 63 6f 6c 75 6d 6e 73 2a 20 2a 32 30 34 38 e-vector.(*.*2048-columns*.*2048
24c0 2d 72 6f 77 73 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -rows*).........................
24e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 29 29 0a 0a 20 20 .......................nil))....
2500 20 20 20 20 20 20 20 20 2c 40 62 6f 64 79 0a 20 20 20 20 20 20 20 20 20 20 28 32 30 34 38 2d 70 ........,@body...........(2048-p
2520 72 69 6e 74 2d 62 6f 61 72 64 29 0a 20 20 20 20 20 20 20 20 20 20 28 32 30 34 38 2d 63 68 65 63 rint-board)...........(2048-chec
2540 6b 2d 67 61 6d 65 2d 65 6e 64 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 32 30 34 38 2d 64 65 k-game-end)))..(defmacro.2048-de
2560 62 75 67 20 28 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 49 66 20 2a 32 30 34 38 2d 64 65 62 bug.(&rest.body)..."If.*2048-deb
2580 75 67 2a 20 69 73 20 27 74 2c 20 6c 6f 67 20 2c 40 42 4f 44 59 20 61 73 20 61 20 73 74 72 69 6e ug*.is.'t,.log.,@BODY.as.a.strin
25a0 67 20 74 6f 20 74 68 65 20 62 75 66 66 65 72 20 6e 61 6d 65 64 20 27 32 30 34 38 2d 64 65 62 75 g.to.the.buffer.named.'2048-debu
25c0 67 27 2e 22 0a 20 20 60 28 77 68 65 6e 20 2a 32 30 34 38 2d 64 65 62 75 67 2a 0a 20 20 20 20 20 g'."...`(when.*2048-debug*......
25e0 28 70 72 69 6e 74 20 28 63 6f 6e 63 61 74 20 2c 40 62 6f 64 79 29 0a 09 20 20 20 20 28 67 65 74 (print.(concat.,@body)......(get
2600 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 22 32 30 34 38 2d 64 65 62 75 67 22 29 29 29 29 0a -buffer-create."2048-debug")))).
2620 0a 28 64 65 66 75 6e 20 32 30 34 38 2d 69 6e 69 74 2d 74 69 6c 65 73 20 28 29 0a 20 20 22 49 6e .(defun.2048-init-tiles.()..."In
2640 69 74 69 61 6c 69 7a 65 20 65 61 63 68 20 76 61 72 69 61 62 6c 65 20 32 30 34 38 2d 65 6d 70 74 itialize.each.variable.2048-empt
2660 79 2d 4e 20 61 6e 64 20 32 30 34 38 2d 74 69 6c 65 2d 4e 20 77 69 74 68 20 73 74 72 69 6e 67 20 y-N.and.2048-tile-N.with.string.
2680 61 6e 64 20 66 61 63 65 2e 22 0a 20 20 28 6d 61 70 63 20 23 27 32 30 34 38 2d 69 6e 69 74 2d 74 and.face."...(mapc.#'2048-init-t
26a0 69 6c 65 0a 20 20 20 20 20 20 20 20 2a 32 30 34 38 2d 6e 75 6d 62 65 72 73 2a 29 29 0a 0a 28 64 ile.........*2048-numbers*))..(d
26c0 65 66 75 6e 20 32 30 34 38 2d 69 6e 69 74 2d 74 69 6c 65 20 28 6e 75 6d 62 65 72 29 0a 20 20 22 efun.2048-init-tile.(number)..."
26e0 49 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 74 69 6c 65 20 68 6f 6c 64 69 6e 67 20 4e 55 4d 42 Initialize.the.tile.holding.NUMB
2700 45 52 2e 0a 0a 54 68 69 73 20 73 65 74 73 20 75 70 20 62 6f 74 68 20 74 68 65 20 74 69 6c 65 20 ER...This.sets.up.both.the.tile.
2720 74 6f 20 68 6f 6c 64 20 69 74 2c 20 61 6e 64 20 74 68 65 20 65 6d 70 74 79 20 73 70 61 63 65 20 to.hold.it,.and.the.empty.space.
2740 61 72 6f 75 6e 64 20 69 74 2e 22 0a 20 20 28 73 65 74 20 28 32 30 34 38 2d 65 6d 70 74 79 2d 73 around.it."...(set.(2048-empty-s
2760 79 6d 62 6f 6c 20 6e 75 6d 62 65 72 29 20 28 66 6f 72 6d 61 74 20 22 25 37 73 22 20 22 20 22 29 ymbol.number).(format."%7s".".")
2780 29 0a 20 20 3b 3b 20 69 66 20 63 6f 6e 73 74 61 6e 74 20 74 68 65 6e 20 61 6c 6c 20 66 61 63 65 )...;;.if.constant.then.all.face
27a0 73 20 61 72 65 20 61 70 70 6c 69 65 64 20 74 6f 20 74 68 69 73 20 6f 6e 65 20 63 6f 6e 73 74 61 s.are.applied.to.this.one.consta
27c0 6e 74 2e 20 28 53 79 6d 70 74 6f 6d 3a 20 61 6c 6c 20 62 61 63 6b 67 72 6f 75 6e 64 20 69 73 20 nt..(Symptom:.all.background.is.
27e0 79 65 6c 6c 6f 77 29 0a 20 20 3b 3b 20 54 68 65 20 62 79 74 65 63 6f 6d 70 69 6c 65 72 20 69 73 yellow)...;;.The.bytecompiler.is
2800 20 73 6d 61 72 74 20 65 6e 6f 75 67 68 20 74 6f 20 73 65 65 20 74 68 61 74 20 28 63 6f 6e 63 61 .smart.enough.to.see.that.(conca
2820 74 2e 2e 2e 29 20 69 73 20 61 20 63 6f 6e 73 74 61 6e 74 2c 20 62 75 74 20 6e 6f 74 20 28 66 6f t...).is.a.constant,.but.not.(fo
2840 72 6d 61 74 2e 2e 2e 29 20 3b 2d 29 0a 20 20 28 73 65 74 20 28 32 30 34 38 2d 74 69 6c 65 2d 73 rmat...).;-)...(set.(2048-tile-s
2860 79 6d 62 6f 6c 20 6e 75 6d 62 65 72 29 20 28 66 6f 72 6d 61 74 20 22 25 35 73 20 20 22 20 28 32 ymbol.number).(format."%5s..".(2
2880 30 34 38 2d 6e 75 6d 2d 74 6f 2d 70 72 69 6e 74 61 62 6c 65 20 6e 75 6d 62 65 72 29 29 29 0a 20 048-num-to-printable.number)))..
28a0 20 28 77 68 65 6e 20 28 3e 20 6e 75 6d 62 65 72 20 30 29 0a 20 20 20 20 28 6c 65 74 20 28 28 66 .(when.(>.number.0).....(let.((f
28c0 61 63 65 20 28 32 30 34 38 2d 67 65 74 2d 66 61 63 65 20 6e 75 6d 62 65 72 29 29 29 0a 20 20 20 ace.(2048-get-face.number)))....
28e0 20 20 20 28 70 75 74 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 79 20 30 20 37 20 27 66 6f 6e 74 2d ...(put-text-property.0.7.'font-
2900 6c 6f 63 6b 2d 66 61 63 65 20 66 61 63 65 20 28 32 30 34 38 2d 65 6d 70 74 79 2d 74 69 6c 65 20 lock-face.face.(2048-empty-tile.
2920 6e 75 6d 62 65 72 29 29 0a 20 20 20 20 20 20 28 70 75 74 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 number)).......(put-text-propert
2940 79 20 30 20 37 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 66 61 63 65 20 66 61 63 65 20 28 32 30 34 38 y.0.7.'font-lock-face.face.(2048
2960 2d 74 69 6c 65 20 6e 75 6d 62 65 72 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 32 30 34 38 2d 74 -tile.number)))))..(defun.2048-t
2980 65 73 74 2d 74 69 6c 65 73 20 28 29 0a 20 20 22 54 65 73 74 20 6f 75 74 20 74 68 65 20 74 69 6c est-tiles.()..."Test.out.the.til
29a0 65 20 63 6f 6c 6f 72 73 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 6c 65 e.colors."...(interactive)...(le
29c0 74 20 28 28 2a 32 30 34 38 2d 62 6f 61 72 64 2a 0a 20 20 20 20 20 20 20 20 20 28 76 63 6f 6e 63 t.((*2048-board*..........(vconc
29e0 61 74 20 2a 32 30 34 38 2d 6e 75 6d 62 65 72 73 2a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 at.*2048-numbers*...............
2a00 20 20 20 20 28 6d 61 6b 65 2d 76 65 63 74 6f 72 20 28 2d 20 28 2a 20 2a 32 30 34 38 2d 63 6f 6c ....(make-vector.(-.(*.*2048-col
2a20 75 6d 6e 73 2a 20 2a 32 30 34 38 2d 72 6f 77 73 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 umns*.*2048-rows*)..............
2a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 6e 67 74 68 20 2a 32 30 .....................(length.*20
2a60 34 38 2d 6e 75 6d 62 65 72 73 2a 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48-numbers*))...................
2a80 20 20 20 20 20 20 20 20 20 20 20 20 20 30 29 29 29 0a 20 20 20 20 20 20 20 20 28 2a 32 30 34 38 .............0))).........(*2048
2aa0 2d 73 63 6f 72 65 2a 20 31 32 33 34 35 36 29 0a 20 20 20 20 20 20 20 20 28 2a 32 30 34 38 2d 68 -score*.123456).........(*2048-h
2ac0 69 73 74 6f 72 79 2a 20 27 28 28 31 32 33 20 20 35 31 32 20 22 32 30 31 34 2d 30 36 2d 31 38 20 istory*.'((123..512."2014-06-18.
2ae0 31 32 3a 33 34 3a 35 36 22 20 28 30 20 33 30 20 30 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 12:34:56".(0.30.0.0))...........
2b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 34 35 36 20 31 30 32 34 20 22 32 30 31 34 2d ................(456.1024."2014-
2b20 30 36 2d 31 38 20 31 32 3a 34 35 3a 30 30 22 20 28 30 20 31 32 33 20 30 20 30 29 29 29 29 29 0a 06-18.12:45:00".(0.123.0.0))))).
2b40 20 20 20 20 28 73 77 69 74 63 68 2d 74 6f 2d 62 75 66 66 65 72 20 22 32 30 34 38 2d 74 65 73 74 ....(switch-to-buffer."2048-test
2b60 22 29 0a 20 20 20 20 28 32 30 34 38 2d 69 6e 69 74 2d 74 69 6c 65 73 29 0a 20 20 20 20 28 32 30 ").....(2048-init-tiles).....(20
2b80 34 38 2d 6d 6f 64 65 29 0a 20 20 20 20 28 32 30 34 38 2d 70 72 69 6e 74 2d 62 6f 61 72 64 29 29 48-mode).....(2048-print-board))
2ba0 29 0a 0a 28 64 65 66 75 6e 20 32 30 34 38 2d 69 6e 69 74 20 28 29 0a 20 20 22 42 65 67 69 6e 20 )..(defun.2048-init.()..."Begin.
2bc0 61 20 67 61 6d 65 20 6f 66 20 32 30 34 38 2e 22 0a 20 20 28 73 65 74 71 20 2a 32 30 34 38 2d 62 a.game.of.2048."...(setq.*2048-b
2be0 6f 61 72 64 2a 20 28 6d 61 6b 65 2d 76 65 63 74 6f 72 20 28 2a 20 2a 32 30 34 38 2d 63 6f 6c 75 oard*.(make-vector.(*.*2048-colu
2c00 6d 6e 73 2a 20 2a 32 30 34 38 2d 72 6f 77 73 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mns*.*2048-rows*)...............
2c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 29 29 0a 20 20 28 73 65 74 71 20 ....................0))...(setq.
2c40 2a 32 30 34 38 2d 63 6f 6d 62 69 6e 65 73 2d 74 68 69 73 2d 6d 6f 76 65 2a 20 28 6d 61 6b 65 2d *2048-combines-this-move*.(make-
2c60 76 65 63 74 6f 72 20 28 2a 20 2a 32 30 34 38 2d 63 6f 6c 75 6d 6e 73 2a 20 2a 32 30 34 38 2d 72 vector.(*.*2048-columns*.*2048-r
2c80 6f 77 73 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ows*)...........................
2ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 29 29 0a 20 20 28 73 65 .....................nil))...(se
2cc0 74 71 20 2a 32 30 34 38 2d 73 63 6f 72 65 2a 20 30 0a 20 20 20 20 20 20 20 20 2a 32 30 34 38 2d tq.*2048-score*.0.........*2048-
2ce0 68 69 2d 74 69 6c 65 2a 20 32 29 0a 20 20 28 73 65 74 71 20 2a 32 30 34 38 2d 76 69 63 74 6f 72 hi-tile*.2)...(setq.*2048-victor
2d00 79 2d 76 61 6c 75 65 2a 20 2a 32 30 34 38 2d 64 65 66 61 75 6c 74 2d 76 69 63 74 6f 72 79 2d 76 y-value*.*2048-default-victory-v
2d20 61 6c 75 65 2a 29 0a 20 20 28 73 65 74 71 20 2a 32 30 34 38 2d 67 61 6d 65 2d 68 61 73 2d 62 65 alue*)...(setq.*2048-game-has-be
2d40 65 6e 2d 61 64 64 65 64 2d 74 6f 2d 68 69 73 74 6f 72 79 2a 20 6e 69 6c 29 0a 20 20 28 73 65 74 en-added-to-history*.nil)...(set
2d60 71 20 2a 32 30 34 38 2d 67 61 6d 65 2d 65 70 6f 63 68 2a 20 28 63 75 72 72 65 6e 74 2d 74 69 6d q.*2048-game-epoch*.(current-tim
2d80 65 29 29 0a 20 20 28 32 30 34 38 2d 69 6e 73 65 72 74 2d 72 61 6e 64 6f 6d 2d 63 65 6c 6c 29 0a e))...(2048-insert-random-cell).
2da0 20 20 28 32 30 34 38 2d 69 6e 73 65 72 74 2d 72 61 6e 64 6f 6d 2d 63 65 6c 6c 29 0a 20 20 28 32 ..(2048-insert-random-cell)...(2
2dc0 30 34 38 2d 69 6e 69 74 2d 74 69 6c 65 73 29 0a 20 20 28 32 30 34 38 2d 70 72 69 6e 74 2d 62 6f 048-init-tiles)...(2048-print-bo
2de0 61 72 64 29 0a 20 20 28 6d 65 73 73 61 67 65 20 22 47 6f 6f 64 20 6c 75 63 6b 21 22 29 29 0a 0a ard)...(message."Good.luck!"))..
2e00 28 64 65 66 75 6e 20 32 30 34 38 2d 67 65 74 2d 63 65 6c 6c 20 28 72 6f 77 20 63 6f 6c 29 0a 20 (defun.2048-get-cell.(row.col)..
2e20 20 22 47 65 74 20 74 68 65 20 76 61 6c 75 65 20 69 6e 20 28 52 4f 57 2c 20 43 4f 4c 29 2e 22 0a ."Get.the.value.in.(ROW,.COL).".
2e40 20 20 28 65 6c 74 20 2a 32 30 34 38 2d 62 6f 61 72 64 2a 0a 20 20 20 20 20 20 20 28 2b 20 28 2a ..(elt.*2048-board*........(+.(*
2e60 20 72 6f 77 20 2a 32 30 34 38 2d 63 6f 6c 75 6d 6e 73 2a 29 0a 20 20 20 20 20 20 20 20 20 20 63 .row.*2048-columns*)...........c
2e80 6f 6c 29 29 29 0a 0a 28 64 65 66 75 6e 20 32 30 34 38 2d 73 65 74 2d 63 65 6c 6c 20 28 72 6f 77 ol)))..(defun.2048-set-cell.(row
2ea0 20 63 6f 6c 75 6d 6e 20 76 61 6c 29 0a 20 20 22 53 65 74 20 74 68 65 20 76 61 6c 75 65 20 69 6e .column.val)..."Set.the.value.in
2ec0 20 28 52 4f 57 2c 20 43 4f 4c 55 4d 4e 29 20 74 6f 20 56 41 4c 2e 22 0a 20 20 28 77 68 65 6e 20 .(ROW,.COLUMN).to.VAL."...(when.
2ee0 28 3c 20 2a 32 30 34 38 2d 68 69 2d 74 69 6c 65 2a 20 76 61 6c 29 0a 20 20 20 20 28 73 65 74 71 (<.*2048-hi-tile*.val).....(setq
2f00 20 2a 32 30 34 38 2d 68 69 2d 74 69 6c 65 2a 20 76 61 6c 29 29 0a 20 20 28 61 73 65 74 20 2a 32 .*2048-hi-tile*.val))...(aset.*2
2f20 30 34 38 2d 62 6f 61 72 64 2a 0a 20 20 20 20 20 20 20 20 28 2b 20 28 2a 20 72 6f 77 20 2a 32 30 048-board*.........(+.(*.row.*20
2f40 34 38 2d 63 6f 6c 75 6d 6e 73 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 75 6d 6e 29 0a 48-columns*)............column).
2f60 20 20 20 20 20 20 20 20 76 61 6c 29 29 0a 0a 28 64 65 66 75 6e 20 32 30 34 38 2d 6e 75 6d 2d 74 ........val))..(defun.2048-num-t
2f80 6f 2d 70 72 69 6e 74 61 62 6c 65 20 28 6e 75 6d 29 0a 20 20 22 52 65 74 75 72 6e 20 4e 55 4d 20 o-printable.(num)..."Return.NUM.
2fa0 61 73 20 61 20 73 74 72 69 6e 67 20 74 68 61 74 20 63 61 6e 20 62 65 20 70 75 74 20 69 6e 74 6f as.a.string.that.can.be.put.into
2fc0 20 74 68 65 20 62 6f 61 72 64 2e 0a 0a 54 68 61 74 20 69 73 2c 20 70 72 69 6e 74 20 7a 65 72 6f .the.board...That.is,.print.zero
2fe0 73 20 61 73 20 65 6d 70 74 79 20 73 74 72 69 6e 67 73 2c 20 61 6e 64 20 61 6c 6c 20 6f 74 68 65 s.as.empty.strings,.and.all.othe
3000 72 20 6e 75 6d 62 65 72 73 20 61 73 20 74 68 65 6d 73 65 6c 76 65 73 2e 22 0a 20 20 28 69 66 20 r.numbers.as.themselves."...(if.
3020 28 65 71 20 6e 75 6d 20 30 29 0a 20 20 20 20 20 20 22 22 0a 20 20 20 20 28 66 6f 72 6d 61 74 20 (eq.num.0)......."".....(format.
3040 22 25 64 22 20 6e 75 6d 29 29 29 0a 0a 28 64 65 66 75 6e 20 32 30 34 38 2d 77 61 73 2d 63 6f 6d "%d".num)))..(defun.2048-was-com
3060 62 69 6e 65 64 2d 74 68 69 73 2d 74 75 72 6e 20 28 72 6f 77 20 63 6f 6c 75 6d 6e 29 0a 20 20 22 bined-this-turn.(row.column)..."
3080 52 65 74 75 72 6e 20 77 68 65 74 68 65 72 20 28 52 4f 57 2c 20 43 4f 4c 55 4d 4e 29 20 77 61 73 Return.whether.(ROW,.COLUMN).was
30a0 20 66 69 6c 6c 65 64 20 74 68 69 73 20 74 75 72 6e 20 62 79 20 74 77 6f 20 6e 75 6d 62 65 72 73 .filled.this.turn.by.two.numbers
30c0 20 63 6f 6d 62 69 6e 69 6e 67 2e 22 0a 20 20 28 65 6c 74 20 2a 32 30 34 38 2d 63 6f 6d 62 69 6e .combining."...(elt.*2048-combin
30e0 65 73 2d 74 68 69 73 2d 6d 6f 76 65 2a 0a 20 20 20 20 20 20 20 28 2b 20 28 2a 20 72 6f 77 20 2a es-this-move*........(+.(*.row.*
3100 32 30 34 38 2d 63 6f 6c 75 6d 6e 73 2a 29 0a 20 20 20 20 20 20 20 20 20 20 63 6f 6c 75 6d 6e 29 2048-columns*)...........column)
3120 29 29 0a 0a 28 64 65 66 75 6e 20 32 30 34 38 2d 73 65 74 2d 77 61 73 2d 63 6f 6d 62 69 6e 65 64 ))..(defun.2048-set-was-combined
3140 2d 74 68 69 73 2d 74 75 72 6e 20 28 72 6f 77 20 63 6f 6c 75 6d 6e 29 0a 20 20 22 53 65 74 20 74 -this-turn.(row.column)..."Set.t
3160 68 61 74 20 28 52 4f 57 2c 20 43 4f 4c 55 4d 4e 29 20 77 61 73 20 66 69 6c 6c 65 64 20 74 68 69 hat.(ROW,.COLUMN).was.filled.thi
3180 73 20 74 75 72 6e 20 62 79 20 74 77 6f 20 6e 75 6d 62 65 72 73 20 63 6f 6d 62 69 6e 69 6e 67 2e s.turn.by.two.numbers.combining.
31a0 22 0a 20 20 28 32 30 34 38 2d 64 65 62 75 67 20 28 66 6f 72 6d 61 74 20 22 73 65 74 74 69 6e 67 "...(2048-debug.(format."setting
31c0 20 28 25 64 2c 20 25 64 29 20 61 73 20 63 6f 6d 62 69 6e 65 64 20 74 68 69 73 20 74 75 72 6e 2e .(%d,.%d).as.combined.this.turn.
31e0 22 20 72 6f 77 20 63 6f 6c 75 6d 6e 29 29 0a 20 20 28 61 73 65 74 20 2a 32 30 34 38 2d 63 6f 6d ".row.column))...(aset.*2048-com
3200 62 69 6e 65 73 2d 74 68 69 73 2d 6d 6f 76 65 2a 0a 20 20 20 20 20 20 20 20 28 2b 20 28 2a 20 72 bines-this-move*.........(+.(*.r
3220 6f 77 20 2a 32 30 34 38 2d 63 6f 6c 75 6d 6e 73 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 63 6f ow.*2048-columns*)............co
3240 6c 75 6d 6e 29 0a 20 20 20 20 20 20 20 20 74 29 29 0a 0a 28 64 65 66 75 6e 20 32 30 34 38 2d 69 lumn).........t))..(defun.2048-i
3260 6e 73 65 72 74 2d 72 61 6e 64 6f 6d 2d 63 65 6c 6c 20 28 29 0a 20 20 22 50 69 63 6b 20 61 20 6e nsert-random-cell.()..."Pick.a.n
3280 75 6d 62 65 72 20 72 61 6e 64 6f 6d 6c 79 2c 20 61 6e 64 20 69 6e 73 65 72 74 20 69 74 20 69 6e umber.randomly,.and.insert.it.in
32a0 74 6f 20 61 20 72 61 6e 64 6f 6d 20 63 65 6c 6c 2e 22 0a 20 20 28 6c 65 74 20 28 28 6e 75 6d 62 to.a.random.cell."...(let.((numb
32c0 65 72 2d 74 6f 2d 69 6e 73 65 72 74 20 28 65 6c 74 20 2a 32 30 34 38 2d 70 6f 73 73 69 62 6c 65 er-to-insert.(elt.*2048-possible
32e0 2d 76 61 6c 75 65 73 2d 74 6f 2d 69 6e 73 65 72 74 2a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 -values-to-insert*..............
3300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 61 6e 64 6f 6d 20 28 6c 65 6e 67 74 ..................(random.(lengt
3320 68 20 2a 32 30 34 38 2d 70 6f 73 73 69 62 6c 65 2d 76 61 6c 75 65 73 2d 74 6f 2d 69 6e 73 65 72 h.*2048-possible-values-to-inser
3340 74 2a 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 72 6f 77 20 28 72 61 6e 64 6f 6d 20 2a 32 30 34 t*)))).........(row.(random.*204
3360 38 2d 72 6f 77 73 2a 29 29 0a 20 20 20 20 20 20 20 20 28 63 6f 6c 75 6d 6e 20 28 72 61 6e 64 6f 8-rows*)).........(column.(rando
3380 6d 20 2a 32 30 34 38 2d 63 6f 6c 75 6d 6e 73 2a 29 29 29 0a 20 20 20 20 28 77 68 69 6c 65 20 28 m.*2048-columns*))).....(while.(
33a0 6e 6f 74 20 28 65 71 20 28 32 30 34 38 2d 67 65 74 2d 63 65 6c 6c 20 72 6f 77 20 63 6f 6c 75 6d not.(eq.(2048-get-cell.row.colum
33c0 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 29 29 0a 20 20 20 20 20 n).....................0))......
33e0 20 28 73 65 74 71 20 72 6f 77 20 28 72 61 6e 64 6f 6d 20 2a 32 30 34 38 2d 72 6f 77 73 2a 29 29 .(setq.row.(random.*2048-rows*))
3400 0a 20 20 20 20 20 20 28 73 65 74 71 20 63 6f 6c 75 6d 6e 20 28 72 61 6e 64 6f 6d 20 2a 32 30 34 .......(setq.column.(random.*204
3420 38 2d 63 6f 6c 75 6d 6e 73 2a 29 29 29 0a 20 20 20 20 28 32 30 34 38 2d 73 65 74 2d 63 65 6c 6c 8-columns*))).....(2048-set-cell
3440 20 72 6f 77 20 63 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 2d 74 6f 2d 69 6e 73 65 72 74 29 29 29 0a .row.column.number-to-insert))).
3460 0a 28 64 65 66 75 6e 20 32 30 34 38 2d 63 68 65 63 6b 2d 67 61 6d 65 2d 65 6e 64 20 28 29 0a 20 .(defun.2048-check-game-end.()..
3480 20 22 43 68 65 63 6b 20 77 68 65 74 68 65 72 20 74 68 65 20 67 61 6d 65 20 68 61 73 20 65 69 74 ."Check.whether.the.game.has.eit
34a0 68 65 72 20 62 65 65 6e 20 77 6f 6e 20 6f 72 20 6c 6f 73 74 2c 20 61 6e 64 20 61 63 74 20 61 63 her.been.won.or.lost,.and.act.ac
34c0 63 6f 72 64 69 6e 67 6c 79 2e 0a 0a 54 68 69 73 20 61 63 74 73 20 62 79 20 6e 6f 74 69 66 79 69 cordingly...This.acts.by.notifyi
34e0 6e 67 20 74 68 65 20 75 73 65 72 20 61 6e 64 20 72 65 73 74 61 72 74 69 6e 67 2e 22 0a 20 20 28 ng.the.user.and.restarting."...(
3500 63 6f 6e 64 20 28 28 32 30 34 38 2d 67 61 6d 65 2d 77 61 73 2d 77 6f 6e 29 0a 20 20 20 20 20 20 cond.((2048-game-was-won).......
3520 20 20 20 28 32 30 34 38 2d 70 72 69 6e 74 2d 62 6f 61 72 64 29 0a 20 20 20 20 20 20 20 20 20 28 ...(2048-print-board)..........(
3540 69 66 20 28 79 2d 6f 72 2d 6e 2d 70 20 22 59 61 79 21 20 59 6f 75 20 62 65 61 74 20 74 68 65 20 if.(y-or-n-p."Yay!.You.beat.the.
3560 67 61 6d 65 21 20 20 79 20 74 6f 20 73 74 61 72 74 20 61 67 61 69 6e 3b 20 6e 20 74 6f 20 63 6f game!..y.to.start.again;.n.to.co
3580 6e 74 69 6e 75 65 2e 20 20 53 74 61 72 74 20 61 67 61 69 6e 3f 20 22 29 0a 20 20 20 20 20 20 20 ntinue...Start.again?.")........
35a0 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 32 30 34 38 2d 61 64 64 2d 6e 65 77 2d 68 69 73 74 6f ......(progn.(2048-add-new-histo
35c0 72 79 2d 69 74 65 6d 20 2a 32 30 34 38 2d 73 63 6f 72 65 2a 20 2a 32 30 34 38 2d 68 69 2d 74 69 ry-item.*2048-score*.*2048-hi-ti
35e0 6c 65 2a 20 28 63 75 72 72 65 6e 74 2d 74 69 6d 65 29 20 28 74 69 6d 65 2d 73 75 62 74 72 61 63 le*.(current-time).(time-subtrac
3600 74 20 28 63 75 72 72 65 6e 74 2d 74 69 6d 65 29 20 2a 32 30 34 38 2d 67 61 6d 65 2d 65 70 6f 63 t.(current-time).*2048-game-epoc
3620 68 2a 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 32 30 34 38 2d 69 h*)).....................(2048-i
3640 6e 69 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 2a 32 30 34 38 2d 76 69 63 nit))............(setq.*2048-vic
3660 74 6f 72 79 2d 76 61 6c 75 65 2a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 tory-value*..................(*.
3680 2a 32 30 34 38 2d 76 69 63 74 6f 72 79 2d 76 61 6c 75 65 2a 20 32 29 29 29 29 0a 20 20 20 20 20 *2048-victory-value*.2))))......
36a0 20 20 20 28 28 32 30 34 38 2d 67 61 6d 65 2d 77 61 73 2d 6c 6f 73 74 29 0a 20 20 20 20 20 20 20 ...((2048-game-was-lost)........
36c0 20 20 28 75 6e 6c 65 73 73 20 2a 32 30 34 38 2d 67 61 6d 65 2d 68 61 73 2d 62 65 65 6e 2d 61 64 ..(unless.*2048-game-has-been-ad
36e0 64 65 64 2d 74 6f 2d 68 69 73 74 6f 72 79 2a 0a 20 20 20 20 20 20 20 20 20 20 20 28 32 30 34 38 ded-to-history*............(2048
3700 2d 61 64 64 2d 6e 65 77 2d 68 69 73 74 6f 72 79 2d 69 74 65 6d 20 2a 32 30 34 38 2d 73 63 6f 72 -add-new-history-item.*2048-scor
3720 65 2a 20 2a 32 30 34 38 2d 68 69 2d 74 69 6c 65 2a 20 28 63 75 72 72 65 6e 74 2d 74 69 6d 65 29 e*.*2048-hi-tile*.(current-time)
3740 20 28 74 69 6d 65 2d 73 75 62 74 72 61 63 74 20 28 63 75 72 72 65 6e 74 2d 74 69 6d 65 29 20 2a .(time-subtract.(current-time).*
3760 32 30 34 38 2d 67 61 6d 65 2d 65 70 6f 63 68 2a 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 2048-game-epoch*))............(s
3780 65 74 71 20 2a 32 30 34 38 2d 67 61 6d 65 2d 68 61 73 2d 62 65 65 6e 2d 61 64 64 65 64 2d 74 6f etq.*2048-game-has-been-added-to
37a0 2d 68 69 73 74 6f 72 79 2a 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 32 30 34 38 2d 70 72 69 -history*.t))..........(2048-pri
37c0 6e 74 2d 62 6f 61 72 64 29 0a 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 79 2d 6f 72 2d 6e nt-board)..........(when.(y-or-n
37e0 2d 70 20 22 41 77 2c 20 74 6f 6f 20 62 61 64 2e 20 20 59 6f 75 20 6c 6f 73 74 2e 20 20 57 61 6e -p."Aw,.too.bad...You.lost...Wan
3800 74 20 74 6f 20 70 6c 61 79 20 61 67 61 69 6e 3f 20 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 t.to.play.again?.")............(
3820 32 30 34 38 2d 69 6e 69 74 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 32 30 34 38 2d 61 64 64 2d 2048-init)))))..(defun.2048-add-
3840 6e 65 77 2d 68 69 73 74 6f 72 79 2d 69 74 65 6d 20 28 73 63 6f 72 65 20 68 69 2d 74 69 6c 65 20 new-history-item.(score.hi-tile.
3860 67 61 6d 65 2d 65 6e 64 2d 74 69 6d 65 20 67 61 6d 65 2d 64 75 72 61 74 69 6f 6e 29 0a 20 20 22 game-end-time.game-duration)..."
3880 47 65 6e 65 72 61 74 65 20 61 6e 64 20 61 64 64 20 61 20 6e 65 77 20 68 69 73 74 6f 72 79 20 69 Generate.and.add.a.new.history.i
38a0 74 65 6d 20 74 6f 20 74 68 65 20 73 63 6f 72 65 20 6c 69 73 74 2e 0a 0a 54 68 69 73 20 69 74 65 tem.to.the.score.list...This.ite
38c0 6d 20 73 68 6f 75 6c 64 20 68 61 76 65 20 73 63 6f 72 65 20 53 43 4f 52 45 2c 20 74 68 65 20 68 m.should.have.score.SCORE,.the.h
38e0 69 67 68 65 73 74 20 74 69 6c 65 20 72 65 61 63 68 65 64 20 61 73 20 48 49 2d 54 49 4c 45 2c 0a ighest.tile.reached.as.HI-TILE,.
3900 68 61 76 65 20 65 6e 64 65 64 20 61 74 20 47 41 4d 45 2d 45 4e 44 2d 54 49 4d 45 2c 20 61 6e 64 have.ended.at.GAME-END-TIME,.and
3920 20 68 61 76 65 20 64 75 72 61 74 69 6f 6e 20 47 41 4d 45 2d 44 55 52 41 54 49 4f 4e 22 0a 20 20 .have.duration.GAME-DURATION"...
3940 28 73 65 74 71 20 2a 32 30 34 38 2d 68 69 73 74 6f 72 79 2a 0a 20 20 20 20 20 20 20 20 28 6c 65 (setq.*2048-history*.........(le
3960 74 20 28 28 68 69 73 74 6f 72 79 2d 6c 65 6e 67 74 68 20 28 6c 65 6e 67 74 68 20 2a 32 30 34 38 t.((history-length.(length.*2048
3980 2d 68 69 73 74 6f 72 79 2a 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 67 65 74 20 74 68 -history*)))...........;;.get.th
39a0 65 20 68 69 73 74 6f 72 79 20 6c 65 6e 67 74 68 20 62 65 66 6f 72 65 20 63 61 6c 6c 69 6e 67 20 e.history.length.before.calling.
39c0 63 6c 2d 73 6f 72 74 20 62 65 63 61 75 73 65 20 63 6c 2d 73 6f 72 74 20 69 73 20 64 65 73 74 72 cl-sort.because.cl-sort.is.destr
39e0 75 63 74 69 76 65 2e 0a 20 20 20 20 20 20 20 20 20 20 28 62 75 74 6c 61 73 74 20 28 63 6c 2d 73 uctive............(butlast.(cl-s
3a00 6f 72 74 20 28 63 6f 6e 73 20 28 6c 69 73 74 20 2a 32 30 34 38 2d 73 63 6f 72 65 2a 0a 20 20 20 ort.(cons.(list.*2048-score*....
3a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3a40 20 20 20 20 20 2a 32 30 34 38 2d 68 69 2d 74 69 6c 65 2a 0a 20 20 20 20 20 20 20 20 20 20 20 20 .....*2048-hi-tile*.............
3a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 ............................(for
3a80 6d 61 74 2d 74 69 6d 65 2d 73 74 72 69 6e 67 20 22 25 59 2d 25 6d 2d 25 64 22 20 67 61 6d 65 2d mat-time-string."%Y-%m-%d".game-
3aa0 65 6e 64 2d 74 69 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 end-time).......................
3ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 61 6d 65 2d 64 75 72 61 74 69 6f 6e 29 ..................game-duration)
3ae0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3b00 20 20 20 2a 32 30 34 38 2d 68 69 73 74 6f 72 79 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ...*2048-history*)..............
3b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...............'>...............
3b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 27 63 61 72 29 0a 20 20 20 20 20 20 20 ..............:key.'car)........
3b60 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 78 20 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ............(max.0..............
3b80 20 20 20 20 20 20 20 20 20 20 20 28 2d 20 28 31 2b 20 68 69 73 74 6f 72 79 2d 6c 65 6e 67 74 68 ...........(-.(1+.history-length
3ba0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 32 30 )............................*20
3bc0 34 38 2d 68 69 73 74 6f 72 79 2d 73 69 7a 65 2a 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 32 48-history-size*))))))..(defun.2
3be0 30 34 38 2d 67 61 6d 65 2d 77 61 73 2d 77 6f 6e 20 28 29 0a 20 20 22 52 65 74 75 72 6e 20 74 20 048-game-was-won.()..."Return.t.
3c00 69 66 20 74 68 65 20 67 61 6d 65 20 77 61 73 20 77 6f 6e 2c 20 6e 69 6c 20 6f 74 68 65 72 77 69 if.the.game.was.won,.nil.otherwi
3c20 73 65 2e 22 0a 20 20 28 6c 65 74 20 28 28 67 61 6d 65 2d 77 61 73 2d 77 6f 6e 20 6e 69 6c 29 29 se."...(let.((game-was-won.nil))
3c40 0a 20 20 20 20 28 64 6f 74 69 6d 65 73 20 28 72 6f 77 20 2a 32 30 34 38 2d 72 6f 77 73 2a 29 0a .....(dotimes.(row.*2048-rows*).
3c60 20 20 20 20 20 20 28 64 6f 74 69 6d 65 73 20 28 63 6f 6c 75 6d 6e 20 2a 32 30 34 38 2d 63 6f 6c ......(dotimes.(column.*2048-col
3c80 75 6d 6e 73 2a 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 65 71 20 28 32 30 34 38 2d 67 umns*).........(when.(eq.(2048-g
3ca0 65 74 2d 63 65 6c 6c 20 72 6f 77 20 63 6f 6c 75 6d 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 et-cell.row.column).............
3cc0 20 20 20 20 20 20 2a 32 30 34 38 2d 76 69 63 74 6f 72 79 2d 76 61 6c 75 65 2a 29 0a 20 20 20 20 ......*2048-victory-value*).....
3ce0 20 20 20 20 20 20 28 73 65 74 71 20 67 61 6d 65 2d 77 61 73 2d 77 6f 6e 20 74 29 29 29 29 0a 20 ......(setq.game-was-won.t))))..
3d00 20 20 20 67 61 6d 65 2d 77 61 73 2d 77 6f 6e 29 29 0a 0a 28 64 65 66 75 6e 20 32 30 34 38 2d 67 ...game-was-won))..(defun.2048-g
3d20 61 6d 65 2d 77 61 73 2d 6c 6f 73 74 20 28 29 0a 20 20 22 52 65 74 75 72 6e 20 74 20 69 66 20 74 ame-was-lost.()..."Return.t.if.t
3d40 68 65 20 67 61 6d 65 20 77 61 73 20 6c 6f 73 74 2c 20 6e 69 6c 20 6f 74 68 65 72 77 69 73 65 2e he.game.was.lost,.nil.otherwise.
3d60 22 0a 20 20 28 6c 65 74 20 28 28 67 61 6d 65 2d 77 61 73 2d 6c 6f 73 74 20 74 29 29 0a 20 20 20 "...(let.((game-was-lost.t))....
3d80 20 28 64 6f 74 69 6d 65 73 20 28 72 6f 77 20 2a 32 30 34 38 2d 72 6f 77 73 2a 29 0a 20 20 20 20 .(dotimes.(row.*2048-rows*).....
3da0 20 20 28 64 6f 74 69 6d 65 73 20 28 63 6f 6c 75 6d 6e 20 2a 32 30 34 38 2d 63 6f 6c 75 6d 6e 73 ..(dotimes.(column.*2048-columns
3dc0 2a 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 65 71 20 28 32 30 34 38 2d 67 65 74 2d 63 *).........(when.(eq.(2048-get-c
3de0 65 6c 6c 20 72 6f 77 20 63 6f 6c 75 6d 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ell.row.column).................
3e00 20 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 67 61 6d 65 2d 77 61 73 2d 6c 6f ..0)...........(setq.game-was-lo
3e20 73 74 20 6e 69 6c 29 29 29 29 0a 0a 20 20 20 20 3b 3b 20 46 6f 72 20 65 61 63 68 20 73 71 75 61 st.nil))))......;;.For.each.squa
3e40 72 65 2c 20 69 66 20 74 68 61 74 20 73 71 75 61 72 65 20 68 61 73 20 6f 6e 65 20 62 65 6c 6f 77 re,.if.that.square.has.one.below
3e60 20 69 74 20 74 68 61 74 27 73 20 74 68 65 20 73 61 6d 65 2c 0a 20 20 20 20 3b 3b 20 74 68 65 20 .it.that's.the.same,.....;;.the.
3e80 67 61 6d 65 27 73 20 6e 6f 74 20 6f 76 65 72 2e 0a 20 20 20 20 28 64 6f 74 69 6d 65 73 20 28 72 game's.not.over......(dotimes.(r
3ea0 6f 77 20 28 31 2d 20 2a 32 30 34 38 2d 72 6f 77 73 2a 29 29 0a 20 20 20 20 20 20 28 64 6f 74 69 ow.(1-.*2048-rows*)).......(doti
3ec0 6d 65 73 20 28 63 6f 6c 75 6d 6e 20 2a 32 30 34 38 2d 63 6f 6c 75 6d 6e 73 2a 29 0a 20 20 20 20 mes.(column.*2048-columns*).....
3ee0 20 20 20 20 28 77 68 65 6e 20 28 65 71 20 28 32 30 34 38 2d 67 65 74 2d 63 65 6c 6c 20 72 6f 77 ....(when.(eq.(2048-get-cell.row
3f00 20 63 6f 6c 75 6d 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 32 30 34 38 .column)...................(2048
3f20 2d 67 65 74 2d 63 65 6c 6c 20 28 31 2b 20 72 6f 77 29 20 63 6f 6c 75 6d 6e 29 29 0a 20 20 20 20 -get-cell.(1+.row).column)).....
3f40 20 20 20 20 20 20 28 73 65 74 71 20 67 61 6d 65 2d 77 61 73 2d 6c 6f 73 74 20 6e 69 6c 29 29 29 ......(setq.game-was-lost.nil)))
3f60 29 0a 0a 20 20 20 20 3b 3b 20 46 6f 72 20 65 61 63 68 20 73 71 75 61 72 65 2c 20 69 66 20 74 68 )......;;.For.each.square,.if.th
3f80 61 74 20 73 71 75 61 72 65 20 68 61 73 20 6f 6e 65 20 74 6f 20 69 74 73 20 72 69 67 68 74 20 74 at.square.has.one.to.its.right.t
3fa0 68 61 74 27 73 20 74 68 65 20 73 61 6d 65 2c 0a 20 20 20 20 3b 3b 20 74 68 65 20 67 61 6d 65 27 hat's.the.same,.....;;.the.game'
3fc0 73 20 6e 6f 74 20 6f 76 65 72 2e 0a 20 20 20 20 28 64 6f 74 69 6d 65 73 20 28 72 6f 77 20 2a 32 s.not.over......(dotimes.(row.*2
3fe0 30 34 38 2d 72 6f 77 73 2a 29 0a 20 20 20 20 20 20 28 64 6f 74 69 6d 65 73 20 28 63 6f 6c 75 6d 048-rows*).......(dotimes.(colum
4000 6e 20 28 31 2d 20 2a 32 30 34 38 2d 63 6f 6c 75 6d 6e 73 2a 29 29 0a 20 20 20 20 20 20 20 20 28 n.(1-.*2048-columns*)).........(
4020 77 68 65 6e 20 28 65 71 20 28 32 30 34 38 2d 67 65 74 2d 63 65 6c 6c 20 72 6f 77 20 63 6f 6c 75 when.(eq.(2048-get-cell.row.colu
4040 6d 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 32 30 34 38 2d 67 65 74 2d mn)...................(2048-get-
4060 63 65 6c 6c 20 72 6f 77 20 28 31 2b 20 63 6f 6c 75 6d 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 cell.row.(1+.column)))..........
4080 20 28 73 65 74 71 20 67 61 6d 65 2d 77 61 73 2d 6c 6f 73 74 20 6e 69 6c 29 29 29 29 0a 20 20 20 .(setq.game-was-lost.nil))))....
40a0 20 67 61 6d 65 2d 77 61 73 2d 6c 6f 73 74 29 29 0a 0a 28 64 65 66 75 6e 20 32 30 34 38 2d 70 72 .game-was-lost))..(defun.2048-pr
40c0 69 6e 74 2d 62 6f 61 72 64 20 28 29 0a 20 20 22 57 69 70 65 73 20 74 68 65 20 65 6e 74 69 72 65 int-board.()..."Wipes.the.entire
40e0 20 66 69 65 6c 64 2c 20 61 6e 64 20 70 72 69 6e 74 73 20 74 68 65 20 62 6f 61 72 64 2e 22 0a 20 .field,.and.prints.the.board."..
4100 20 28 6c 65 74 20 28 28 69 6e 68 69 62 69 74 2d 72 65 61 64 2d 6f 6e 6c 79 20 74 29 29 0a 20 20 .(let.((inhibit-read-only.t))...
4120 20 20 28 65 72 61 73 65 2d 62 75 66 66 65 72 29 0a 20 20 20 20 28 64 6f 74 69 6d 65 73 20 28 72 ..(erase-buffer).....(dotimes.(r
4140 6f 77 20 2a 32 30 34 38 2d 72 6f 77 73 2a 29 0a 0a 20 20 20 20 20 20 3b 3b 70 72 69 6e 74 20 74 ow.*2048-rows*)........;;print.t
4160 68 65 20 73 65 70 61 72 61 74 6f 72 20 6c 69 6e 65 20 6f 6e 20 74 6f 70 20 6f 66 2c 20 61 6e 64 he.separator.line.on.top.of,.and
4180 20 62 65 74 77 65 65 6e 20 63 65 6c 6c 73 0a 20 20 20 20 20 20 28 64 6f 74 69 6d 65 73 20 28 63 .between.cells.......(dotimes.(c
41a0 6f 6c 20 2a 32 30 34 38 2d 63 6f 6c 75 6d 6e 73 2a 29 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 ol.*2048-columns*).........(inse
41c0 72 74 20 22 2b 2d 2d 2d 2d 2d 2d 2d 22 29 29 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 2b rt."+-------")).......(insert."+
41e0 22 29 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 5c 6e 22 29 0a 0a 20 20 20 20 20 20 3b 3b ").......(insert."\n")........;;
4200 70 72 69 6e 74 20 74 68 65 20 65 6d 70 74 79 20 6c 69 6e 65 20 61 62 6f 76 65 20 6e 75 6d 62 65 print.the.empty.line.above.numbe
4220 72 73 0a 20 20 20 20 20 20 28 64 6f 74 69 6d 65 73 20 28 63 6f 6c 20 2a 32 30 34 38 2d 63 6f 6c rs.......(dotimes.(col.*2048-col
4240 75 6d 6e 73 2a 29 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 7c 22 29 0a 20 20 20 20 umns*).........(insert."|").....
4260 20 20 20 20 28 6c 65 74 20 28 28 63 75 72 72 65 6e 74 2d 76 61 6c 75 65 20 28 32 30 34 38 2d 67 ....(let.((current-value.(2048-g
4280 65 74 2d 63 65 6c 6c 20 72 6f 77 20 63 6f 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 6e et-cell.row.col)))...........(in
42a0 73 65 72 74 20 28 32 30 34 38 2d 65 6d 70 74 79 2d 74 69 6c 65 20 63 75 72 72 65 6e 74 2d 76 61 sert.(2048-empty-tile.current-va
42c0 6c 75 65 29 29 29 29 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 7c 22 29 0a 20 20 20 20 20 lue)))).......(insert."|")......
42e0 20 28 69 6e 73 65 72 74 20 22 5c 6e 22 29 0a 0a 20 20 20 20 20 20 3b 3b 20 70 72 69 6e 74 20 74 .(insert."\n")........;;.print.t
4300 68 65 20 6e 75 6d 62 65 72 20 74 69 6c 65 73 0a 20 20 20 20 20 20 28 64 6f 74 69 6d 65 73 20 28 he.number.tiles.......(dotimes.(
4320 63 6f 6c 20 2a 32 30 34 38 2d 63 6f 6c 75 6d 6e 73 2a 29 0a 20 20 20 20 20 20 20 20 28 69 6e 73 col.*2048-columns*).........(ins
4340 65 72 74 20 22 7c 22 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 75 72 72 65 6e 74 2d ert."|").........(let.((current-
4360 76 61 6c 75 65 20 28 32 30 34 38 2d 67 65 74 2d 63 65 6c 6c 20 72 6f 77 20 63 6f 6c 29 29 29 0a value.(2048-get-cell.row.col))).
4380 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 32 30 34 38 2d 74 69 6c 65 20 63 75 72 ..........(insert.(2048-tile.cur
43a0 72 65 6e 74 2d 76 61 6c 75 65 29 29 29 29 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 7c 22 rent-value)))).......(insert."|"
43c0 29 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 5c 6e 22 29 0a 0a 20 20 20 20 20 20 3b 3b 70 ).......(insert."\n")........;;p
43e0 72 69 6e 74 20 74 68 65 20 65 6d 70 74 79 20 6c 69 6e 65 20 62 65 6c 6f 77 20 6e 75 6d 62 65 72 rint.the.empty.line.below.number
4400 73 0a 20 20 20 20 20 20 28 64 6f 74 69 6d 65 73 20 28 63 6f 6c 20 2a 32 30 34 38 2d 63 6f 6c 75 s.......(dotimes.(col.*2048-colu
4420 6d 6e 73 2a 29 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 7c 22 29 0a 20 20 20 20 20 mns*).........(insert."|")......
4440 20 20 20 28 6c 65 74 20 28 28 63 75 72 72 65 6e 74 2d 76 61 6c 75 65 20 28 32 30 34 38 2d 67 65 ...(let.((current-value.(2048-ge
4460 74 2d 63 65 6c 6c 20 72 6f 77 20 63 6f 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 t-cell.row.col)))...........(ins
4480 65 72 74 20 28 32 30 34 38 2d 65 6d 70 74 79 2d 74 69 6c 65 20 63 75 72 72 65 6e 74 2d 76 61 6c ert.(2048-empty-tile.current-val
44a0 75 65 29 29 29 29 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 7c 22 29 0a 20 20 20 20 20 20 ue)))).......(insert."|").......
44c0 28 69 6e 73 65 72 74 20 22 5c 6e 22 29 29 0a 0a 20 20 20 20 3b 3b 70 72 69 6e 74 20 74 68 65 20 (insert."\n"))......;;print.the.
44e0 73 65 70 61 72 61 74 6f 72 20 6c 69 6e 65 20 6f 6e 20 74 68 65 20 62 6f 74 74 6f 6d 20 6f 66 20 separator.line.on.the.bottom.of.
4500 74 68 65 20 6c 61 73 74 20 72 6f 77 2e 0a 20 20 20 20 28 64 6f 74 69 6d 65 73 20 28 63 6f 6c 20 the.last.row......(dotimes.(col.
4520 2a 32 30 34 38 2d 63 6f 6c 75 6d 6e 73 2a 29 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 2b *2048-columns*).......(insert."+
4540 2d 2d 2d 2d 2d 2d 2d 22 29 29 0a 20 20 20 20 28 69 6e 73 65 72 74 20 22 2b 5c 6e 22 29 0a 20 20 -------")).....(insert."+\n")...
4560 20 20 28 69 6e 73 65 72 74 20 22 5c 6e 22 29 0a 0a 20 20 20 20 28 6c 65 74 20 28 28 73 63 6f 72 ..(insert."\n")......(let.((scor
4580 65 2d 77 69 64 74 68 20 28 69 66 20 28 3d 20 30 20 2a 32 30 34 38 2d 73 63 6f 72 65 2a 29 0a 20 e-width.(if.(=.0.*2048-score*)..
45a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 0a 20 20 20 20 ..........................1.....
45c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 65 69 6c 69 6e 67 20 28 6c .....................(ceiling.(l
45e0 6f 67 20 2a 32 30 34 38 2d 73 63 6f 72 65 2a 20 31 30 29 29 29 29 29 0a 20 20 20 20 20 20 28 69 og.*2048-score*.10))))).......(i
4600 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 20 22 25 31 30 73 25 73 25 73 5c 6e 22 20 22 2f 22 20 28 nsert.(format."%10s%s%s\n"."/".(
4620 6d 61 6b 65 2d 73 74 72 69 6e 67 20 28 2b 20 39 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 make-string.(+.9................
4640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
4660 20 20 20 20 20 20 20 73 63 6f 72 65 2d 77 69 64 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 .......score-width).............
4680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
46a0 20 20 20 20 20 20 20 3f 5c 3d 29 20 22 5c 5c 22 29 29 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 .......?\=)."\\")).......(insert
46c0 20 28 66 6f 72 6d 61 74 20 22 25 31 30 73 20 25 73 20 25 64 20 25 73 5c 6e 22 20 22 7c 22 20 22 .(format."%10s.%s.%d.%s\n"."|"."
46e0 53 63 6f 72 65 3a 22 20 2a 32 30 34 38 2d 73 63 6f 72 65 2a 20 22 7c 22 29 29 0a 20 20 20 20 20 Score:".*2048-score*."|"))......
4700 20 28 69 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 20 22 25 31 30 73 25 73 25 73 5c 6e 22 20 22 5c .(insert.(format."%10s%s%s\n"."\
4720 5c 22 20 28 6d 61 6b 65 2d 73 74 72 69 6e 67 20 28 2b 20 39 0a 20 20 20 20 20 20 20 20 20 20 20 \".(make-string.(+.9............
4740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
4760 20 20 20 20 20 20 20 20 20 20 20 20 73 63 6f 72 65 2d 77 69 64 74 68 29 0a 20 20 20 20 20 20 20 ............score-width)........
4780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
47a0 20 20 20 20 20 20 20 20 20 20 20 20 20 3f 5c 3d 29 20 22 2f 22 29 29 29 0a 20 20 20 20 28 69 6e .............?\=)."/"))).....(in
47c0 73 65 72 74 20 22 5c 6e 22 29 0a 0a 20 20 20 20 28 32 30 34 38 2d 70 72 69 6e 74 2d 68 65 6c 70 sert."\n")......(2048-print-help
47e0 29 0a 0a 20 20 20 20 28 69 6e 73 65 72 74 20 22 5c 6e 22 29 0a 0a 20 20 20 20 3b 3b 20 70 72 69 )......(insert."\n")......;;.pri
4800 6e 74 20 73 63 6f 72 65 20 61 6e 64 20 68 69 73 74 6f 72 79 0a 20 20 20 20 28 69 6e 73 65 72 74 nt.score.and.history.....(insert
4820 20 28 66 6f 72 6d 61 74 20 22 25 31 30 73 25 73 25 73 5c 6e 22 20 22 2f 22 20 28 6d 61 6b 65 2d .(format."%10s%s%s\n"."/".(make-
4840 73 74 72 69 6e 67 20 31 33 20 3f 5c 3d 29 20 22 5c 5c 22 29 29 0a 20 20 20 20 28 69 6e 73 65 72 string.13.?\=)."\\")).....(inser
4860 74 20 28 66 6f 72 6d 61 74 20 22 25 32 34 73 5c 6e 22 20 22 7c 20 48 49 47 48 20 53 43 4f 52 45 t.(format."%24s\n"."|.HIGH.SCORE
4880 53 20 7c 22 29 29 0a 20 20 20 20 28 69 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 20 22 25 31 30 73 S.|")).....(insert.(format."%10s
48a0 25 73 25 73 5c 6e 22 20 22 5c 5c 22 20 28 6d 61 6b 65 2d 73 74 72 69 6e 67 20 31 33 20 3f 5c 3d %s%s\n"."\\".(make-string.13.?\=
48c0 29 20 22 2f 22 29 29 0a 20 20 20 20 28 69 6e 73 65 72 74 20 22 5c 6e 22 29 0a 20 20 20 20 28 69 )."/")).....(insert."\n").....(i
48e0 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 20 22 25 38 73 20 20 25 37 73 20 20 25 37 73 20 20 20 20 nsert.(format."%8s..%7s..%7s....
4900 20 25 34 73 5c 6e 22 20 22 53 63 6f 72 65 22 20 22 48 69 2d 54 69 6c 65 22 20 22 44 61 74 65 22 .%4s\n"."Score"."Hi-Tile"."Date"
4920 20 22 44 75 72 61 74 69 6f 6e 22 29 29 0a 20 20 20 20 28 6d 61 70 63 20 23 27 28 6c 61 6d 62 64 ."Duration")).....(mapc.#'(lambd
4940 61 20 28 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 66 6f 72 a.(x)...............(insert.(for
4960 6d 61 74 20 22 25 38 64 20 20 25 37 64 20 20 25 31 30 73 20 20 25 73 5c 6e 22 0a 20 20 20 20 20 mat."%8d..%7d..%10s..%s\n"......
4980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 74 20 78 20 .........................(elt.x.
49a0 30 29 20 28 65 6c 74 20 78 20 31 29 20 28 65 6c 74 20 78 20 32 29 20 28 66 6f 72 6d 61 74 2d 74 0).(elt.x.1).(elt.x.2).(format-t
49c0 69 6d 65 2d 73 74 72 69 6e 67 20 22 25 48 3a 25 4d 3a 25 53 22 20 28 65 6c 74 20 78 20 33 29 20 ime-string."%H:%M:%S".(elt.x.3).
49e0 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 2a 32 30 34 38 2d 68 69 73 74 6f 72 79 2a 29 0a t))))...........*2048-history*).
4a00 0a 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 29 0a 0a .....(goto-char.(point-min))))..
4a20 28 64 65 66 75 6e 20 32 30 34 38 2d 70 72 69 6e 74 2d 68 65 6c 70 20 28 29 0a 20 20 22 50 72 69 (defun.2048-print-help.()..."Pri
4a40 6e 74 20 62 61 73 69 63 20 68 65 6c 70 20 74 65 78 74 2e 22 0a 20 20 28 69 6e 73 65 72 74 20 22 nt.basic.help.text."...(insert."
4a60 54 68 65 20 67 6f 61 6c 20 69 73 20 74 6f 20 63 72 65 61 74 65 20 61 20 74 69 6c 65 20 77 69 74 The.goal.is.to.create.a.tile.wit
4a80 68 20 76 61 6c 75 65 20 32 30 34 38 2e 0a 55 73 65 20 74 68 65 20 61 72 72 6f 77 20 6b 65 79 73 h.value.2048..Use.the.arrow.keys
4aa0 2c 20 70 2f 6e 2f 62 2f 66 2c 20 6f 72 20 43 2d 70 2f 43 2d 6e 2f 43 2d 62 2f 43 2d 66 0a 74 6f ,.p/n/b/f,.or.C-p/C-n/C-b/C-f.to
4ac0 20 6d 6f 76 65 20 74 68 65 20 74 69 6c 65 73 20 61 72 6f 75 6e 64 2e 20 50 72 65 73 73 20 72 20 .move.the.tiles.around..Press.r.
4ae0 74 6f 20 6d 6f 76 65 20 72 61 6e 64 6f 6d 6c 79 2e 0a 0a 49 66 20 74 77 6f 20 74 69 6c 65 73 20 to.move.randomly...If.two.tiles.
4b00 6f 66 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65 20 63 6f 6c 6c 69 64 65 2c 20 74 68 65 20 74 of.the.same.value.collide,.the.t
4b20 69 6c 65 73 0a 63 6f 6d 62 69 6e 65 20 69 6e 74 6f 20 61 20 74 69 6c 65 20 77 69 74 68 20 74 77 iles.combine.into.a.tile.with.tw
4b40 69 63 65 20 74 68 65 20 76 61 6c 75 65 2e 5c 6e 22 29 29 0a 0a 28 64 65 66 75 6e 20 32 30 34 38 ice.the.value.\n"))..(defun.2048
4b60 2d 6d 6f 76 65 20 28 66 72 6f 6d 2d 72 6f 77 20 66 72 6f 6d 2d 63 6f 6c 75 6d 6e 20 64 65 6c 74 -move.(from-row.from-column.delt
4b80 61 2d 72 6f 77 20 64 65 6c 74 61 2d 63 6f 6c 75 6d 6e 29 0a 20 20 22 54 72 79 20 74 6f 20 6d 6f a-row.delta-column)..."Try.to.mo
4ba0 76 65 20 74 68 65 20 6e 75 6d 62 65 72 20 69 6e 20 28 46 52 4f 4d 2d 52 4f 57 2c 20 46 52 4f 4d ve.the.number.in.(FROM-ROW,.FROM
4bc0 2d 43 4f 4c 55 4d 4e 29 0a 0a 4d 6f 76 65 20 69 74 20 62 79 20 28 44 45 4c 54 41 2d 52 4f 57 2c -COLUMN)..Move.it.by.(DELTA-ROW,
4be0 20 44 45 4c 54 41 2d 43 4f 4c 55 4d 4e 29 2e 0a 54 68 69 73 20 73 75 63 63 65 65 64 73 20 77 68 .DELTA-COLUMN)..This.succeeds.wh
4c00 65 6e 20 74 68 65 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 28 74 6f 2d 72 6f 77 2c 20 74 6f 2d 63 en.the.destination.(to-row,.to-c
4c20 6f 6c 75 6d 6e 29 20 65 69 74 68 65 72 20 69 73 20 30 2c 0a 6f 72 20 69 73 20 74 68 65 20 73 61 olumn).either.is.0,.or.is.the.sa
4c40 6d 65 20 76 61 6c 75 65 20 61 73 20 28 66 72 6f 6d 2d 72 6f 77 2c 20 66 72 6f 6d 2d 63 6f 6c 75 me.value.as.(from-row,.from-colu
4c60 6d 6e 29 2e 0a 49 66 20 28 74 6f 2d 72 6f 77 2c 20 74 6f 2d 63 6f 6c 75 6d 6e 29 20 69 73 20 7a mn)..If.(to-row,.to-column).is.z
4c80 65 72 6f 2c 20 63 61 73 63 61 64 65 20 61 6e 64 20 74 72 79 20 74 6f 20 6d 6f 76 65 20 66 75 72 ero,.cascade.and.try.to.move.fur
4ca0 74 68 65 72 2e 0a 52 65 74 75 72 6e 73 20 74 20 69 66 20 77 65 20 77 65 72 65 20 61 62 6c 65 20 ther..Returns.t.if.we.were.able.
4cc0 74 6f 20 6d 6f 76 65 3b 20 6f 74 68 65 72 77 69 73 65 20 6e 69 6c 2e 22 0a 20 20 28 6c 65 74 20 to.move;.otherwise.nil."...(let.
4ce0 28 28 74 6f 2d 72 6f 77 20 28 2b 20 66 72 6f 6d 2d 72 6f 77 20 64 65 6c 74 61 2d 72 6f 77 29 29 ((to-row.(+.from-row.delta-row))
4d00 0a 20 20 20 20 20 20 20 20 28 74 6f 2d 63 6f 6c 75 6d 6e 20 28 2b 20 66 72 6f 6d 2d 63 6f 6c 75 .........(to-column.(+.from-colu
4d20 6d 6e 20 64 65 6c 74 61 2d 63 6f 6c 75 6d 6e 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 69 6e mn.delta-column))).....(when.(in
4d40 2d 62 6f 75 6e 64 73 20 74 6f 2d 72 6f 77 20 74 6f 2d 63 6f 6c 75 6d 6e 29 0a 20 20 20 20 20 20 -bounds.to-row.to-column).......
4d60 28 32 30 34 38 2d 64 65 62 75 67 20 28 66 6f 72 6d 61 74 20 22 6d 6f 76 69 6e 67 20 74 68 65 20 (2048-debug.(format."moving.the.
4d80 63 65 6c 6c 20 28 25 64 2c 20 25 64 29 20 62 79 20 28 25 64 2c 20 25 64 29 20 74 6f 20 28 25 64 cell.(%d,.%d).by.(%d,.%d).to.(%d
4da0 2c 20 25 64 29 22 20 66 72 6f 6d 2d 72 6f 77 20 66 72 6f 6d 2d 63 6f 6c 75 6d 6e 20 64 65 6c 74 ,.%d)".from-row.from-column.delt
4dc0 61 2d 72 6f 77 20 64 65 6c 74 61 2d 63 6f 6c 75 6d 6e 20 74 6f 2d 72 6f 77 20 74 6f 2d 63 6f 6c a-row.delta-column.to-row.to-col
4de0 75 6d 6e 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 66 72 6f 6d 2d 76 61 6c 20 28 32 30 34 umn)).......(let.((from-val.(204
4e00 38 2d 67 65 74 2d 63 65 6c 6c 20 66 72 6f 6d 2d 72 6f 77 20 66 72 6f 6d 2d 63 6f 6c 75 6d 6e 29 8-get-cell.from-row.from-column)
4e20 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 74 6f 2d 76 61 6c 20 28 32 30 34 38 2d 67 65 74 2d ).............(to-val.(2048-get-
4e40 63 65 6c 6c 20 74 6f 2d 72 6f 77 20 74 6f 2d 63 6f 6c 75 6d 6e 29 29 29 0a 20 20 20 20 20 20 20 cell.to-row.to-column)))........
4e60 20 28 63 6f 6e 64 20 28 28 65 71 20 66 72 6f 6d 2d 76 61 6c 20 74 6f 2d 76 61 6c 29 0a 20 20 20 .(cond.((eq.from-val.to-val)....
4e80 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 6f 72 20 28 65 71 20 66 72 6f 6d ............(unless.(or.(eq.from
4ea0 2d 76 61 6c 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -val.0).........................
4ec0 20 20 20 28 32 30 34 38 2d 77 61 73 2d 63 6f 6d 62 69 6e 65 64 2d 74 68 69 73 2d 74 75 72 6e 20 ...(2048-was-combined-this-turn.
4ee0 74 6f 2d 72 6f 77 20 74 6f 2d 63 6f 6c 75 6d 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 to-row.to-column))..............
4f00 20 20 20 20 28 32 30 34 38 2d 64 65 62 75 67 20 28 66 6f 72 6d 61 74 20 22 63 6f 6d 62 69 6e 69 ....(2048-debug.(format."combini
4f20 6e 67 20 28 25 64 2c 20 25 64 29 20 69 6e 74 6f 20 28 25 64 2c 20 25 64 29 22 20 66 72 6f 6d 2d ng.(%d,.%d).into.(%d,.%d)".from-
4f40 72 6f 77 20 66 72 6f 6d 2d 63 6f 6c 75 6d 6e 20 74 6f 2d 72 6f 77 20 74 6f 2d 63 6f 6c 75 6d 6e row.from-column.to-row.to-column
4f60 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 6f 6d 62 69 ))..................(let.((combi
4f80 6e 65 64 2d 76 61 6c 75 65 20 28 2a 20 66 72 6f 6d 2d 76 61 6c 20 32 29 29 29 0a 20 20 20 20 20 ned-value.(*.from-val.2)))......
4fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 62 6f 75 6e 64 70 20 28 32 ..............(unless.(boundp.(2
4fc0 30 34 38 2d 74 69 6c 65 2d 73 79 6d 62 6f 6c 20 63 6f 6d 62 69 6e 65 64 2d 76 61 6c 75 65 29 29 048-tile-symbol.combined-value))
4fe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 32 30 34 38 2d 69 6e 69 74 ......................(2048-init
5000 2d 74 69 6c 65 20 63 6f 6d 62 69 6e 65 64 2d 76 61 6c 75 65 29 29 0a 20 20 20 20 20 20 20 20 20 -tile.combined-value))..........
5020 20 20 20 20 20 20 20 20 20 20 28 32 30 34 38 2d 73 65 74 2d 63 65 6c 6c 20 74 6f 2d 72 6f 77 20 ..........(2048-set-cell.to-row.
5040 74 6f 2d 63 6f 6c 75 6d 6e 20 63 6f 6d 62 69 6e 65 64 2d 76 61 6c 75 65 29 0a 20 20 20 20 20 20 to-column.combined-value).......
5060 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 2a 32 30 34 38 2d 73 63 6f 72 65 2a 20 .............(setq.*2048-score*.
5080 28 2b 20 2a 32 30 34 38 2d 73 63 6f 72 65 2a 20 63 6f 6d 62 69 6e 65 64 2d 76 61 6c 75 65 29 29 (+.*2048-score*.combined-value))
50a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 32 30 34 38 2d 73 65 74 2d 63 65 ....................(2048-set-ce
50c0 6c 6c 20 66 72 6f 6d 2d 72 6f 77 20 66 72 6f 6d 2d 63 6f 6c 75 6d 6e 20 30 29 0a 20 20 20 20 20 ll.from-row.from-column.0)......
50e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 32 30 34 38 2d 73 65 74 2d 77 61 73 2d 63 6f 6d 62 ..............(2048-set-was-comb
5100 69 6e 65 64 2d 74 68 69 73 2d 74 75 72 6e 20 74 6f 2d 72 6f 77 20 74 6f 2d 63 6f 6c 75 6d 6e 29 ined-this-turn.to-row.to-column)
5120 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 74 6f 2d 76 61 6c 20 30 29 )))...............((eq.to-val.0)
5140 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 32 30 34 38 2d 73 65 74 2d 63 65 6c 6c 20 74 ................(2048-set-cell.t
5160 6f 2d 72 6f 77 20 74 6f 2d 63 6f 6c 75 6d 6e 20 66 72 6f 6d 2d 76 61 6c 29 0a 20 20 20 20 20 20 o-row.to-column.from-val).......
5180 20 20 20 20 20 20 20 20 20 28 32 30 34 38 2d 73 65 74 2d 63 65 6c 6c 20 66 72 6f 6d 2d 72 6f 77 .........(2048-set-cell.from-row
51a0 20 66 72 6f 6d 2d 63 6f 6c 75 6d 6e 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 .from-column.0)................(
51c0 32 30 34 38 2d 6d 6f 76 65 20 74 6f 2d 72 6f 77 20 74 6f 2d 63 6f 6c 75 6d 6e 20 64 65 6c 74 61 2048-move.to-row.to-column.delta
51e0 2d 72 6f 77 20 64 65 6c 74 61 2d 63 6f 6c 75 6d 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 -row.delta-column)..............
5200 20 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 6e 69 6c 29 29 29 29 29 29 20 ..t)...............(t.nil)))))).
5220 3b 3b 75 67 68 2c 20 6e 65 65 64 20 74 6f 20 70 61 73 73 20 6f 75 74 20 77 68 65 74 68 65 72 20 ;;ugh,.need.to.pass.out.whether.
5240 73 6f 6d 65 74 68 69 6e 67 20 77 61 73 20 63 6f 6d 62 69 6e 65 64 2c 20 61 6e 64 20 70 61 73 73 something.was.combined,.and.pass
5260 20 74 68 61 74 20 74 6f 20 74 68 65 20 5f 6e 65 78 74 5f 20 63 61 6c 6c 20 74 6f 20 32 30 34 38 .that.to.the._next_.call.to.2048
5280 2d 6d 6f 76 65 2e 20 57 65 20 73 65 65 20 62 75 67 73 20 6f 6e 20 72 6f 77 73 20 6c 69 6b 65 20 -move..We.see.bugs.on.rows.like.
52a0 34 20 30 20 34 20 30 2e 0a 0a 28 64 65 66 75 6e 20 69 6e 2d 62 6f 75 6e 64 73 20 28 72 6f 77 20 4.0.4.0...(defun.in-bounds.(row.
52c0 63 6f 6c 75 6d 6e 29 0a 20 20 22 52 65 74 75 72 6e 20 74 20 69 66 20 28 52 4f 57 2c 20 43 4f 4c column)..."Return.t.if.(ROW,.COL
52e0 55 4d 4e 29 20 69 73 20 69 6e 20 74 68 65 20 62 6f 75 6e 64 73 20 6f 66 20 74 68 65 20 66 69 65 UMN).is.in.the.bounds.of.the.fie
5300 6c 64 2e 22 0a 20 20 28 61 6e 64 20 28 3e 3d 20 72 6f 77 20 30 29 0a 20 20 20 20 20 20 20 28 3e ld."...(and.(>=.row.0)........(>
5320 3d 20 63 6f 6c 75 6d 6e 20 30 29 0a 20 20 20 20 20 20 20 28 3c 20 72 6f 77 20 2a 32 30 34 38 2d =.column.0)........(<.row.*2048-
5340 72 6f 77 73 2a 29 0a 20 20 20 20 20 20 20 28 3c 20 63 6f 6c 75 6d 6e 20 2a 32 30 34 38 2d 63 6f rows*)........(<.column.*2048-co
5360 6c 75 6d 6e 73 2a 29 29 29 0a 0a 0a 28 64 65 66 75 6e 20 32 30 34 38 2d 75 70 20 28 29 0a 20 20 lumns*)))...(defun.2048-up.()...
5380 22 53 68 69 66 74 20 74 68 65 20 62 6f 61 72 64 20 75 70 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 "Shift.the.board.up."...(interac
53a0 74 69 76 65 29 0a 20 20 28 32 30 34 38 2d 67 61 6d 65 2d 6d 6f 76 65 0a 20 20 20 28 73 65 74 71 tive)...(2048-game-move....(setq
53c0 20 2a 32 30 34 38 2d 63 6f 6d 62 69 6e 65 73 2d 74 68 69 73 2d 6d 6f 76 65 2a 20 28 6d 61 6b 65 .*2048-combines-this-move*.(make
53e0 2d 76 65 63 74 6f 72 20 28 2a 20 2a 32 30 34 38 2d 63 6f 6c 75 6d 6e 73 2a 20 2a 32 30 34 38 2d -vector.(*.*2048-columns*.*2048-
5400 72 6f 77 73 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rows*)..........................
5420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 29 29 0a 20 20 20 .......................nil))....
5440 28 6c 65 74 20 28 28 68 61 73 2d 6d 6f 76 65 64 20 6e 69 6c 29 29 0a 20 20 20 20 20 28 64 6f 74 (let.((has-moved.nil))......(dot
5460 69 6d 65 73 20 28 63 6f 6c 20 2a 32 30 34 38 2d 63 6f 6c 75 6d 6e 73 2a 29 0a 20 20 20 20 20 20 imes.(col.*2048-columns*).......
5480 20 28 64 6f 6c 69 73 74 20 28 72 6f 77 20 28 6e 75 6d 62 65 72 2d 73 65 71 75 65 6e 63 65 20 31 .(dolist.(row.(number-sequence.1
54a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
54c0 20 20 20 20 20 20 28 31 2d 20 2a 32 30 34 38 2d 72 6f 77 73 2a 29 29 29 0a 20 20 20 20 20 20 20 ......(1-.*2048-rows*)))........
54e0 20 20 28 73 65 74 71 20 68 61 73 2d 6d 6f 76 65 64 20 28 6f 72 20 28 32 30 34 38 2d 6d 6f 76 65 ..(setq.has-moved.(or.(2048-move
5500 20 72 6f 77 20 63 6f 6c 20 2d 31 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .row.col.-1.0)..................
5520 20 20 20 20 20 20 20 20 20 20 20 20 68 61 73 2d 6d 6f 76 65 64 29 29 29 29 0a 20 20 20 20 20 28 ............has-moved))))......(
5540 77 68 65 6e 20 68 61 73 2d 6d 6f 76 65 64 0a 20 20 20 20 20 20 20 28 32 30 34 38 2d 69 6e 73 65 when.has-moved........(2048-inse
5560 72 74 2d 72 61 6e 64 6f 6d 2d 63 65 6c 6c 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 32 30 34 38 rt-random-cell)))))..(defun.2048
5580 2d 64 6f 77 6e 20 28 29 0a 20 20 22 53 68 69 66 74 20 74 68 65 20 62 6f 61 72 64 20 64 6f 77 6e -down.()..."Shift.the.board.down
55a0 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 32 30 34 38 2d 67 61 6d 65 2d ."...(interactive)...(2048-game-
55c0 6d 6f 76 65 0a 20 20 20 28 73 65 74 71 20 2a 32 30 34 38 2d 63 6f 6d 62 69 6e 65 73 2d 74 68 69 move....(setq.*2048-combines-thi
55e0 73 2d 6d 6f 76 65 2a 20 28 6d 61 6b 65 2d 76 65 63 74 6f 72 20 28 2a 20 2a 32 30 34 38 2d 63 6f s-move*.(make-vector.(*.*2048-co
5600 6c 75 6d 6e 73 2a 20 2a 32 30 34 38 2d 72 6f 77 73 2a 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 lumns*.*2048-rows*).............
5620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
5640 20 20 20 20 6e 69 6c 29 29 0a 20 20 20 28 6c 65 74 20 28 28 68 61 73 2d 6d 6f 76 65 64 20 6e 69 ....nil))....(let.((has-moved.ni
5660 6c 29 29 0a 20 20 20 20 20 28 64 6f 74 69 6d 65 73 20 28 63 6f 6c 20 2a 32 30 34 38 2d 63 6f 6c l))......(dotimes.(col.*2048-col
5680 75 6d 6e 73 2a 29 0a 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 72 6f 77 20 28 6e 75 6d 62 umns*)........(dolist.(row.(numb
56a0 65 72 2d 73 65 71 75 65 6e 63 65 20 28 2d 20 2a 32 30 34 38 2d 72 6f 77 73 2a 20 32 29 20 30 20 er-sequence.(-.*2048-rows*.2).0.
56c0 2d 31 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 68 61 73 2d 6d 6f 76 65 64 20 28 6f -1))..........(setq.has-moved.(o
56e0 72 20 28 32 30 34 38 2d 6d 6f 76 65 20 72 6f 77 20 63 6f 6c 20 31 20 30 29 0a 20 20 20 20 20 20 r.(2048-move.row.col.1.0).......
5700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61 73 2d 6d 6f 76 65 64 .......................has-moved
5720 29 29 29 29 0a 20 20 20 20 20 28 77 68 65 6e 20 68 61 73 2d 6d 6f 76 65 64 0a 20 20 20 20 20 20 ))))......(when.has-moved.......
5740 20 28 32 30 34 38 2d 69 6e 73 65 72 74 2d 72 61 6e 64 6f 6d 2d 63 65 6c 6c 29 29 29 29 29 0a 0a .(2048-insert-random-cell)))))..
5760 28 64 65 66 75 6e 20 32 30 34 38 2d 6c 65 66 74 20 28 29 0a 20 20 22 53 68 69 66 74 73 20 74 68 (defun.2048-left.()..."Shifts.th
5780 65 20 62 6f 61 72 64 20 6c 65 66 74 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 e.board.left."...(interactive)..
57a0 20 28 32 30 34 38 2d 67 61 6d 65 2d 6d 6f 76 65 0a 20 20 20 28 6c 65 74 20 28 28 68 61 73 2d 6d .(2048-game-move....(let.((has-m
57c0 6f 76 65 64 20 6e 69 6c 29 29 0a 20 20 20 20 20 28 64 6f 74 69 6d 65 73 20 28 72 6f 77 20 2a 32 oved.nil))......(dotimes.(row.*2
57e0 30 34 38 2d 72 6f 77 73 2a 29 0a 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 63 6f 6c 20 28 048-rows*)........(dolist.(col.(
5800 6e 75 6d 62 65 72 2d 73 65 71 75 65 6e 63 65 20 31 20 28 31 2d 20 2a 32 30 34 38 2d 63 6f 6c 75 number-sequence.1.(1-.*2048-colu
5820 6d 6e 73 2a 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 68 61 73 2d 6d 6f 76 65 64 mns*)))..........(setq.has-moved
5840 20 28 6f 72 20 28 32 30 34 38 2d 6d 6f 76 65 20 72 6f 77 20 63 6f 6c 20 30 20 2d 31 29 0a 20 20 .(or.(2048-move.row.col.0.-1)...
5860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61 73 2d 6d ...........................has-m
5880 6f 76 65 64 29 29 29 29 0a 20 20 20 20 20 28 77 68 65 6e 20 68 61 73 2d 6d 6f 76 65 64 0a 20 20 oved))))......(when.has-moved...
58a0 20 20 20 20 20 28 32 30 34 38 2d 69 6e 73 65 72 74 2d 72 61 6e 64 6f 6d 2d 63 65 6c 6c 29 29 29 .....(2048-insert-random-cell)))
58c0 29 29 0a 0a 28 64 65 66 75 6e 20 32 30 34 38 2d 72 69 67 68 74 20 28 29 0a 20 20 22 53 68 69 66 ))..(defun.2048-right.()..."Shif
58e0 74 73 20 74 68 65 20 62 6f 61 72 64 20 72 69 67 68 74 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 ts.the.board.right."...(interact
5900 69 76 65 29 0a 20 20 28 32 30 34 38 2d 67 61 6d 65 2d 6d 6f 76 65 0a 20 20 20 28 6c 65 74 20 28 ive)...(2048-game-move....(let.(
5920 28 68 61 73 2d 6d 6f 76 65 64 20 6e 69 6c 29 29 0a 20 20 20 20 20 28 64 6f 74 69 6d 65 73 20 28 (has-moved.nil))......(dotimes.(
5940 72 6f 77 20 2a 32 30 34 38 2d 72 6f 77 73 2a 29 0a 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 row.*2048-rows*)........(dolist.
5960 28 63 6f 6c 20 28 6e 75 6d 62 65 72 2d 73 65 71 75 65 6e 63 65 20 28 2d 20 2a 32 30 34 38 2d 63 (col.(number-sequence.(-.*2048-c
5980 6f 6c 75 6d 6e 73 2a 20 32 29 20 30 20 2d 31 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 65 74 71 olumns*.2).0.-1))..........(setq
59a0 20 68 61 73 2d 6d 6f 76 65 64 20 28 6f 72 20 28 32 30 34 38 2d 6d 6f 76 65 20 72 6f 77 20 63 6f .has-moved.(or.(2048-move.row.co
59c0 6c 20 30 20 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l.0.1)..........................
59e0 20 20 20 20 68 61 73 2d 6d 6f 76 65 64 29 29 29 29 0a 20 20 20 20 20 28 77 68 65 6e 20 68 61 73 ....has-moved))))......(when.has
5a00 2d 6d 6f 76 65 64 0a 20 20 20 20 20 20 20 28 32 30 34 38 2d 69 6e 73 65 72 74 2d 72 61 6e 64 6f -moved........(2048-insert-rando
5a20 6d 2d 63 65 6c 6c 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 32 30 34 38 2d 72 61 6e 64 6f 6d 2d m-cell)))))..(defun.2048-random-
5a40 6d 6f 76 65 20 28 29 0a 20 20 22 4d 6f 76 65 20 74 68 65 20 62 6f 61 72 64 20 69 6e 20 61 20 72 move.()..."Move.the.board.in.a.r
5a60 61 6e 64 6f 6d 20 64 69 72 65 63 74 69 6f 6e 2e 0a 0a 54 68 69 73 20 6d 61 79 20 72 65 73 75 6c andom.direction...This.may.resul
5a80 74 20 69 6e 20 6e 6f 20 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65 20 62 6f 61 72 64 2c 0a 69 66 t.in.no.changes.to.the.board,.if
5aa0 20 74 68 65 20 6d 6f 76 65 20 77 61 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 74 68 65 20 6c 61 .the.move.was.the.same.as.the.la
5ac0 73 74 20 6f 6e 65 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 66 75 6e 63 st.one."...(interactive)...(func
5ae0 61 6c 6c 20 28 65 6c 74 20 27 28 32 30 34 38 2d 6c 65 66 74 20 32 30 34 38 2d 72 69 67 68 74 20 all.(elt.'(2048-left.2048-right.
5b00 32 30 34 38 2d 75 70 20 32 30 34 38 2d 64 6f 77 6e 29 20 28 72 61 6e 64 6f 6d 20 34 29 29 29 29 2048-up.2048-down).(random.4))))
5b20 0a 0a 28 70 72 6f 76 69 64 65 20 27 32 30 34 38 2d 67 61 6d 65 29 0a 3b 3b 3b 20 32 30 34 38 2d ..(provide.'2048-game).;;;.2048-
5b40 67 61 6d 65 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 game.el.ends.here...............
5b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5e00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
60a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
60c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
60e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
61a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
61c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
61e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
62a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
62c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
62e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
64a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
64c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
64e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
65a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
65c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
65e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
66a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
66c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
66e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
68a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
68c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
68e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
69a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
69c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
69e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6c00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
71a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
71c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
71e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
72a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
72c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
72e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
73a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
73c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
73e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
75a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
75c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
75e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
76a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
76c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
76e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
77a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
77c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
77e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................