home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / games / volume9 / othello2 / patch3 < prev    next >
SHell self-extracting ARchive  |  1990-05-21  |  15.6 KB

view JSON data     |     view as text     |     open on a Mac     |     open on a PC

This file was processed as: SHell self-extracting ARchive (archive/shar).

You can browse this item here: patch3

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert Newsgroup Content (archive/news) magic Supported
100% dexvert SHell self-extracting ARchive (archive/shar) magic Supported
100% dexvert Internet Message Format (text/imf) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file news, ASCII text default
100% checkBytes Printable ASCII default
100% dexmagic PrintFox/Pagefox WEAK default
100% perlTextCheck Likely Text (Perl) default
100% siegfried fmt/329 Shell Archive Format default
100% detectItEasy Format: plain text[LF] default (weak)
100% xdgMime message/news default



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 50 61 74 68 3a 20 75 75 | 6e 65 74 21 7a 65 70 68 |Path: uu|net!zeph|
|00000010| 79 72 2e 65 6e 73 2e 74 | 65 6b 2e 63 6f 6d 21 74 |yr.ens.t|ek.com!t|
|00000020| 65 6b 72 65 64 21 73 61 | 61 62 21 62 69 6c 6c 72 |ekred!sa|ab!billr|
|00000030| 0a 46 72 6f 6d 3a 20 62 | 69 6c 6c 72 40 73 61 61 |.From: b|illr@saa|
|00000040| 62 2e 43 4e 41 2e 54 45 | 4b 2e 43 4f 4d 20 28 42 |b.CNA.TE|K.COM (B|
|00000050| 69 6c 6c 20 52 61 6e 64 | 6c 65 29 0a 4e 65 77 73 |ill Rand|le).News|
|00000060| 67 72 6f 75 70 73 3a 20 | 63 6f 6d 70 2e 73 6f 75 |groups: |comp.sou|
|00000070| 72 63 65 73 2e 67 61 6d | 65 73 0a 53 75 62 6a 65 |rces.gam|es.Subje|
|00000080| 63 74 3a 20 76 30 39 69 | 30 34 35 3a 20 20 6f 74 |ct: v09i|045: ot|
|00000090| 68 65 6c 6c 6f 32 20 2d | 20 6f 74 68 65 6c 6c 6f |hello2 -| othello|
|000000a0| 20 67 61 6d 65 20 66 6f | 72 20 53 75 6e 56 69 65 | game fo|r SunVie|
|000000b0| 77 2f 58 56 69 65 77 2f | 58 31 31 2f 63 75 72 73 |w/XView/|X11/curs|
|000000c0| 65 73 2c 20 50 61 74 63 | 68 33 0a 4d 65 73 73 61 |es, Patc|h3.Messa|
|000000d0| 67 65 2d 49 44 3a 20 3c | 35 35 34 30 40 74 65 6b |ge-ID: <|5540@tek|
|000000e0| 72 65 64 2e 43 4e 41 2e | 54 45 4b 2e 43 4f 4d 3e |red.CNA.|TEK.COM>|
|000000f0| 0a 44 61 74 65 3a 20 33 | 20 4d 61 79 20 39 30 20 |.Date: 3| May 90 |
|00000100| 32 31 3a 35 36 3a 33 32 | 20 47 4d 54 0a 53 65 6e |21:56:32| GMT.Sen|
|00000110| 64 65 72 3a 20 6e 65 77 | 73 40 74 65 6b 72 65 64 |der: new|s@tekred|
|00000120| 2e 43 4e 41 2e 54 45 4b | 2e 43 4f 4d 0a 4c 69 6e |.CNA.TEK|.COM.Lin|
|00000130| 65 73 3a 20 35 37 33 0a | 41 70 70 72 6f 76 65 64 |es: 573.|Approved|
|00000140| 3a 20 62 69 6c 6c 72 40 | 73 61 61 62 2e 43 4e 41 |: billr@|saab.CNA|
|00000150| 2e 54 45 4b 2e 43 4f 4d | 0a 0a 53 75 62 6d 69 74 |.TEK.COM|..Submit|
|00000160| 74 65 64 2d 62 79 3a 20 | 52 69 63 68 20 42 75 72 |ted-by: |Rich Bur|
|00000170| 72 69 64 67 65 20 3c 72 | 62 75 72 72 69 64 67 65 |ridge <r|burridge|
|00000180| 40 73 75 6e 2e 43 4f 4d | 3e 0a 50 6f 73 74 69 6e |@sun.COM|>.Postin|
|00000190| 67 2d 6e 75 6d 62 65 72 | 3a 20 56 6f 6c 75 6d 65 |g-number|: Volume|
|000001a0| 20 39 2c 20 49 73 73 75 | 65 20 34 35 0a 41 72 63 | 9, Issu|e 45.Arc|
|000001b0| 68 69 76 65 2d 6e 61 6d | 65 3a 20 6f 74 68 65 6c |hive-nam|e: othel|
|000001c0| 6c 6f 32 2f 50 61 74 63 | 68 33 0a 50 61 74 63 68 |lo2/Patc|h3.Patch|
|000001d0| 2d 54 6f 3a 20 6f 74 68 | 65 6c 6c 6f 32 3a 20 56 |-To: oth|ello2: V|
|000001e0| 6f 6c 75 6d 65 20 39 2c | 20 49 73 73 75 65 20 33 |olume 9,| Issue 3|
|000001f0| 37 2d 34 30 0a 0a 0a 0a | 5b 66 72 6f 6d 20 74 68 |7-40....|[from th|
|00000200| 65 20 61 75 74 68 6f 72 | 2e 2e 2e 5d 0a 5b 5b 49 |e author|...].[[I|
|00000210| 20 73 63 72 65 77 65 64 | 20 75 70 2e 20 49 74 20 | screwed| up. It |
|00000220| 73 65 65 6d 73 20 74 68 | 65 20 63 68 61 6e 67 65 |seems th|e change|
|00000230| 73 20 74 6f 20 74 68 65 | 20 66 69 6c 65 20 6d 61 |s to the| file ma|
|00000240| 6b 65 6d 6f 76 65 2e 63 | 20 6e 65 76 65 72 20 67 |kemove.c| never g|
|00000250| 6f 74 0a 69 6e 74 6f 20 | 70 61 74 63 68 20 23 31 |ot.into |patch #1|
|00000260| 2e 20 49 74 27 73 20 65 | 61 73 69 65 72 20 69 66 |. It's e|asier if|
|00000270| 20 49 20 72 65 6c 65 61 | 73 65 20 61 20 63 6f 70 | I relea|se a cop|
|00000280| 79 20 6f 66 20 74 68 65 | 20 63 75 72 72 65 6e 74 |y of the| current|
|00000290| 20 76 65 72 73 69 6f 6e | 0a 6f 66 20 6d 61 6b 65 | version|.of make|
|000002a0| 6d 6f 76 65 2e 63 2c 20 | 61 6e 64 20 61 20 73 6d |move.c, |and a sm|
|000002b0| 61 6c 6c 20 70 61 74 63 | 68 20 74 6f 20 61 64 6a |all patc|h to adj|
|000002c0| 75 73 74 20 74 68 65 20 | 70 61 74 63 68 6c 65 76 |ust the |patchlev|
|000002d0| 65 6c 20 61 6e 64 20 75 | 70 64 61 74 65 0a 74 68 |el and u|pdate.th|
|000002e0| 65 20 43 48 41 4e 47 45 | 53 20 66 69 6c 65 2e 0a |e CHANGE|S file..|
|000002f0| 0a 53 6f 72 72 79 20 66 | 6f 72 20 74 68 65 20 63 |.Sorry f|or the c|
|00000300| 6f 6e 66 75 73 69 6f 6e | 2e 0a 0a 52 69 63 68 20 |onfusion|...Rich |
|00000310| 42 75 72 72 69 64 67 65 | 20 2d 20 72 69 63 68 62 |Burridge| - richb|
|00000320| 40 41 75 73 2e 53 75 6e | 2e 43 4f 4d 5d 5d 0a 0a |@Aus.Sun|.COM]]..|
|00000330| 23 21 20 2f 62 69 6e 2f | 73 68 0a 23 20 54 68 69 |#! /bin/|sh.# Thi|
|00000340| 73 20 69 73 20 61 20 73 | 68 65 6c 6c 20 61 72 63 |s is a s|hell arc|
|00000350| 68 69 76 65 2e 20 20 52 | 65 6d 6f 76 65 20 61 6e |hive. R|emove an|
|00000360| 79 74 68 69 6e 67 20 62 | 65 66 6f 72 65 20 74 68 |ything b|efore th|
|00000370| 69 73 20 6c 69 6e 65 2c | 20 74 68 65 6e 20 75 6e |is line,| then un|
|00000380| 70 61 63 6b 0a 23 20 69 | 74 20 62 79 20 73 61 76 |pack.# i|t by sav|
|00000390| 69 6e 67 20 69 74 20 69 | 6e 74 6f 20 61 20 66 69 |ing it i|nto a fi|
|000003a0| 6c 65 20 61 6e 64 20 74 | 79 70 69 6e 67 20 22 73 |le and t|yping "s|
|000003b0| 68 20 66 69 6c 65 22 2e | 20 20 54 6f 20 6f 76 65 |h file".| To ove|
|000003c0| 72 77 72 69 74 65 20 65 | 78 69 73 74 69 6e 67 0a |rwrite e|xisting.|
|000003d0| 23 20 66 69 6c 65 73 2c | 20 74 79 70 65 20 22 73 |# files,| type "s|
|000003e0| 68 20 66 69 6c 65 20 2d | 63 22 2e 20 20 59 6f 75 |h file -|c". You|
|000003f0| 20 63 61 6e 20 61 6c 73 | 6f 20 66 65 65 64 20 74 | can als|o feed t|
|00000400| 68 69 73 20 61 73 20 73 | 74 61 6e 64 61 72 64 20 |his as s|tandard |
|00000410| 69 6e 70 75 74 20 76 69 | 61 0a 23 20 75 6e 73 68 |input vi|a.# unsh|
|00000420| 61 72 2c 20 6f 72 20 62 | 79 20 74 79 70 69 6e 67 |ar, or b|y typing|
|00000430| 20 22 73 68 20 3c 66 69 | 6c 65 22 2c 20 65 2e 67 | "sh <fi|le", e.g|
|00000440| 2e 2e 20 20 49 66 20 74 | 68 69 73 20 61 72 63 68 |.. If t|his arch|
|00000450| 69 76 65 20 69 73 20 63 | 6f 6d 70 6c 65 74 65 2c |ive is c|omplete,|
|00000460| 20 79 6f 75 0a 23 20 77 | 69 6c 6c 20 73 65 65 20 | you.# w|ill see |
|00000470| 74 68 65 20 66 6f 6c 6c | 6f 77 69 6e 67 20 6d 65 |the foll|owing me|
|00000480| 73 73 61 67 65 20 61 74 | 20 74 68 65 20 65 6e 64 |ssage at| the end|
|00000490| 3a 0a 23 09 09 22 45 6e | 64 20 6f 66 20 73 68 65 |:.#.."En|d of she|
|000004a0| 6c 6c 20 61 72 63 68 69 | 76 65 2e 22 0a 23 20 43 |ll archi|ve.".# C|
|000004b0| 6f 6e 74 65 6e 74 73 3a | 20 20 6d 61 6b 65 6d 6f |ontents:| makemo|
|000004c0| 76 65 2e 63 20 70 61 74 | 63 68 65 73 30 33 0a 23 |ve.c pat|ches03.#|
|000004d0| 20 57 72 61 70 70 65 64 | 20 62 79 20 62 69 6c 6c | Wrapped| by bill|
|000004e0| 72 40 73 61 61 62 20 6f | 6e 20 54 68 75 20 4d 61 |r@saab o|n Thu Ma|
|000004f0| 79 20 20 33 20 31 34 3a | 34 33 3a 30 39 20 31 39 |y 3 14:|43:09 19|
|00000500| 39 30 0a 50 41 54 48 3d | 2f 62 69 6e 3a 2f 75 73 |90.PATH=|/bin:/us|
|00000510| 72 2f 62 69 6e 3a 2f 75 | 73 72 2f 75 63 62 20 3b |r/bin:/u|sr/ucb ;|
|00000520| 20 65 78 70 6f 72 74 20 | 50 41 54 48 0a 65 63 68 | export |PATH.ech|
|00000530| 6f 20 73 68 61 72 3a 20 | 45 78 74 72 61 63 74 69 |o shar: |Extracti|
|00000540| 6e 67 20 5c 22 27 6d 61 | 6b 65 6d 6f 76 65 2e 63 |ng \"'ma|kemove.c|
|00000550| 27 5c 22 20 5c 28 31 32 | 36 32 34 20 63 68 61 72 |'\" \(12|624 char|
|00000560| 61 63 74 65 72 73 5c 29 | 0a 73 65 64 20 22 73 2f |acters\)|.sed "s/|
|00000570| 5e 58 2f 2f 22 20 3e 27 | 6d 61 6b 65 6d 6f 76 65 |^X//" >'|makemove|
|00000580| 2e 63 27 20 3c 3c 27 45 | 4e 44 5f 4f 46 5f 46 49 |.c' <<'E|ND_OF_FI|
|00000590| 4c 45 27 0a 58 2f 2a 4c | 49 4e 54 4c 49 42 52 41 |LE'.X/*L|INTLIBRA|
|000005a0| 52 59 2a 2f 0a 58 0a 58 | 2f 2a 20 20 25 5a 25 25 |RY*/.X.X|/* %Z%%|
|000005b0| 4d 25 20 25 49 25 20 25 | 45 25 0a 58 20 2a 0a 58 |M% %I% %|E%.X *.X|
|000005c0| 20 2a 20 20 42 65 73 74 | 20 63 6f 6d 70 75 74 65 | * Best| compute|
|000005d0| 72 20 73 74 72 61 74 65 | 67 79 20 72 6f 75 74 69 |r strate|gy routi|
|000005e0| 6e 65 73 20 75 73 65 64 | 20 62 79 20 74 68 65 20 |nes used| by the |
|000005f0| 6f 74 68 65 6c 6c 6f 20 | 70 72 6f 67 72 61 6d 2e |othello |program.|
|00000600| 0a 58 20 2a 0a 58 20 2a | 20 20 43 6f 70 79 72 69 |.X *.X *| Copyri|
|00000610| 67 68 74 3a 20 43 68 72 | 69 73 20 4d 69 6c 6c 65 |ght: Chr|is Mille|
|00000620| 72 2c 20 31 39 37 39 2c | 20 31 39 38 31 2c 20 31 |r, 1979,| 1981, 1|
|00000630| 39 38 34 2e 0a 58 20 2a | 0a 58 20 2a 20 20 49 6e |984..X *|.X * In|
|00000640| 63 6c 75 64 65 64 20 77 | 69 74 68 20 74 68 69 73 |cluded w|ith this|
|00000650| 20 6f 74 68 65 6c 6c 6f | 20 67 61 6d 65 20 62 79 | othello| game by|
|00000660| 0a 58 20 2a 20 20 20 20 | 20 20 20 20 20 20 52 69 |.X * | Ri|
|00000670| 63 68 20 42 75 72 72 69 | 64 67 65 2c 20 53 75 6e |ch Burri|dge, Sun|
|00000680| 20 4d 69 63 72 6f 73 79 | 73 74 65 6d 73 2c 20 41 | Microsy|stems, A|
|00000690| 75 73 74 72 61 6c 69 61 | 2e 0a 58 20 2a 0a 58 20 |ustralia|..X *.X |
|000006a0| 2a 20 20 50 65 72 6d 69 | 73 73 69 6f 6e 20 69 73 |* Permi|ssion is|
|000006b0| 20 67 69 76 65 6e 20 74 | 6f 20 64 69 73 74 72 69 | given t|o distri|
|000006c0| 62 75 74 65 20 74 68 65 | 73 65 20 73 6f 75 72 63 |bute the|se sourc|
|000006d0| 65 73 2c 20 61 73 20 6c | 6f 6e 67 20 61 73 20 74 |es, as l|ong as t|
|000006e0| 68 65 0a 58 20 2a 20 20 | 69 6e 74 72 6f 64 75 63 |he.X * |introduc|
|000006f0| 74 6f 72 79 20 6d 65 73 | 73 61 67 65 73 20 61 72 |tory mes|sages ar|
|00000700| 65 20 6e 6f 74 20 72 65 | 6d 6f 76 65 64 2c 20 61 |e not re|moved, a|
|00000710| 6e 64 20 6e 6f 20 6d 6f | 6e 69 65 73 20 61 72 65 |nd no mo|nies are|
|00000720| 20 65 78 63 68 61 6e 67 | 65 64 2e 0a 58 20 2a 0a | exchang|ed..X *.|
|00000730| 58 20 2a 20 20 4e 6f 20 | 72 65 73 70 6f 6e 73 69 |X * No |responsi|
|00000740| 62 69 6c 69 74 79 20 69 | 73 20 74 61 6b 65 6e 20 |bility i|s taken |
|00000750| 66 6f 72 20 61 6e 79 20 | 65 72 72 6f 72 73 20 6f |for any |errors o|
|00000760| 6e 20 69 6e 61 63 63 75 | 72 61 63 69 65 73 20 69 |n inaccu|racies i|
|00000770| 6e 68 65 72 65 6e 74 0a | 58 20 2a 20 20 65 69 74 |nherent.|X * eit|
|00000780| 68 65 72 20 74 6f 20 74 | 68 65 20 63 6f 6d 6d 65 |her to t|he comme|
|00000790| 6e 74 73 20 6f 72 20 74 | 68 65 20 63 6f 64 65 20 |nts or t|he code |
|000007a0| 6f 66 20 74 68 69 73 20 | 70 72 6f 67 72 61 6d 2c |of this |program,|
|000007b0| 20 62 75 74 20 69 66 20 | 72 65 70 6f 72 74 65 64 | but if |reported|
|000007c0| 0a 58 20 2a 20 20 74 6f | 20 6d 65 2c 20 74 68 65 |.X * to| me, the|
|000007d0| 6e 20 61 6e 20 61 74 74 | 65 6d 70 74 20 77 69 6c |n an att|empt wil|
|000007e0| 6c 20 62 65 20 6d 61 64 | 65 20 74 6f 20 66 69 78 |l be mad|e to fix|
|000007f0| 20 74 68 65 6d 2e 0a 58 | 20 2a 2f 0a 58 0a 58 23 | them..X| */.X.X#|
|00000800| 69 6e 63 6c 75 64 65 20 | 22 6f 74 68 65 6c 6c 6f |include |"othello|
|00000810| 2e 68 22 0a 58 23 69 6e | 63 6c 75 64 65 20 22 65 |.h".X#in|clude "e|
|00000820| 78 74 65 72 6e 2e 68 22 | 0a 58 0a 58 0a 58 6d 61 |xtern.h"|.X.X.Xma|
|00000830| 6b 65 6d 6f 76 65 28 62 | 6f 61 72 64 2c 20 70 6c |kemove(b|oard, pl|
|00000840| 61 79 65 72 2c 20 64 65 | 70 74 68 29 0a 58 42 4f |ayer, de|pth).XBO|
|00000850| 41 52 44 20 2a 62 6f 61 | 72 64 20 3b 0a 58 69 6e |ARD *boa|rd ;.Xin|
|00000860| 74 20 64 65 70 74 68 2c | 20 70 6c 61 79 65 72 20 |t depth,| player |
|00000870| 3b 0a 58 7b 0a 58 20 20 | 69 6e 74 20 64 2c 76 61 |;.X{.X |int d,va|
|00000880| 6c 75 65 20 3b 0a 58 20 | 20 69 6e 74 20 6d 76 20 |lue ;.X | int mv |
|00000890| 3d 20 4e 4f 4d 4f 56 45 | 20 3b 0a 58 20 0a 58 20 |= NOMOVE| ;.X .X |
|000008a0| 20 69 66 20 28 21 64 65 | 70 74 68 29 0a 58 20 20 | if (!de|pth).X |
|000008b0| 20 20 7b 0a 58 20 20 20 | 20 20 20 69 66 20 28 28 | {.X | if ((|
|000008c0| 6d 76 20 3d 20 6e 65 78 | 74 6d 6f 76 65 28 62 6f |mv = nex|tmove(bo|
|000008d0| 61 72 64 2c 20 4e 4f 4d | 4f 56 45 2c 20 28 42 4f |ard, NOM|OVE, (BO|
|000008e0| 41 52 44 20 2a 29 20 30 | 2c 20 70 6c 61 79 65 72 |ARD *) 0|, player|
|000008f0| 29 29 20 3d 3d 20 4e 4f | 4d 4f 56 45 29 0a 58 20 |)) == NO|MOVE).X |
|00000900| 20 72 65 74 75 72 6e 28 | 2d 31 29 20 3b 0a 58 20 | return(|-1) ;.X |
|00000910| 20 20 20 20 20 65 6c 73 | 65 20 72 65 74 75 72 6e | els|e return|
|00000920| 28 6d 76 29 20 3b 0a 58 | 20 20 20 20 7d 0a 58 0a |(mv) ;.X| }.X.|
|00000930| 58 20 20 69 66 20 28 28 | 6d 76 20 3d 20 6e 65 78 |X if ((|mv = nex|
|00000940| 74 6d 6f 76 65 28 62 6f | 61 72 64 2c 20 4e 4f 4d |tmove(bo|ard, NOM|
|00000950| 4f 56 45 2c 20 28 42 4f | 41 52 44 20 2a 29 20 30 |OVE, (BO|ARD *) 0|
|00000960| 2c 20 70 6c 61 79 65 72 | 29 29 20 3d 3d 20 4e 4f |, player|)) == NO|
|00000970| 4d 4f 56 45 29 0a 58 20 | 20 20 20 7b 0a 58 20 20 |MOVE).X | {.X |
|00000980| 20 20 20 20 69 66 20 28 | 72 65 6d 61 72 6b 29 20 | if (|remark) |
|00000990| 6d 65 73 73 61 67 65 28 | 52 45 4d 41 52 4b 5f 4d |message(|REMARK_M|
|000009a0| 45 53 2c 20 22 49 27 6d | 20 6e 6f 74 20 64 65 61 |ES, "I'm| not dea|
|000009b0| 64 2c 20 6a 75 73 74 20 | 72 65 73 74 69 6e 67 22 |d, just |resting"|
|000009c0| 29 20 3b 0a 58 20 20 20 | 20 20 20 72 65 74 75 72 |) ;.X | retur|
|000009d0| 6e 28 2d 31 29 20 3b 0a | 58 20 20 20 20 7d 0a 58 |n(-1) ;.|X }.X|
|000009e0| 20 20 61 62 5f 63 6f 75 | 6e 74 20 3d 20 73 65 5f | ab_cou|nt = se_|
|000009f0| 63 6f 75 6e 74 20 3d 20 | 30 20 3b 0a 58 20 20 69 |count = |0 ;.X i|
|00000a00| 66 20 28 6e 65 78 74 6d | 6f 76 65 28 62 6f 61 72 |f (nextm|ove(boar|
|00000a10| 64 2c 20 6d 76 2c 20 28 | 42 4f 41 52 44 20 2a 29 |d, mv, (|BOARD *)|
|00000a20| 20 30 2c 20 70 6c 61 79 | 65 72 29 20 3d 3d 20 4e | 0, play|er) == N|
|00000a30| 4f 4d 4f 56 45 29 0a 58 | 20 20 20 20 7b 0a 58 20 |OMOVE).X| {.X |
|00000a40| 20 20 20 20 20 76 61 6c | 75 65 20 3d 20 73 74 61 | val|ue = sta|
|00000a50| 74 69 63 5f 65 76 61 6c | 28 62 6f 61 72 64 29 20 |tic_eval|(board) |
|00000a60| 3b 0a 58 20 20 20 20 20 | 20 69 66 20 28 72 65 6d |;.X | if (rem|
|00000a70| 61 72 6b 29 20 6d 61 6b | 65 5f 72 65 6d 61 72 6b |ark) mak|e_remark|
|00000a80| 28 70 6c 61 79 65 72 2c | 76 61 6c 75 65 29 20 3b |(player,|value) ;|
|00000a90| 0a 58 20 20 20 20 20 20 | 72 65 74 75 72 6e 28 6d |.X |return(m|
|00000aa0| 76 29 20 3b 0a 58 20 20 | 20 20 7d 0a 58 0a 58 2f |v) ;.X | }.X.X/|
|00000ab0| 2a 20 45 78 68 61 75 73 | 74 69 76 65 20 66 6f 72 |* Exhaus|tive for|
|00000ac0| 20 6c 61 73 74 20 33 2a | 64 65 70 74 68 20 70 6c | last 3*|depth pl|
|00000ad0| 79 20 28 61 74 20 6d 6f | 73 74 20 31 30 21 29 2e |y (at mo|st 10!).|
|00000ae0| 20 2a 2f 0a 58 0a 58 20 | 20 69 66 20 28 28 62 6f | */.X.X | if ((bo|
|00000af0| 61 72 64 2d 3e 6d 6f 76 | 65 73 5f 6c 65 66 74 20 |ard->mov|es_left |
|00000b00| 3c 3d 20 31 30 29 20 26 | 26 20 28 62 6f 61 72 64 |<= 10) &|& (board|
|00000b10| 2d 3e 6d 6f 76 65 73 5f | 6c 65 66 74 20 3c 3d 20 |->moves_|left <= |
|00000b20| 33 2a 64 65 70 74 68 29 | 29 0a 58 20 20 20 20 64 |3*depth)|).X d|
|00000b30| 20 3d 20 62 6f 61 72 64 | 2d 3e 6d 6f 76 65 73 5f | = board|->moves_|
|00000b40| 6c 65 66 74 20 3b 0a 58 | 20 20 65 6c 73 65 20 64 |left ;.X| else d|
|00000b50| 20 3d 20 64 65 70 74 68 | 20 3b 0a 58 20 0a 58 20 | = depth| ;.X .X |
|00000b60| 20 73 65 74 5f 61 73 70 | 69 72 61 74 69 6f 6e 28 | set_asp|iration(|
|00000b70| 62 6f 61 72 64 29 20 3b | 0a 58 20 20 76 61 6c 75 |board) ;|.X valu|
|00000b80| 65 20 3d 20 61 6c 66 61 | 62 65 74 61 28 62 6f 61 |e = alfa|beta(boa|
|00000b90| 72 64 2c 20 64 2c 20 70 | 6c 61 79 65 72 2a 49 4e |rd, d, p|layer*IN|
|00000ba0| 46 49 4e 49 54 59 2c 20 | 70 6c 61 79 65 72 2c 20 |FINITY, |player, |
|00000bb0| 26 6d 76 29 20 3b 0a 58 | 20 20 69 66 20 28 72 65 |&mv) ;.X| if (re|
|00000bc0| 6d 61 72 6b 29 20 6d 61 | 6b 65 5f 72 65 6d 61 72 |mark) ma|ke_remar|
|00000bd0| 6b 28 70 6c 61 79 65 72 | 2c 76 61 6c 75 65 29 20 |k(player|,value) |
|00000be0| 3b 0a 58 20 20 72 65 74 | 75 72 6e 28 6d 76 29 20 |;.X ret|urn(mv) |
|00000bf0| 3b 0a 58 7d 0a 58 0a 58 | 0a 58 6e 65 78 74 6d 6f |;.X}.X.X|.Xnextmo|
|00000c00| 76 65 28 70 6f 73 2c 20 | 6d 76 2c 20 6e 65 78 74 |ve(pos, |mv, next|
|00000c10| 70 6f 73 2c 20 70 6c 61 | 79 65 72 29 0a 58 42 4f |pos, pla|yer).XBO|
|00000c20| 41 52 44 20 2a 70 6f 73 | 2c 2a 6e 65 78 74 70 6f |ARD *pos|,*nextpo|
|00000c30| 73 20 3b 0a 58 69 6e 74 | 20 6d 76 2c 20 70 6c 61 |s ;.Xint| mv, pla|
|00000c40| 79 65 72 20 3b 0a 58 7b | 0a 58 0a 58 2f 2a 20 20 |yer ;.X{|.X.X/* |
|00000c50| 4f 6e 20 66 69 72 73 74 | 20 65 6e 74 72 79 20 66 |On first| entry f|
|00000c60| 6f 72 20 61 20 67 69 76 | 65 6e 20 70 6f 73 69 74 |or a giv|en posit|
|00000c70| 69 6f 6e 2c 20 6d 6f 76 | 65 20 69 73 20 73 65 74 |ion, mov|e is set|
|00000c80| 20 74 6f 20 4e 4f 4d 4f | 56 45 2c 0a 58 20 2a 20 | to NOMO|VE,.X * |
|00000c90| 20 69 2e 65 2e 20 2d 31 | 2e 20 20 4d 6f 76 65 73 | i.e. -1|. Moves|
|00000ca0| 20 61 72 65 20 67 65 6e | 65 72 61 74 65 64 20 69 | are gen|erated i|
|00000cb0| 6e 20 61 20 72 6f 75 67 | 68 20 70 6c 61 75 73 69 |n a roug|h plausi|
|00000cc0| 62 69 6c 69 74 79 20 6f | 72 64 65 72 0a 58 20 2a |bility o|rder.X *|
|00000cd0| 20 20 67 69 76 65 6e 20 | 62 79 20 74 68 65 20 6c | given |by the l|
|00000ce0| 69 73 74 20 73 74 72 75 | 63 74 75 72 65 20 6d 6f |ist stru|cture mo|
|00000cf0| 76 65 5f 74 61 62 6c 65 | 2c 20 77 68 6f 73 65 20 |ve_table|, whose |
|00000d00| 68 65 61 64 20 69 73 0a | 58 20 2a 20 20 6d 6f 76 |head is.|X * mov|
|00000d10| 65 5f 74 61 62 6c 65 5b | 2d 31 5d 2c 20 61 6e 64 |e_table[|-1], and|
|00000d20| 20 77 68 6f 73 65 20 74 | 61 69 6c 2d 70 6f 69 6e | whose t|ail-poin|
|00000d30| 74 65 72 20 69 73 20 73 | 65 74 20 74 6f 20 4e 4f |ter is s|et to NO|
|00000d40| 4d 4f 56 45 2e 0a 58 20 | 2a 20 20 54 68 65 20 6f |MOVE..X |* The o|
|00000d50| 72 64 65 72 20 69 73 20 | 70 75 72 65 6c 79 20 68 |rder is |purely h|
|00000d60| 65 75 72 69 73 74 69 63 | 2c 20 61 6e 64 20 63 6f |euristic|, and co|
|00000d70| 72 72 65 73 70 6f 6e 64 | 73 20 72 6f 75 67 68 6c |rrespond|s roughl|
|00000d80| 79 20 74 6f 0a 58 20 2a | 20 20 74 68 65 20 76 61 |y to.X *| the va|
|00000d90| 6c 75 65 73 20 61 73 73 | 6f 63 69 61 74 65 64 20 |lues ass|ociated |
|00000da0| 62 79 20 73 74 61 74 69 | 63 5f 65 76 61 6c 20 77 |by stati|c_eval w|
|00000db0| 69 74 68 20 64 69 66 66 | 65 72 65 6e 74 20 73 71 |ith diff|erent sq|
|00000dc0| 75 61 72 65 73 2e 0a 58 | 20 2a 2f 0a 58 0a 58 20 |uares..X| */.X.X |
|00000dd0| 20 73 74 61 74 69 63 20 | 69 6e 74 20 6d 5f 74 61 | static |int m_ta|
|00000de0| 62 6c 65 5b 36 35 5d 20 | 3d 0a 58 20 20 20 20 7b |ble[65] |=.X {|
|00000df0| 0a 58 20 20 20 20 20 20 | 20 30 2c 20 20 37 2c 20 |.X | 0, 7, |
|00000e00| 20 36 2c 20 20 35 2c 20 | 20 34 2c 20 32 34 2c 20 | 6, 5, | 4, 24, |
|00000e10| 31 36 2c 20 20 38 2c 20 | 35 36 2c 20 31 35 2c 0a |16, 8, |56, 15,.|
|00000e20| 58 20 20 20 20 20 20 31 | 34 2c 20 31 33 2c 20 31 |X 1|4, 13, 1|
|00000e30| 32 2c 20 32 35 2c 20 31 | 37 2c 20 34 39 2c 20 34 |2, 25, 1|7, 49, 4|
|00000e40| 38 2c 20 32 33 2c 20 32 | 32 2c 20 32 31 2c 0a 58 |8, 23, 2|2, 21,.X|
|00000e50| 20 20 20 20 20 20 32 30 | 2c 20 32 36 2c 20 34 32 | 20|, 26, 42|
|00000e60| 2c 20 34 31 2c 20 34 30 | 2c 20 33 31 2c 20 33 30 |, 41, 40|, 31, 30|
|00000e70| 2c 20 32 39 2c 20 32 38 | 2c 20 33 35 2c 0a 58 20 |, 29, 28|, 35,.X |
|00000e80| 20 20 20 20 20 33 34 2c | 20 33 33 2c 20 33 32 2c | 34,| 33, 32,|
|00000e90| 20 33 39 2c 20 33 38 2c | 20 33 37 2c 20 33 36 2c | 39, 38,| 37, 36,|
|00000ea0| 20 31 30 2c 20 34 33 2c | 20 35 31 2c 0a 58 20 20 | 10, 43,| 51,.X |
|00000eb0| 20 20 20 20 35 39 2c 20 | 34 37 2c 20 34 36 2c 20 | 59, |47, 46, |
|00000ec0| 34 35 2c 20 34 34 2c 20 | 32 37 2c 20 31 39 2c 20 |45, 44, |27, 19, |
|00000ed0| 35 30 2c 20 35 38 2c 20 | 35 35 2c 0a 58 20 20 20 |50, 58, |55,.X |
|00000ee0| 20 20 20 35 34 2c 20 35 | 33 2c 20 35 32 2c 20 20 | 54, 5|3, 52, |
|00000ef0| 31 2c 20 31 31 2c 20 2d | 31 2c 20 35 37 2c 20 36 |1, 11, -|1, 57, 6|
|00000f00| 33 2c 20 36 32 2c 20 36 | 31 2c 0a 58 20 20 20 20 |3, 62, 6|1,.X |
|00000f10| 20 20 36 30 2c 20 31 38 | 2c 20 20 33 2c 20 20 39 | 60, 18|, 3, 9|
|00000f20| 2c 20 20 32 0a 58 20 20 | 20 20 7d 20 3b 0a 58 0a |, 2.X | } ;.X.|
|00000f30| 58 20 20 73 74 61 74 69 | 63 20 69 6e 74 20 2a 6d |X stati|c int *m|
|00000f40| 6f 76 65 5f 74 61 62 6c | 65 20 3d 20 26 28 6d 5f |ove_tabl|e = &(m_|
|00000f50| 74 61 62 6c 65 5b 31 5d | 29 20 3b 0a 58 0a 58 20 |table[1]|) ;.X.X |
|00000f60| 20 77 68 69 6c 65 20 28 | 28 6d 76 20 3d 20 6d 6f | while (|(mv = mo|
|00000f70| 76 65 5f 74 61 62 6c 65 | 5b 6d 76 5d 29 20 21 3d |ve_table|[mv]) !=|
|00000f80| 20 4e 4f 4d 4f 56 45 29 | 0a 58 20 20 20 20 69 66 | NOMOVE)|.X if|
|00000f90| 20 28 6c 65 67 61 6c 28 | 6d 76 2c 70 6c 61 79 65 | (legal(|mv,playe|
|00000fa0| 72 2c 70 6f 73 29 29 0a | 58 20 20 20 20 20 20 7b |r,pos)).|X {|
|00000fb0| 0a 58 20 20 69 66 20 28 | 6e 65 78 74 70 6f 73 29 |.X if (|nextpos)|
|00000fc0| 20 64 6f 6d 6f 76 65 28 | 70 6f 73 2c 6d 76 2c 6e | domove(|pos,mv,n|
|00000fd0| 65 78 74 70 6f 73 2c 70 | 6c 61 79 65 72 29 20 3b |extpos,p|layer) ;|
|00000fe0| 0a 58 0a 58 2f 2a 20 4e | 65 78 74 20 70 6f 73 69 |.X.X/* N|ext posi|
|00000ff0| 74 69 6f 6e 20 67 65 6e | 65 72 61 74 65 64 20 6f |tion gen|erated o|
|00001000| 6e 6c 79 20 69 66 20 70 | 6f 69 6e 74 65 72 20 69 |nly if p|ointer i|
|00001010| 73 20 6e 6f 6e 2d 7a 65 | 72 6f 20 2a 2f 0a 58 20 |s non-ze|ro */.X |
|00001020| 20 72 65 74 75 72 6e 28 | 6d 76 29 20 3b 0a 58 20 | return(|mv) ;.X |
|00001030| 20 20 20 20 20 7d 0a 58 | 20 20 20 20 72 65 74 75 | }.X| retu|
|00001040| 72 6e 28 4e 4f 4d 4f 56 | 45 29 20 3b 20 20 2f 2a |rn(NOMOV|E) ; /*|
|00001050| 20 4e 6f 20 6d 6f 72 65 | 20 6c 65 67 61 6c 20 6d | No more| legal m|
|00001060| 6f 76 65 73 20 2a 2f 0a | 58 7d 0a 58 0a 58 0a 58 |oves */.|X}.X.X.X|
|00001070| 64 6f 6d 6f 76 65 28 70 | 6f 73 2c 20 6d 76 2c 20 |domove(p|os, mv, |
|00001080| 6e 65 78 74 70 6f 73 2c | 20 70 6c 61 79 65 72 29 |nextpos,| player)|
|00001090| 0a 58 42 4f 41 52 44 20 | 2a 70 6f 73 2c 20 2a 6e |.XBOARD |*pos, *n|
|000010a0| 65 78 74 70 6f 73 20 3b | 0a 58 69 6e 74 20 6d 76 |extpos ;|.Xint mv|
|000010b0| 2c 20 70 6c 61 79 65 72 | 20 3b 0a 58 7b 0a 58 20 |, player| ;.X{.X |
|000010c0| 20 72 65 67 69 73 74 65 | 72 20 69 6e 74 20 69 20 | registe|r int i |
|000010d0| 3b 0a 58 20 20 69 66 20 | 28 70 6f 73 20 21 3d 20 |;.X if |(pos != |
|000010e0| 6e 65 78 74 70 6f 73 29 | 20 46 4f 52 5f 42 4f 41 |nextpos)| FOR_BOA|
|000010f0| 52 44 28 69 29 20 6e 65 | 78 74 70 6f 73 2d 3e 73 |RD(i) ne|xtpos->s|
|00001100| 71 75 61 72 65 5b 69 5d | 20 3d 20 70 6f 73 2d 3e |quare[i]| = pos->|
|00001110| 73 71 75 61 72 65 5b 69 | 5d 20 3b 0a 58 0a 58 20 |square[i|] ;.X.X |
|00001120| 20 73 5f 6d 6f 76 65 20 | 3d 20 6d 76 20 3b 0a 58 | s_move |= mv ;.X|
|00001130| 20 20 73 5f 72 6f 77 20 | 3d 20 6d 76 20 3e 3e 20 | s_row |= mv >> |
|00001140| 33 20 3b 0a 58 20 20 73 | 5f 63 6f 6c 20 3d 20 6d |3 ;.X s|_col = m|
|00001150| 76 20 26 20 37 20 3b 0a | 58 20 20 73 5f 70 6c 61 |v & 7 ;.|X s_pla|
|00001160| 79 65 72 20 3d 20 70 6c | 61 79 65 72 20 3b 0a 58 |yer = pl|ayer ;.X|
|00001170| 20 20 73 5f 6f 70 70 6f | 6e 65 6e 74 20 3d 20 2d | s_oppo|nent = -|
|00001180| 70 6c 61 79 65 72 20 3b | 0a 58 20 20 73 5f 66 6c |player ;|.X s_fl|
|00001190| 69 70 20 3d 20 54 52 55 | 45 20 3b 0a 58 20 20 73 |ip = TRU|E ;.X s|
|000011a0| 5f 70 6f 73 20 3d 20 6e | 65 78 74 70 6f 73 20 3b |_pos = n|extpos ;|
|000011b0| 0a 58 0a 58 20 20 6e 65 | 78 74 70 6f 73 2d 3e 73 |.X.X ne|xtpos->s|
|000011c0| 71 75 61 72 65 5b 73 5f | 6d 6f 76 65 5d 20 3d 20 |quare[s_|move] = |
|000011d0| 70 6c 61 79 65 72 20 3b | 0a 58 0a 58 20 20 28 76 |player ;|.X.X (v|
|000011e0| 6f 69 64 29 20 73 61 6e | 64 77 69 63 68 28 2d 39 |oid) san|dwich(-9|
|000011f0| 29 20 3b 0a 58 20 20 28 | 76 6f 69 64 29 20 73 61 |) ;.X (|void) sa|
|00001200| 6e 64 77 69 63 68 28 2d | 38 29 20 3b 0a 58 20 20 |ndwich(-|8) ;.X |
|00001210| 28 76 6f 69 64 29 20 73 | 61 6e 64 77 69 63 68 28 |(void) s|andwich(|
|00001220| 2d 37 29 20 3b 0a 58 20 | 20 28 76 6f 69 64 29 20 |-7) ;.X | (void) |
|00001230| 73 61 6e 64 77 69 63 68 | 28 2d 31 29 20 3b 0a 58 |sandwich|(-1) ;.X|
|00001240| 20 20 28 76 6f 69 64 29 | 20 73 61 6e 64 77 69 63 | (void)| sandwic|
|00001250| 68 28 31 29 20 3b 0a 58 | 20 20 28 76 6f 69 64 29 |h(1) ;.X| (void)|
|00001260| 20 73 61 6e 64 77 69 63 | 68 28 37 29 20 3b 0a 58 | sandwic|h(7) ;.X|
|00001270| 20 20 28 76 6f 69 64 29 | 20 73 61 6e 64 77 69 63 | (void)| sandwic|
|00001280| 68 28 38 29 20 3b 0a 58 | 20 20 28 76 6f 69 64 29 |h(8) ;.X| (void)|
|00001290| 20 73 61 6e 64 77 69 63 | 68 28 39 29 20 3b 0a 58 | sandwic|h(9) ;.X|
|000012a0| 0a 58 20 20 6e 65 78 74 | 70 6f 73 2d 3e 6d 6f 76 |.X next|pos->mov|
|000012b0| 65 73 5f 6c 65 66 74 20 | 3d 20 28 70 6f 73 2d 3e |es_left |= (pos->|
|000012c0| 6d 6f 76 65 73 5f 6c 65 | 66 74 29 20 2d 20 31 20 |moves_le|ft) - 1 |
|000012d0| 3b 0a 58 7d 0a 58 0a 58 | 0a 58 6c 65 67 61 6c 28 |;.X}.X.X|.Xlegal(|
|000012e0| 6d 76 2c 20 70 6c 61 79 | 65 72 2c 20 70 6f 73 29 |mv, play|er, pos)|
|000012f0| 0a 58 42 4f 41 52 44 20 | 2a 70 6f 73 20 3b 0a 58 |.XBOARD |*pos ;.X|
|00001300| 69 6e 74 20 6d 76 2c 20 | 70 6c 61 79 65 72 20 3b |int mv, |player ;|
|00001310| 0a 58 7b 0a 58 20 20 69 | 66 20 28 70 6f 73 2d 3e |.X{.X i|f (pos->|
|00001320| 73 71 75 61 72 65 5b 6d | 76 5d 29 20 72 65 74 75 |square[m|v]) retu|
|00001330| 72 6e 28 46 41 4c 53 45 | 29 20 3b 20 20 20 20 20 |rn(FALSE|) ; |
|00001340| 2f 2a 20 41 6c 72 65 61 | 64 79 20 6f 63 63 75 70 |/* Alrea|dy occup|
|00001350| 69 65 64 20 2a 2f 0a 58 | 0a 58 20 20 73 5f 6d 6f |ied */.X|.X s_mo|
|00001360| 76 65 20 3d 20 6d 76 20 | 3b 0a 58 20 20 73 5f 72 |ve = mv |;.X s_r|
|00001370| 6f 77 20 3d 20 6d 76 20 | 3e 3e 20 33 20 3b 0a 58 |ow = mv |>> 3 ;.X|
|00001380| 20 20 73 5f 63 6f 6c 20 | 3d 20 6d 76 20 26 20 37 | s_col |= mv & 7|
|00001390| 20 3b 0a 58 20 20 73 5f | 70 6c 61 79 65 72 20 3d | ;.X s_|player =|
|000013a0| 20 70 6c 61 79 65 72 20 | 3b 0a 58 20 20 73 5f 6f | player |;.X s_o|
|000013b0| 70 70 6f 6e 65 6e 74 20 | 3d 20 2d 70 6c 61 79 65 |pponent |= -playe|
|000013c0| 72 20 3b 0a 58 20 20 73 | 5f 66 6c 69 70 20 3d 20 |r ;.X s|_flip = |
|000013d0| 46 41 4c 53 45 20 3b 0a | 58 20 20 73 5f 70 6f 73 |FALSE ;.|X s_pos|
|000013e0| 20 3d 20 70 6f 73 20 3b | 0a 58 0a 58 20 20 72 65 | = pos ;|.X.X re|
|000013f0| 74 75 72 6e 28 73 61 6e | 64 77 69 63 68 28 2d 39 |turn(san|dwich(-9|
|00001400| 29 20 7c 7c 20 73 61 6e | 64 77 69 63 68 28 2d 38 |) || san|dwich(-8|
|00001410| 29 20 7c 7c 20 73 61 6e | 64 77 69 63 68 28 2d 37 |) || san|dwich(-7|
|00001420| 29 20 7c 7c 20 73 61 6e | 64 77 69 63 68 28 2d 31 |) || san|dwich(-1|
|00001430| 29 20 7c 7c 0a 58 20 20 | 20 73 61 6e 64 77 69 63 |) ||.X | sandwic|
|00001440| 68 28 31 29 20 20 7c 7c | 20 73 61 6e 64 77 69 63 |h(1) ||| sandwic|
|00001450| 68 28 37 29 20 20 7c 7c | 20 73 61 6e 64 77 69 63 |h(7) ||| sandwic|
|00001460| 68 28 38 29 20 20 7c 7c | 20 73 61 6e 64 77 69 63 |h(8) ||| sandwic|
|00001470| 68 28 39 29 29 20 3b 0a | 58 7d 0a 58 0a 58 0a 58 |h(9)) ;.|X}.X.X.X|
|00001480| 2f 2a 20 20 54 65 73 74 | 20 77 68 65 74 68 65 72 |/* Test| whether|
|00001490| 20 74 68 65 20 73 71 75 | 61 72 65 20 6d 6f 76 65 | the squ|are move|
|000014a0| 20 73 61 6e 64 77 69 63 | 68 65 73 20 61 20 6c 69 | sandwic|hes a li|
|000014b0| 6e 65 0a 58 20 2a 20 20 | 6f 66 20 65 6e 65 6d 79 |ne.X * |of enemy|
|000014c0| 20 70 69 65 63 65 73 20 | 69 6e 20 74 68 65 20 64 | pieces |in the d|
|000014d0| 69 72 65 63 74 69 6f 6e | 20 5b 72 6f 77 5f 69 6e |irection| [row_in|
|000014e0| 63 2c 20 63 6f 6c 5f 69 | 6e 63 5d 3b 0a 58 20 2a |c, col_i|nc];.X *|
|000014f0| 20 20 49 66 20 28 73 5f | 66 6c 69 70 29 20 74 68 | If (s_|flip) th|
|00001500| 65 6e 20 75 70 64 61 74 | 65 20 70 6f 73 69 74 69 |en updat|e positi|
|00001510| 6f 6e 20 62 79 20 63 61 | 70 74 75 72 69 6e 67 20 |on by ca|pturing |
|00001520| 73 75 63 68 20 70 69 65 | 63 65 73 0a 58 20 2a 2f |such pie|ces.X */|
|00001530| 0a 58 0a 58 73 61 6e 64 | 77 69 63 68 28 69 6e 63 |.X.Xsand|wich(inc|
|00001540| 72 65 6d 65 6e 74 29 0a | 58 72 65 67 69 73 74 65 |rement).|Xregiste|
|00001550| 72 20 69 6e 74 20 69 6e | 63 72 65 6d 65 6e 74 20 |r int in|crement |
|00001560| 3b 0a 58 7b 0a 58 20 20 | 72 65 67 69 73 74 65 72 |;.X{.X |register|
|00001570| 20 69 6e 74 20 73 71 75 | 61 72 65 2c 6f 66 66 73 | int squ|are,offs|
|00001580| 65 74 20 3b 0a 58 20 20 | 69 6e 74 20 72 6f 77 5f |et ;.X |int row_|
|00001590| 6f 66 66 73 65 74 2c 63 | 6f 6c 5f 6f 66 66 73 65 |offset,c|ol_offse|
|000015a0| 74 2c 70 69 65 63 65 2c | 70 69 65 63 65 5f 63 6f |t,piece,|piece_co|
|000015b0| 75 6e 74 20 3b 0a 58 0a | 58 20 20 69 66 20 28 73 |unt ;.X.|X if (s|
|000015c0| 5f 70 6f 73 2d 3e 73 71 | 75 61 72 65 5b 73 5f 6d |_pos->sq|uare[s_m|
|000015d0| 6f 76 65 2b 69 6e 63 72 | 65 6d 65 6e 74 5d 20 21 |ove+incr|ement] !|
|000015e0| 3d 20 73 5f 6f 70 70 6f | 6e 65 6e 74 29 20 72 65 |= s_oppo|nent) re|
|000015f0| 74 75 72 6e 28 46 41 4c | 53 45 29 20 3b 0a 58 20 |turn(FAL|SE) ;.X |
|00001600| 0a 58 2f 2a 20 20 51 75 | 69 63 6b 20 74 65 73 74 |.X/* Qu|ick test|
|00001610| 20 74 6f 20 63 61 74 63 | 68 20 6d 6f 73 74 20 66 | to catc|h most f|
|00001620| 61 69 6c 75 72 65 73 20 | 2d 0a 58 20 2a 20 20 6e |ailures |-.X * n|
|00001630| 6f 74 65 20 74 68 61 74 | 20 74 68 65 20 74 65 73 |ote that| the tes|
|00001640| 74 65 64 20 73 71 75 61 | 72 65 20 6d 61 79 20 6e |ted squa|re may n|
|00001650| 6f 74 20 65 76 65 6e 0a | 58 20 2a 20 20 62 65 20 |ot even.|X * be |
|00001660| 6f 6e 20 74 68 65 20 62 | 6f 61 72 64 2c 20 62 75 |on the b|oard, bu|
|00001670| 74 20 74 68 65 20 63 6f | 6e 64 69 74 69 6f 6e 20 |t the co|ndition |
|00001680| 69 73 20 61 0a 58 20 2a | 20 20 73 75 66 66 69 63 |is a.X *| suffic|
|00001690| 69 65 6e 74 20 6f 6e 65 | 20 66 6f 72 20 66 61 69 |ient one| for fai|
|000016a0| 6c 75 72 65 2e 0a 58 20 | 2a 2f 0a 58 20 0a 58 20 |lure..X |*/.X .X |
|000016b0| 20 72 6f 77 5f 6f 66 66 | 73 65 74 20 3d 20 28 69 | row_off|set = (i|
|000016c0| 6e 63 72 65 6d 65 6e 74 | 20 3c 20 2d 31 20 3f 20 |ncrement| < -1 ? |
|000016d0| 73 5f 72 6f 77 20 20 3a | 20 20 20 20 20 20 2f 2a |s_row :| /*|
|000016e0| 20 69 6e 63 20 2d 31 3a | 20 2d 39 2c 20 2d 38 2c | inc -1:| -9, -8,|
|000016f0| 20 2d 37 20 2a 2f 0a 58 | 20 20 20 20 69 6e 63 72 | -7 */.X| incr|
|00001700| 65 6d 65 6e 74 20 3e 20 | 20 31 20 3f 20 37 2d 73 |ement > | 1 ? 7-s|
|00001710| 5f 72 6f 77 20 3a 20 38 | 29 20 3b 20 20 20 20 20 |_row : 8|) ; |
|00001720| 20 20 20 20 20 20 20 2f | 2a 20 69 6e 63 20 20 31 | /|* inc 1|
|00001730| 3a 20 20 37 2c 20 20 38 | 2c 20 20 39 20 2a 2f 0a |: 7, 8|, 9 */.|
|00001740| 58 20 20 63 6f 6c 5f 6f | 66 66 73 65 74 20 3d 20 |X col_o|ffset = |
|00001750| 28 69 6e 63 72 65 6d 65 | 6e 74 20 26 20 34 20 3f |(increme|nt & 4 ?|
|00001760| 20 73 5f 63 6f 6c 20 20 | 20 3a 20 20 20 20 20 20 | s_col | : |
|00001770| 2f 2a 20 69 6e 63 20 2d | 31 3a 20 2d 39 2c 20 2d |/* inc -|1: -9, -|
|00001780| 31 2c 20 20 37 20 2a 2f | 0a 58 20 20 20 20 69 6e |1, 7 */|.X in|
|00001790| 63 72 65 6d 65 6e 74 20 | 26 20 31 20 3f 20 37 2d |crement |& 1 ? 7-|
|000017a0| 73 5f 63 6f 6c 20 3a 20 | 38 29 20 3b 20 20 20 20 |s_col : |8) ; |
|000017b0| 20 20 20 20 20 20 20 20 | 20 2f 2a 20 69 6e 63 20 | | /* inc |
|000017c0| 20 31 3a 20 2d 37 2c 20 | 20 31 2c 20 20 39 20 2a | 1: -7, | 1, 9 *|
|000017d0| 2f 0a 58 20 0a 58 20 20 | 6f 66 66 73 65 74 20 3d |/.X .X |offset =|
|000017e0| 20 28 72 6f 77 5f 6f 66 | 66 73 65 74 20 3e 20 63 | (row_of|fset > c|
|000017f0| 6f 6c 5f 6f 66 66 73 65 | 74 20 3f 20 63 6f 6c 5f |ol_offse|t ? col_|
|00001800| 6f 66 66 73 65 74 20 3a | 20 72 6f 77 5f 6f 66 66 |offset :| row_off|
|00001810| 73 65 74 29 20 3b 0a 58 | 0a 58 2f 2a 20 6f 66 66 |set) ;.X|.X/* off|
|00001820| 73 65 74 20 3d 20 73 68 | 6f 72 74 65 73 74 20 64 |set = sh|ortest d|
|00001830| 69 73 74 61 6e 63 65 20 | 74 6f 20 61 6e 20 65 64 |istance |to an ed|
|00001840| 67 65 20 69 6e 20 74 68 | 65 20 64 69 72 65 63 74 |ge in th|e direct|
|00001850| 69 6f 6e 20 6f 66 20 73 | 65 61 72 63 68 20 2a 2f |ion of s|earch */|
|00001860| 0a 58 0a 58 20 20 69 66 | 20 28 32 20 3e 20 6f 66 |.X.X if| (2 > of|
|00001870| 66 73 65 74 29 20 72 65 | 74 75 72 6e 28 46 41 4c |fset) re|turn(FAL|
|00001880| 53 45 29 20 3b 0a 58 20 | 0a 58 20 20 70 69 65 63 |SE) ;.X |.X piec|
|00001890| 65 5f 63 6f 75 6e 74 20 | 3d 20 31 20 3b 0a 58 20 |e_count |= 1 ;.X |
|000018a0| 20 73 71 75 61 72 65 20 | 3d 20 73 5f 6d 6f 76 65 | square |= s_move|
|000018b0| 2b 69 6e 63 72 65 6d 65 | 6e 74 20 3b 0a 58 20 0a |+increme|nt ;.X .|
|000018c0| 58 20 20 77 68 69 6c 65 | 20 28 2d 2d 6f 66 66 73 |X while| (--offs|
|000018d0| 65 74 29 0a 58 20 20 20 | 20 7b 0a 58 20 20 20 20 |et).X | {.X |
|000018e0| 20 20 69 66 20 28 21 28 | 70 69 65 63 65 20 3d 20 | if (!(|piece = |
|000018f0| 73 5f 70 6f 73 2d 3e 73 | 71 75 61 72 65 5b 73 71 |s_pos->s|quare[sq|
|00001900| 75 61 72 65 20 2b 3d 20 | 69 6e 63 72 65 6d 65 6e |uare += |incremen|
|00001910| 74 5d 29 29 0a 58 20 20 | 72 65 74 75 72 6e 28 46 |t])).X |return(F|
|00001920| 41 4c 53 45 29 20 3b 20 | 20 2f 2a 20 49 66 20 65 |ALSE) ; | /* If e|
|00001930| 6d 70 74 79 20 73 71 75 | 61 72 65 2c 20 67 69 76 |mpty squ|are, giv|
|00001940| 65 20 75 70 20 2a 2f 0a | 58 20 0a 58 20 20 20 20 |e up */.|X .X |
|00001950| 20 20 69 66 20 28 70 69 | 65 63 65 20 3d 3d 20 73 | if (pi|ece == s|
|00001960| 5f 70 6c 61 79 65 72 29 | 20 62 72 65 61 6b 20 3b |_player)| break ;|
|00001970| 0a 58 20 20 20 20 20 20 | 65 6c 73 65 20 70 69 65 |.X |else pie|
|00001980| 63 65 5f 63 6f 75 6e 74 | 2b 2b 20 3b 20 20 20 20 |ce_count|++ ; |
|00001990| 20 20 2f 2a 20 43 6f 75 | 6e 74 20 6f 70 70 6f 6e | /* Cou|nt oppon|
|000019a0| 65 6e 74 27 73 20 70 69 | 65 63 65 73 20 65 6e 63 |ent's pi|eces enc|
|000019b0| 6f 75 6e 74 65 72 65 64 | 20 2a 2f 0a 58 20 20 20 |ountered| */.X |
|000019c0| 20 7d 0a 58 0a 58 20 20 | 69 66 20 28 21 6f 66 66 | }.X.X |if (!off|
|000019d0| 73 65 74 29 20 72 65 74 | 75 72 6e 28 46 41 4c 53 |set) ret|urn(FALS|
|000019e0| 45 29 20 3b 0a 58 0a 58 | 20 20 69 66 20 28 73 5f |E) ;.X.X| if (s_|
|000019f0| 66 6c 69 70 29 0a 58 20 | 20 20 20 77 68 69 6c 65 |flip).X | while|
|00001a00| 20 28 70 69 65 63 65 5f | 63 6f 75 6e 74 2d 2d 29 | (piece_|count--)|
|00001a10| 0a 58 20 20 20 20 20 20 | 73 5f 70 6f 73 2d 3e 73 |.X |s_pos->s|
|00001a20| 71 75 61 72 65 5b 73 71 | 75 61 72 65 20 2d 3d 20 |quare[sq|uare -= |
|00001a30| 69 6e 63 72 65 6d 65 6e | 74 5d 20 3d 20 73 5f 70 |incremen|t] = s_p|
|00001a40| 6c 61 79 65 72 20 3b 0a | 58 0a 58 20 20 72 65 74 |layer ;.|X.X ret|
|00001a50| 75 72 6e 20 28 54 52 55 | 45 29 20 3b 0a 58 7d 0a |urn (TRU|E) ;.X}.|
|00001a60| 58 0a 58 0a 58 2f 2a 20 | 20 41 6c 70 68 61 2d 62 |X.X.X/* | Alpha-b|
|00001a70| 65 74 61 20 70 72 75 6e | 69 6e 67 20 61 6c 67 6f |eta prun|ing algo|
|00001a80| 72 69 74 68 6d 2e 0a 58 | 20 2a 0a 58 20 2a 20 20 |rithm..X| *.X * |
|00001a90| 49 66 20 73 69 67 6e 20 | 3d 20 31 2c 20 74 68 65 |If sign |= 1, the|
|00001aa0| 6e 20 74 72 79 20 74 6f | 20 4d 41 58 49 4d 49 53 |n try to| MAXIMIS|
|00001ab0| 45 20 73 63 6f 72 65 2c | 20 65 6c 73 65 20 4d 49 |E score,| else MI|
|00001ac0| 4e 49 4d 49 53 45 2e 0a | 58 20 2a 20 20 50 61 72 |NIMISE..|X * Par|
|00001ad0| 65 6e 74 20 6e 6f 64 65 | 20 77 61 6e 74 73 20 74 |ent node| wants t|
|00001ae0| 6f 20 4d 49 4e 49 4d 49 | 53 45 2f 4d 41 58 49 4d |o MINIMI|SE/MAXIM|
|00001af0| 49 53 45 2c 20 73 6f 20 | 61 73 20 73 6f 6f 6e 20 |ISE, so |as soon |
|00001b00| 61 73 0a 58 20 2a 20 20 | 77 65 20 65 78 63 65 65 |as.X * |we excee|
|00001b10| 64 20 70 61 72 65 6e 74 | 5f 6f 70 74 2c 20 67 69 |d parent|_opt, gi|
|00001b20| 76 65 20 75 70 20 61 6e | 64 20 72 65 74 75 72 6e |ve up an|d return|
|00001b30| 20 49 4e 46 49 4e 49 54 | 59 2e 0a 58 20 2a 20 20 | INFINIT|Y..X * |
|00001b40| 52 65 74 75 72 6e 20 62 | 65 73 74 20 6d 6f 76 65 |Return b|est move|
|00001b50| 20 69 6e 20 70 61 72 65 | 6e 74 5f 62 65 73 74 2e | in pare|nt_best.|
|00001b60| 0a 58 20 2a 0a 58 20 2a | 20 20 45 78 74 65 72 6e |.X *.X *| Extern|
|00001b70| 61 6c 73 20 75 73 65 64 | 3a 0a 58 20 2a 20 20 20 |als used|:.X * |
|00001b80| 20 20 20 73 74 61 74 69 | 63 5f 65 76 61 6c 28 70 | stati|c_eval(p|
|00001b90| 6f 73 69 74 69 6f 6e 29 | 0a 58 20 2a 20 20 20 20 |osition)|.X * |
|00001ba0| 20 20 49 53 4d 4f 56 45 | 28 70 6f 73 69 74 69 6f | ISMOVE|(positio|
|00001bb0| 6e 2c 70 6c 61 79 65 72 | 29 20 20 20 5b 64 6f 65 |n,player|) [doe|
|00001bc0| 73 20 70 6c 61 79 65 72 | 20 68 61 76 65 20 61 20 |s player| have a |
|00001bd0| 6c 65 67 61 6c 20 6d 6f | 76 65 3f 5d 0a 58 20 2a |legal mo|ve?].X *|
|00001be0| 20 20 20 20 20 20 67 61 | 6d 65 5f 65 6e 64 65 64 | ga|me_ended|
|00001bf0| 28 70 6f 73 29 0a 58 20 | 2a 20 20 20 20 20 20 74 |(pos).X |* t|
|00001c00| 79 70 65 64 65 66 20 42 | 4f 41 52 44 0a 58 20 2a |ypedef B|OARD.X *|
|00001c10| 20 20 20 20 20 20 61 73 | 70 69 72 61 74 69 6f 6e | as|piration|
|00001c20| 28 70 6c 61 79 65 72 2c | 64 65 70 74 68 2c 70 6f |(player,|depth,po|
|00001c30| 73 69 74 69 6f 6e 29 0a | 58 20 2a 20 20 5b 72 65 |sition).|X * [re|
|00001c40| 74 75 72 6e 20 74 68 65 | 20 61 73 70 69 72 61 74 |turn the| aspirat|
|00001c50| 69 6f 6e 20 6c 69 6d 69 | 74 20 66 6f 72 20 6e 65 |ion limi|t for ne|
|00001c60| 78 74 20 6c 65 76 65 6c | 20 6f 66 20 73 65 61 72 |xt level| of sear|
|00001c70| 63 68 5d 0a 58 20 2a 20 | 20 20 20 20 20 6e 65 78 |ch].X * | nex|
|00001c80| 74 6d 6f 76 65 28 70 6f | 73 69 74 69 6f 6e 2c 6d |tmove(po|sition,m|
|00001c90| 76 2c 6e 65 78 74 70 6f | 73 69 74 69 6f 6e 2c 70 |v,nextpo|sition,p|
|00001ca0| 6c 61 79 65 72 29 0a 58 | 20 2a 20 20 5b 67 69 76 |layer).X| * [giv|
|00001cb0| 65 20 74 68 65 20 6e 65 | 78 74 20 6c 65 67 61 6c |e the ne|xt legal|
|00001cc0| 20 6d 6f 76 65 20 66 6f | 72 20 70 6c 61 79 65 72 | move fo|r player|
|00001cd0| 20 69 6e 20 70 6f 73 69 | 74 69 6f 6e 3b 0a 58 20 | in posi|tion;.X |
|00001ce0| 2a 20 20 20 70 75 74 20 | 74 68 65 20 72 65 73 75 |* put |the resu|
|00001cf0| 6c 74 69 6e 67 20 70 6f | 73 69 74 69 6f 6e 20 69 |lting po|sition i|
|00001d00| 6e 20 6e 65 78 74 70 6f | 73 69 74 69 6f 6e 5d 0a |n nextpo|sition].|
|00001d10| 58 20 2a 2f 0a 58 0a 58 | 61 6c 66 61 62 65 74 61 |X */.X.X|alfabeta|
|00001d20| 28 70 6f 73 2c 20 64 65 | 70 74 68 2c 20 70 61 72 |(pos, de|pth, par|
|00001d30| 65 6e 74 5f 6f 70 74 2c | 20 73 69 67 6e 2c 20 70 |ent_opt,| sign, p|
|00001d40| 61 72 65 6e 74 5f 62 65 | 73 74 29 0a 58 42 4f 41 |arent_be|st).XBOA|
|00001d50| 52 44 20 2a 70 6f 73 20 | 3b 0a 58 69 6e 74 20 64 |RD *pos |;.Xint d|
|00001d60| 65 70 74 68 2c 20 70 61 | 72 65 6e 74 5f 6f 70 74 |epth, pa|rent_opt|
|00001d70| 2c 20 73 69 67 6e 2c 20 | 2a 70 61 72 65 6e 74 5f |, sign, |*parent_|
|00001d80| 62 65 73 74 20 3b 0a 58 | 7b 0a 58 20 20 42 4f 41 |best ;.X|{.X BOA|
|00001d90| 52 44 20 6e 65 78 74 70 | 6f 73 20 3b 0a 58 20 20 |RD nextp|os ;.X |
|00001da0| 69 6e 74 20 76 61 6c 75 | 65 2c 74 68 69 73 5f 6f |int valu|e,this_o|
|00001db0| 70 74 2c 74 68 69 73 5f | 62 65 73 74 20 3d 20 4e |pt,this_|best = N|
|00001dc0| 4f 4d 4f 56 45 2c 6d 76 | 20 3d 20 4e 4f 4d 4f 56 |OMOVE,mv| = NOMOV|
|00001dd0| 45 2c 61 73 70 20 3d 20 | 30 20 3b 0a 58 20 0a 58 |E,asp = |0 ;.X .X|
|00001de0| 20 20 69 66 20 28 28 64 | 65 70 74 68 3d 3d 30 29 | if ((d|epth==0)|
|00001df0| 20 7c 7c 20 67 61 6d 65 | 5f 65 6e 64 65 64 28 70 | || game|_ended(p|
|00001e00| 6f 73 29 29 0a 58 20 20 | 20 20 7b 0a 58 20 20 20 |os)).X | {.X |
|00001e10| 20 20 20 76 61 6c 75 65 | 20 3d 20 73 74 61 74 69 | value| = stati|
|00001e20| 63 5f 65 76 61 6c 28 70 | 6f 73 29 20 3b 0a 58 20 |c_eval(p|os) ;.X |
|00001e30| 20 20 20 20 20 2a 70 61 | 72 65 6e 74 5f 62 65 73 | *pa|rent_bes|
|00001e40| 74 20 3d 20 4e 4f 4d 4f | 56 45 20 3b 0a 58 20 20 |t = NOMO|VE ;.X |
|00001e50| 20 20 20 20 69 66 20 28 | 28 73 69 67 6e 2a 76 61 | if (|(sign*va|
|00001e60| 6c 75 65 29 20 3e 20 28 | 73 69 67 6e 2a 70 61 72 |lue) > (|sign*par|
|00001e70| 65 6e 74 5f 6f 70 74 29 | 29 20 72 65 74 75 72 6e |ent_opt)|) return|
|00001e80| 28 73 69 67 6e 2a 49 4e | 46 49 4e 49 54 59 29 20 |(sign*IN|FINITY) |
|00001e90| 3b 0a 58 20 20 20 20 20 | 20 65 6c 73 65 20 72 65 |;.X | else re|
|00001ea0| 74 75 72 6e 20 28 76 61 | 6c 75 65 29 20 3b 0a 58 |turn (va|lue) ;.X|
|00001eb0| 20 20 20 20 7d 0a 58 0a | 58 20 20 61 62 5f 63 6f | }.X.|X ab_co|
|00001ec0| 75 6e 74 2b 2b 20 3b 20 | 20 20 20 20 2f 2a 20 52 |unt++ ; | /* R|
|00001ed0| 65 63 6f 72 64 20 62 6f | 61 72 64 73 20 64 79 6e |ecord bo|ards dyn|
|00001ee0| 61 6d 69 63 61 6c 6c 79 | 20 65 76 61 6c 75 61 74 |amically| evaluat|
|00001ef0| 65 64 20 2a 2f 0a 58 20 | 20 74 68 69 73 5f 6f 70 |ed */.X | this_op|
|00001f00| 74 20 3d 20 28 73 69 67 | 6e 20 3d 3d 20 31 20 3f |t = (sig|n == 1 ?|
|00001f10| 20 2d 49 4e 46 49 4e 49 | 54 59 20 3a 20 49 4e 46 | -INFINI|TY : INF|
|00001f20| 49 4e 49 54 59 29 20 3b | 0a 58 0a 58 20 20 69 66 |INITY) ;|.X.X if|
|00001f30| 20 28 21 49 53 4d 4f 56 | 45 28 70 6f 73 2c 73 69 | (!ISMOV|E(pos,si|
|00001f40| 67 6e 29 29 20 20 20 20 | 2f 2a 20 4e 6f 20 6c 65 |gn)) |/* No le|
|00001f50| 67 61 6c 20 6d 6f 76 65 | 20 2a 2f 0a 58 20 20 20 |gal move| */.X |
|00001f60| 20 7b 0a 58 20 20 20 20 | 20 20 76 61 6c 75 65 20 | {.X | value |
|00001f70| 3d 20 61 6c 66 61 62 65 | 74 61 28 70 6f 73 2c 64 |= alfabe|ta(pos,d|
|00001f80| 65 70 74 68 2c 74 68 69 | 73 5f 6f 70 74 2c 2d 73 |epth,thi|s_opt,-s|
|00001f90| 69 67 6e 2c 26 74 68 69 | 73 5f 62 65 73 74 29 20 |ign,&thi|s_best) |
|00001fa0| 3b 0a 58 20 20 20 20 20 | 20 67 6f 74 6f 20 76 61 |;.X | goto va|
|00001fb0| 6c 66 6f 75 6e 64 20 3b | 0a 58 20 20 20 20 7d 0a |lfound ;|.X }.|
|00001fc0| 58 0a 58 20 20 61 73 70 | 20 3d 20 73 69 67 6e 20 |X.X asp| = sign |
|00001fd0| 2a 20 61 73 70 69 72 61 | 74 69 6f 6e 28 73 69 67 |* aspira|tion(sig|
|00001fe0| 6e 2c 64 65 70 74 68 29 | 20 3b 0a 58 0a 58 20 20 |n,depth)| ;.X.X |
|00001ff0| 77 68 69 6c 65 20 28 28 | 6d 76 20 3d 20 6e 65 78 |while ((|mv = nex|
|00002000| 74 6d 6f 76 65 28 70 6f | 73 2c 6d 76 2c 26 6e 65 |tmove(po|s,mv,&ne|
|00002010| 78 74 70 6f 73 2c 73 69 | 67 6e 29 29 20 21 3d 20 |xtpos,si|gn)) != |
|00002020| 4e 4f 4d 4f 56 45 29 0a | 58 20 20 20 20 7b 0a 58 |NOMOVE).|X {.X|
|00002030| 20 20 20 20 20 20 76 61 | 6c 75 65 20 3d 20 61 6c | va|lue = al|
|00002040| 66 61 62 65 74 61 28 26 | 6e 65 78 74 70 6f 73 2c |fabeta(&|nextpos,|
|00002050| 64 65 70 74 68 2d 31 2c | 74 68 69 73 5f 6f 70 74 |depth-1,|this_opt|
|00002060| 2c 2d 73 69 67 6e 2c 26 | 74 68 69 73 5f 62 65 73 |,-sign,&|this_bes|
|00002070| 74 29 20 3b 0a 58 0a 58 | 76 61 6c 66 6f 75 6e 64 |t) ;.X.X|valfound|
|00002080| 3a 0a 58 0a 58 20 20 20 | 20 20 20 69 66 20 28 28 |:.X.X | if ((|
|00002090| 73 69 67 6e 2a 76 61 6c | 75 65 29 20 3e 3d 20 28 |sign*val|ue) >= (|
|000020a0| 73 69 67 6e 2a 70 61 72 | 65 6e 74 5f 6f 70 74 29 |sign*par|ent_opt)|
|000020b0| 29 20 72 65 74 75 72 6e | 28 73 69 67 6e 2a 49 4e |) return|(sign*IN|
|000020c0| 46 49 4e 49 54 59 29 20 | 3b 0a 58 0a 58 20 20 20 |FINITY) |;.X.X |
|000020d0| 20 20 20 69 66 20 28 28 | 73 69 67 6e 2a 76 61 6c | if ((|sign*val|
|000020e0| 75 65 29 20 3e 20 61 73 | 70 29 0a 58 20 20 20 20 |ue) > as|p).X |
|000020f0| 20 20 20 20 7b 0a 58 20 | 20 20 20 20 20 20 20 20 | {.X | |
|00002100| 20 2a 70 61 72 65 6e 74 | 5f 62 65 73 74 20 3d 20 | *parent|_best = |
|00002110| 6d 76 20 3b 0a 58 20 20 | 20 20 20 20 20 20 20 20 |mv ;.X | |
|00002120| 72 65 74 75 72 6e 28 76 | 61 6c 75 65 29 20 3b 0a |return(v|alue) ;.|
|00002130| 58 20 20 20 20 20 20 20 | 20 7d 0a 58 0a 58 20 20 |X | }.X.X |
|00002140| 20 20 20 20 69 66 20 28 | 28 73 69 67 6e 2a 76 61 | if (|(sign*va|
|00002150| 6c 75 65 29 20 3e 20 28 | 73 69 67 6e 2a 74 68 69 |lue) > (|sign*thi|
|00002160| 73 5f 6f 70 74 29 29 0a | 58 20 20 20 20 20 20 20 |s_opt)).|X |
|00002170| 20 7b 0a 58 20 20 20 20 | 20 20 20 20 20 20 74 68 | {.X | th|
|00002180| 69 73 5f 6f 70 74 20 3d | 20 76 61 6c 75 65 20 3b |is_opt =| value ;|
|00002190| 0a 58 20 20 20 20 20 20 | 20 20 20 20 2a 70 61 72 |.X | *par|
|000021a0| 65 6e 74 5f 62 65 73 74 | 20 3d 20 6d 76 20 3b 0a |ent_best| = mv ;.|
|000021b0| 58 20 20 20 20 20 20 20 | 20 7d 0a 58 0a 58 2f 2a |X | }.X.X/*|
|000021c0| 20 20 49 66 20 74 77 6f | 20 6d 6f 76 65 73 20 68 | If two| moves h|
|000021d0| 61 76 65 20 73 61 6d 65 | 20 65 76 61 6c 75 61 74 |ave same| evaluat|
|000021e0| 69 6f 6e 2c 20 63 68 6f | 6f 73 65 0a 58 20 2a 20 |ion, cho|ose.X * |
|000021f0| 20 75 6e 69 66 6f 72 6d | 6c 79 20 72 61 6e 64 6f | uniform|ly rando|
|00002200| 6d 6c 79 20 62 65 74 77 | 65 65 6e 20 74 68 65 6d |mly betw|een them|
|00002210| 20 28 6f 66 20 63 6f 75 | 72 73 65 2c 0a 58 20 2a | (of cou|rse,.X *|
|00002220| 20 20 77 68 65 72 65 20 | 73 65 76 65 72 61 6c 20 | where |several |
|00002230| 6d 6f 76 65 73 20 68 61 | 76 65 20 73 61 6d 65 20 |moves ha|ve same |
|00002240| 76 61 6c 75 65 2c 20 74 | 68 69 73 0a 58 20 2a 20 |value, t|his.X * |
|00002250| 20 69 73 20 62 69 61 73 | 65 64 20 74 6f 77 61 72 | is bias|ed towar|
|00002260| 64 73 20 74 68 65 20 6c | 61 74 65 72 20 6f 6e 65 |ds the l|ater one|
|00002270| 73 0a 58 20 2a 2f 0a 58 | 0a 58 20 20 20 20 20 20 |s.X */.X|.X |
|00002280| 69 66 20 28 28 76 61 6c | 75 65 20 3d 3d 20 74 68 |if ((val|ue == th|
|00002290| 69 73 5f 6f 70 74 29 20 | 26 26 20 28 72 61 6e 64 |is_opt) |&& (rand|
|000022a0| 28 29 20 26 20 30 32 30 | 29 29 20 2a 70 61 72 65 |() & 020|)) *pare|
|000022b0| 6e 74 5f 62 65 73 74 20 | 3d 20 6d 76 20 3b 0a 58 |nt_best |= mv ;.X|
|000022c0| 20 20 20 20 7d 0a 58 20 | 20 72 65 74 75 72 6e 28 | }.X | return(|
|000022d0| 74 68 69 73 5f 6f 70 74 | 29 20 3b 0a 58 7d 0a 58 |this_opt|) ;.X}.X|
|000022e0| 0a 58 0a 58 2f 2a 20 20 | 41 73 70 69 72 61 74 69 |.X.X/* |Aspirati|
|000022f0| 6f 6e 73 20 61 72 65 20 | 61 73 20 66 6f 6c 6c 6f |ons are |as follo|
|00002300| 77 73 3a 0a 58 20 2a 20 | 20 41 73 70 69 72 61 74 |ws:.X * | Aspirat|
|00002310| 69 6f 6e 2d 6c 65 76 65 | 6c 20 20 20 20 20 20 20 |ion-leve|l |
|00002320| 41 73 70 69 72 61 74 69 | 6f 6e 0a 58 20 2a 20 20 |Aspirati|on.X * |
|00002330| 20 20 20 20 31 20 20 20 | 20 20 20 20 20 20 54 68 | 1 | Th|
|00002340| 65 20 77 6f 72 73 65 20 | 6f 66 20 30 2c 20 73 74 |e worse |of 0, st|
|00002350| 61 74 69 63 20 76 61 6c | 75 65 0a 58 20 2a 20 20 |atic val|ue.X * |
|00002360| 20 20 20 20 32 20 20 20 | 20 20 20 20 20 20 54 68 | 2 | Th|
|00002370| 65 20 73 74 61 74 69 63 | 20 76 61 6c 75 65 0a 58 |e static| value.X|
|00002380| 20 2a 20 20 20 20 20 20 | 33 20 20 20 20 20 20 20 | * |3 |
|00002390| 20 20 31 30 25 20 62 65 | 74 74 65 72 20 74 68 61 | 10% be|tter tha|
|000023a0| 6e 20 74 68 65 20 73 74 | 61 74 69 63 20 76 61 6c |n the st|atic val|
|000023b0| 75 65 0a 58 20 2a 20 20 | 20 20 20 20 34 20 20 20 |ue.X * | 4 |
|000023c0| 20 20 20 20 20 20 32 35 | 25 20 62 65 74 74 65 72 | 25|% better|
|000023d0| 20 74 68 61 6e 20 74 68 | 65 20 73 74 61 74 69 63 | than th|e static|
|000023e0| 20 76 61 6c 75 65 0a 58 | 20 2a 20 20 20 20 20 20 | value.X| * |
|000023f0| 35 20 20 20 20 20 20 20 | 20 20 41 6e 79 20 77 69 |5 | Any wi|
|00002400| 6e 6e 69 6e 67 20 6d 6f | 76 65 0a 58 20 2a 20 20 |nning mo|ve.X * |
|00002410| 20 20 20 20 36 20 20 20 | 20 20 20 20 20 20 54 68 | 6 | Th|
|00002420| 65 20 6d 6f 76 65 20 77 | 69 6e 6e 69 6e 67 20 62 |e move w|inning b|
|00002430| 79 20 74 68 65 20 67 72 | 65 61 74 65 73 74 20 6d |y the gr|eatest m|
|00002440| 61 72 67 69 6e 0a 58 20 | 2a 0a 58 20 2a 20 20 49 |argin.X |*.X * I|
|00002450| 74 20 69 73 20 61 73 73 | 75 6d 65 64 20 74 68 61 |t is ass|umed tha|
|00002460| 74 20 74 68 65 20 6f 70 | 70 6f 6e 65 6e 74 20 68 |t the op|ponent h|
|00002470| 61 73 0a 58 20 2a 20 20 | 74 68 65 20 73 61 6d 65 |as.X * |the same|
|00002480| 20 6c 65 76 65 6c 20 6f | 66 20 61 73 70 69 72 61 | level o|f aspira|
|00002490| 74 69 6f 6e 20 61 73 20 | 74 68 65 20 70 72 6f 67 |tion as |the prog|
|000024a0| 72 61 6d 2e 0a 58 20 2a | 2f 0a 58 0a 58 73 65 74 |ram..X *|/.X.Xset|
|000024b0| 5f 61 73 70 69 72 61 74 | 69 6f 6e 28 70 6f 73 69 |_aspirat|ion(posi|
|000024c0| 74 69 6f 6e 29 0a 58 42 | 4f 41 52 44 20 2a 70 6f |tion).XB|OARD *po|
|000024d0| 73 69 74 69 6f 6e 20 3b | 0a 58 7b 0a 58 20 20 69 |sition ;|.X{.X i|
|000024e0| 66 20 28 61 73 70 69 72 | 65 20 3d 3d 20 4d 41 58 |f (aspir|e == MAX|
|000024f0| 41 53 50 49 52 45 29 0a | 58 20 20 20 20 7b 0a 58 |ASPIRE).|X {.X|
|00002500| 20 20 20 20 20 20 65 78 | 70 65 63 74 65 64 20 3d | ex|pected =|
|00002510| 20 30 20 3b 0a 58 20 20 | 20 20 20 20 6d 61 72 67 | 0 ;.X | marg|
|00002520| 69 6e 20 3d 20 49 4e 46 | 49 4e 49 54 59 20 3b 0a |in = INF|INITY ;.|
|00002530| 58 20 20 20 20 20 20 72 | 65 74 75 72 6e 20 3b 0a |X r|eturn ;.|
|00002540| 58 20 20 20 20 7d 0a 58 | 20 0a 58 20 20 69 66 20 |X }.X| .X if |
|00002550| 28 61 73 70 69 72 65 20 | 3d 3d 20 28 4d 41 58 41 |(aspire |== (MAXA|
|00002560| 53 50 49 52 45 2d 31 29 | 29 0a 58 20 20 20 20 7b |SPIRE-1)|).X {|
|00002570| 0a 58 20 20 20 20 20 20 | 65 78 70 65 63 74 65 64 |.X |expected|
|00002580| 20 3d 20 30 20 3b 0a 58 | 20 20 20 20 20 20 6d 61 | = 0 ;.X| ma|
|00002590| 72 67 69 6e 20 3d 20 49 | 4e 46 49 4e 49 54 59 2d |rgin = I|NFINITY-|
|000025a0| 36 34 20 3b 0a 58 20 20 | 20 20 20 20 72 65 74 75 |64 ;.X | retu|
|000025b0| 72 6e 20 3b 0a 58 20 20 | 20 20 7d 0a 58 20 0a 58 |rn ;.X | }.X .X|
|000025c0| 20 20 65 78 70 65 63 74 | 65 64 20 3d 20 73 74 61 | expect|ed = sta|
|000025d0| 74 69 63 5f 65 76 61 6c | 28 70 6f 73 69 74 69 6f |tic_eval|(positio|
|000025e0| 6e 29 20 3b 0a 58 20 0a | 58 20 20 73 77 69 74 63 |n) ;.X .|X switc|
|000025f0| 68 20 28 61 73 70 69 72 | 65 29 0a 58 20 20 20 20 |h (aspir|e).X |
|00002600| 7b 0a 58 20 20 20 20 20 | 20 63 61 73 65 20 31 20 |{.X | case 1 |
|00002610| 3a 20 65 78 70 65 63 74 | 65 64 20 2f 3d 20 32 20 |: expect|ed /= 2 |
|00002620| 3b 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |;.X | |
|00002630| 20 20 6d 61 72 67 69 6e | 20 3d 20 2d 61 62 73 28 | margin| = -abs(|
|00002640| 65 78 70 65 63 74 65 64 | 29 20 3b 0a 58 20 20 20 |expected|) ;.X |
|00002650| 20 20 20 20 20 20 20 20 | 20 20 20 20 72 65 74 75 | | retu|
|00002660| 72 6e 20 3b 0a 58 20 20 | 20 20 20 20 63 61 73 65 |rn ;.X | case|
|00002670| 20 32 20 3a 20 6d 61 72 | 67 69 6e 20 3d 20 30 20 | 2 : mar|gin = 0 |
|00002680| 3b 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |;.X | |
|00002690| 20 20 72 65 74 75 72 6e | 20 3b 0a 58 20 20 20 20 | return| ;.X |
|000026a0| 20 20 63 61 73 65 20 33 | 20 3a 20 6d 61 72 67 69 | case 3| : margi|
|000026b0| 6e 20 3d 20 61 62 73 28 | 65 78 70 65 63 74 65 64 |n = abs(|expected|
|000026c0| 2f 31 30 29 20 3b 0a 58 | 20 20 20 20 20 20 20 20 |/10) ;.X| |
|000026d0| 20 20 20 20 20 20 20 72 | 65 74 75 72 6e 20 3b 0a | r|eturn ;.|
|000026e0| 58 20 20 20 20 20 20 63 | 61 73 65 20 34 20 3a 20 |X c|ase 4 : |
|000026f0| 6d 61 72 67 69 6e 20 3d | 20 61 62 73 28 65 78 70 |margin =| abs(exp|
|00002700| 65 63 74 65 64 2f 34 29 | 20 3b 0a 58 20 20 20 20 |ected/4)| ;.X |
|00002710| 20 20 20 20 20 20 20 20 | 20 20 20 72 65 74 75 72 | | retur|
|00002720| 6e 20 3b 0a 58 20 20 20 | 20 7d 0a 58 7d 0a 58 0a |n ;.X | }.X}.X.|
|00002730| 58 0a 58 61 73 70 69 72 | 61 74 69 6f 6e 28 70 6c |X.Xaspir|ation(pl|
|00002740| 61 79 65 72 2c 20 64 65 | 70 74 68 29 0a 58 69 6e |ayer, de|pth).Xin|
|00002750| 74 20 70 6c 61 79 65 72 | 2c 64 65 70 74 68 20 3b |t player|,depth ;|
|00002760| 0a 58 7b 0a 58 20 20 69 | 66 20 28 61 73 70 69 72 |.X{.X i|f (aspir|
|00002770| 65 20 3d 3d 20 4d 41 58 | 41 53 50 49 52 45 29 20 |e == MAX|ASPIRE) |
|00002780| 72 65 74 75 72 6e 28 70 | 6c 61 79 65 72 2a 49 4e |return(p|layer*IN|
|00002790| 46 49 4e 49 54 59 29 20 | 3b 0a 58 20 20 69 66 20 |FINITY) |;.X if |
|000027a0| 28 64 65 70 74 68 20 3c | 20 33 20 26 26 20 61 73 |(depth <| 3 && as|
|000027b0| 70 69 72 65 20 3e 20 31 | 29 20 72 65 74 75 72 6e |pire > 1|) return|
|000027c0| 28 70 6c 61 79 65 72 2a | 28 49 4e 46 49 4e 49 54 |(player*|(INFINIT|
|000027d0| 59 2d 36 34 29 29 20 3b | 0a 58 20 20 72 65 74 75 |Y-64)) ;|.X retu|
|000027e0| 72 6e 28 65 78 70 65 63 | 74 65 64 2b 70 6c 61 79 |rn(expec|ted+play|
|000027f0| 65 72 2a 6d 61 72 67 69 | 6e 29 20 3b 0a 58 7d 0a |er*margi|n) ;.X}.|
|00002800| 58 0a 58 0a 58 23 64 65 | 66 69 6e 65 20 20 56 43 |X.X.X#de|fine VC|
|00002810| 4f 52 4e 20 20 20 31 30 | 30 20 20 20 20 20 2f 2a |ORN 10|0 /*|
|00002820| 20 43 6f 72 6e 65 72 20 | 2a 2f 0a 58 23 64 65 66 | Corner |*/.X#def|
|00002830| 69 6e 65 20 20 56 4f 52 | 54 48 20 20 20 2d 33 30 |ine VOR|TH -30|
|00002840| 20 20 20 20 20 2f 2a 20 | 4f 72 74 68 6f 67 6f 6e | /* |Orthogon|
|00002850| 61 6c 6c 79 20 6e 65 78 | 74 20 74 6f 20 63 6f 72 |ally nex|t to cor|
|00002860| 6e 65 72 20 2a 2f 0a 58 | 23 64 65 66 69 6e 65 20 |ner */.X|#define |
|00002870| 20 56 44 49 41 47 20 20 | 20 2d 35 30 20 20 20 20 | VDIAG | -50 |
|00002880| 20 2f 2a 20 44 69 61 67 | 6f 6e 61 6c 6c 79 20 20 | /* Diag|onally |
|00002890| 20 20 20 22 20 20 20 22 | 20 20 20 20 22 20 20 20 | " "| " |
|000028a0| 2a 2f 0a 58 23 64 65 66 | 69 6e 65 20 20 56 45 44 |*/.X#def|ine VED|
|000028b0| 47 45 20 20 20 32 30 20 | 20 20 20 20 20 2f 2a 20 |GE 20 | /* |
|000028c0| 4f 6e 20 65 64 67 65 20 | 2a 2f 0a 58 23 64 65 66 |On edge |*/.X#def|
|000028d0| 69 6e 65 20 20 56 4e 45 | 58 54 20 20 20 2d 37 20 |ine VNE|XT -7 |
|000028e0| 20 20 20 20 20 2f 2a 20 | 4e 65 78 74 20 74 6f 20 | /* |Next to |
|000028f0| 65 64 67 65 20 2a 2f 0a | 58 23 64 65 66 69 6e 65 |edge */.|X#define|
|00002900| 20 20 56 4e 4f 52 4d 20 | 20 20 31 20 20 20 20 20 | VNORM | 1 |
|00002910| 20 20 2f 2a 20 45 6c 73 | 65 77 68 65 72 65 20 2a | /* Els|ewhere *|
|00002920| 2f 0a 58 0a 58 2f 2a 20 | 20 53 71 75 61 72 65 20 |/.X.X/* | Square |
|00002930| 76 61 6c 75 65 73 20 28 | 6f 6e 6c 79 20 76 61 6c |values (|only val|
|00002940| 69 64 20 77 68 65 6e 20 | 61 20 22 76 75 6c 6e 65 |id when |a "vulne|
|00002950| 72 61 62 6c 65 22 20 70 | 69 65 63 65 20 6f 63 63 |rable" p|iece occ|
|00002960| 75 70 69 65 73 20 74 68 | 65 0a 58 20 2a 20 20 73 |upies th|e.X * s|
|00002970| 71 75 61 72 65 20 69 6e | 20 71 75 65 73 74 69 6f |quare in| questio|
|00002980| 6e 29 0a 58 20 2a 2f 0a | 58 0a 58 73 74 61 74 69 |n).X */.|X.Xstati|
|00002990| 63 5f 65 76 61 6c 28 70 | 6f 73 29 0a 58 42 4f 41 |c_eval(p|os).XBOA|
|000029a0| 52 44 20 2a 70 6f 73 20 | 3b 0a 58 7b 0a 58 20 20 |RD *pos |;.X{.X |
|000029b0| 73 74 61 74 69 63 20 69 | 6e 74 20 6d 6f 64 65 6c |static i|nt model|
|000029c0| 5b 36 34 5d 20 3d 20 7b | 0a 58 20 20 20 20 20 56 |[64] = {|.X V|
|000029d0| 43 4f 52 4e 2c 20 56 4f | 52 54 48 2c 20 56 45 44 |CORN, VO|RTH, VED|
|000029e0| 47 45 2c 20 56 45 44 47 | 45 2c 20 56 45 44 47 45 |GE, VEDG|E, VEDGE|
|000029f0| 2c 20 56 45 44 47 45 2c | 20 56 4f 52 54 48 2c 20 |, VEDGE,| VORTH, |
|00002a00| 56 43 4f 52 4e 2c 0a 58 | 20 20 20 20 20 56 4f 52 |VCORN,.X| VOR|
|00002a10| 54 48 2c 20 56 44 49 41 | 47 2c 20 56 4e 45 58 54 |TH, VDIA|G, VNEXT|
|00002a20| 2c 20 56 4e 45 58 54 2c | 20 56 4e 45 58 54 2c 20 |, VNEXT,| VNEXT, |
|00002a30| 56 4e 45 58 54 2c 20 56 | 44 49 41 47 2c 20 56 4f |VNEXT, V|DIAG, VO|
|00002a40| 52 54 48 2c 0a 58 20 20 | 20 20 20 56 45 44 47 45 |RTH,.X | VEDGE|
|00002a50| 2c 20 56 4e 45 58 54 2c | 20 56 4e 4f 52 4d 2c 20 |, VNEXT,| VNORM, |
|00002a60| 56 4e 4f 52 4d 2c 20 56 | 4e 4f 52 4d 2c 20 56 4e |VNORM, V|NORM, VN|
|00002a70| 4f 52 4d 2c 20 56 4e 45 | 58 54 2c 20 56 45 44 47 |ORM, VNE|XT, VEDG|
|00002a80| 45 2c 0a 58 20 20 20 20 | 20 56 45 44 47 45 2c 20 |E,.X | VEDGE, |
|00002a90| 56 4e 45 58 54 2c 20 56 | 4e 4f 52 4d 2c 20 56 4e |VNEXT, V|NORM, VN|
|00002aa0| 4f 52 4d 2c 20 56 4e 4f | 52 4d 2c 20 56 4e 4f 52 |ORM, VNO|RM, VNOR|
|00002ab0| 4d 2c 20 56 4e 45 58 54 | 2c 20 56 45 44 47 45 2c |M, VNEXT|, VEDGE,|
|00002ac0| 0a 58 20 20 20 20 20 56 | 45 44 47 45 2c 20 56 4e |.X V|EDGE, VN|
|00002ad0| 45 58 54 2c 20 56 4e 4f | 52 4d 2c 20 56 4e 4f 52 |EXT, VNO|RM, VNOR|
|00002ae0| 4d 2c 20 56 4e 4f 52 4d | 2c 20 56 4e 4f 52 4d 2c |M, VNORM|, VNORM,|
|00002af0| 20 56 4e 45 58 54 2c 20 | 56 45 44 47 45 2c 0a 58 | VNEXT, |VEDGE,.X|
|00002b00| 20 20 20 20 20 56 45 44 | 47 45 2c 20 56 4e 45 58 | VED|GE, VNEX|
|00002b10| 54 2c 20 56 4e 4f 52 4d | 2c 20 56 4e 4f 52 4d 2c |T, VNORM|, VNORM,|
|00002b20| 20 56 4e 4f 52 4d 2c 20 | 56 4e 4f 52 4d 2c 20 56 | VNORM, |VNORM, V|
|00002b30| 4e 45 58 54 2c 20 56 45 | 44 47 45 2c 0a 58 20 20 |NEXT, VE|DGE,.X |
|00002b40| 20 20 20 56 4f 52 54 48 | 2c 20 56 44 49 41 47 2c | VORTH|, VDIAG,|
|00002b50| 20 56 4e 45 58 54 2c 20 | 56 4e 45 58 54 2c 20 56 | VNEXT, |VNEXT, V|
|00002b60| 4e 45 58 54 2c 20 56 4e | 45 58 54 2c 20 56 44 49 |NEXT, VN|EXT, VDI|
|00002b70| 41 47 2c 20 56 4f 52 54 | 48 2c 0a 58 20 20 20 20 |AG, VORT|H,.X |
|00002b80| 20 56 43 4f 52 4e 2c 20 | 56 4f 52 54 48 2c 20 56 | VCORN, |VORTH, V|
|00002b90| 45 44 47 45 2c 20 56 45 | 44 47 45 2c 20 56 45 44 |EDGE, VE|DGE, VED|
|00002ba0| 47 45 2c 20 56 45 44 47 | 45 2c 20 56 4f 52 54 48 |GE, VEDG|E, VORTH|
|00002bb0| 2c 20 56 43 4f 52 4e 0a | 58 20 20 20 7d 20 3b 0a |, VCORN.|X } ;.|
|00002bc0| 58 20 0a 58 20 20 72 65 | 67 69 73 74 65 72 20 69 |X .X re|gister i|
|00002bd0| 6e 74 20 69 20 3b 0a 58 | 20 20 72 65 67 69 73 74 |nt i ;.X| regist|
|00002be0| 65 72 20 69 6e 74 20 76 | 61 6c 75 65 20 3d 20 30 |er int v|alue = 0|
|00002bf0| 20 3b 0a 58 20 20 69 6e | 74 20 73 63 6f 72 65 73 | ;.X in|t scores|
|00002c00| 5b 36 34 5d 20 3b 0a 58 | 0a 58 20 20 73 65 5f 63 |[64] ;.X|.X se_c|
|00002c10| 6f 75 6e 74 2b 2b 20 3b | 20 20 20 20 20 20 20 20 |ount++ ;| |
|00002c20| 20 2f 2a 20 52 65 63 6f | 72 64 20 6e 75 6d 62 65 | /* Reco|rd numbe|
|00002c30| 72 20 6f 66 20 73 74 61 | 74 69 63 20 65 76 61 6c |r of sta|tic eval|
|00002c40| 75 61 74 69 6f 6e 73 20 | 2a 2f 0a 58 20 20 69 66 |uations |*/.X if|
|00002c50| 20 28 67 61 6d 65 5f 65 | 6e 64 65 64 28 70 6f 73 | (game_e|nded(pos|
|00002c60| 29 29 0a 58 20 20 20 20 | 7b 0a 58 20 20 20 20 20 |)).X |{.X |
|00002c70| 20 46 4f 52 5f 42 4f 41 | 52 44 28 69 29 20 76 61 | FOR_BOA|RD(i) va|
|00002c80| 6c 75 65 20 2b 3d 20 70 | 6f 73 2d 3e 73 71 75 61 |lue += p|os->squa|
|00002c90| 72 65 5b 69 5d 20 3b 0a | 58 20 20 20 20 20 20 72 |re[i] ;.|X r|
|00002ca0| 65 74 75 72 6e 20 28 76 | 61 6c 75 65 20 3e 20 30 |eturn (v|alue > 0|
|00002cb0| 20 3f 20 49 4e 46 49 4e | 49 54 59 2b 76 61 6c 75 | ? INFIN|ITY+valu|
|00002cc0| 65 2d 36 34 20 20 3a 0a | 58 20 20 20 20 20 20 20 |e-64 :.|X |
|00002cd0| 20 76 61 6c 75 65 20 3c | 20 30 20 3f 20 2d 49 4e | value <| 0 ? -IN|
|00002ce0| 46 49 4e 49 54 59 2b 76 | 61 6c 75 65 2b 36 34 20 |FINITY+v|alue+64 |
|00002cf0| 3a 20 30 29 20 3b 0a 58 | 20 20 20 20 7d 0a 58 0a |: 0) ;.X| }.X.|
|00002d00| 58 20 20 46 4f 52 5f 42 | 4f 41 52 44 28 69 29 20 |X FOR_B|OARD(i) |
|00002d10| 73 63 6f 72 65 73 5b 69 | 5d 20 3d 20 30 20 3b 0a |scores[i|] = 0 ;.|
|00002d20| 58 0a 58 20 20 66 69 6e | 64 5f 69 6e 76 75 6c 6e |X.X fin|d_invuln|
|00002d30| 65 72 61 62 6c 65 28 70 | 6f 73 2c 73 63 6f 72 65 |erable(p|os,score|
|00002d40| 73 29 20 3b 0a 58 0a 58 | 2f 2a 20 20 53 63 6f 72 |s) ;.X.X|/* Scor|
|00002d50| 65 73 20 6e 6f 77 20 63 | 6f 6e 74 61 69 6e 73 20 |es now c|ontains |
|00002d60| 56 49 4e 56 55 4c 20 28 | 6f 72 20 2d 56 49 4e 56 |VINVUL (|or -VINV|
|00002d70| 55 4c 29 0a 58 20 2a 20 | 20 66 6f 72 20 65 61 63 |UL).X * | for eac|
|00002d80| 68 20 69 6e 76 75 6c 6e | 65 72 61 62 6c 65 20 70 |h invuln|erable p|
|00002d90| 69 65 63 65 2c 20 61 6e | 64 20 30 20 65 6c 73 65 |iece, an|d 0 else|
|00002da0| 77 68 65 72 65 3b 0a 58 | 20 2a 20 20 6e 6f 77 20 |where;.X| * now |
|00002db0| 66 69 6c 6c 20 69 6e 20 | 6f 74 68 65 72 20 65 76 |fill in |other ev|
|00002dc0| 61 6c 75 61 74 69 6f 6e | 73 20 28 73 70 65 63 69 |aluation|s (speci|
|00002dd0| 61 6c 20 63 61 73 65 73 | 3a 0a 58 20 2a 20 20 6e |al cases|:.X * n|
|00002de0| 65 78 74 20 74 6f 20 63 | 6f 72 6e 65 72 20 5b 62 |ext to c|orner [b|
|00002df0| 61 64 21 5d 2c 20 6f 6e | 20 65 64 67 65 5b 67 6f |ad!], on| edge[go|
|00002e00| 6f 64 21 5d 2c 20 6e 65 | 78 74 20 74 6f 0a 58 20 |od!], ne|xt to.X |
|00002e10| 2a 20 20 65 64 67 65 5b | 70 6f 6f 72 5d 2c 20 61 |* edge[|poor], a|
|00002e20| 6e 79 77 68 65 72 65 20 | 65 6c 73 65 5b 62 6f 72 |nywhere |else[bor|
|00002e30| 69 6e 67 5d 29 0a 58 20 | 2a 2f 0a 58 0a 58 20 20 |ing]).X |*/.X.X |
|00002e40| 46 4f 52 5f 42 4f 41 52 | 44 28 69 29 20 76 61 6c |FOR_BOAR|D(i) val|
|00002e50| 75 65 20 2b 3d 20 28 73 | 63 6f 72 65 73 5b 69 5d |ue += (s|cores[i]|
|00002e60| 20 3f 20 73 63 6f 72 65 | 73 5b 69 5d 20 3a 20 6d | ? score|s[i] : m|
|00002e70| 6f 64 65 6c 5b 69 5d 2a | 70 6f 73 2d 3e 73 71 75 |odel[i]*|pos->squ|
|00002e80| 61 72 65 5b 69 5d 29 20 | 3b 0a 58 20 20 72 65 74 |are[i]) |;.X ret|
|00002e90| 75 72 6e 20 28 76 61 6c | 75 65 29 20 3b 0a 58 7d |urn (val|ue) ;.X}|
|00002ea0| 0a 58 0a 58 0a 58 67 61 | 6d 65 5f 65 6e 64 65 64 |.X.X.Xga|me_ended|
|00002eb0| 28 70 6f 73 29 0a 58 42 | 4f 41 52 44 20 2a 70 6f |(pos).XB|OARD *po|
|00002ec0| 73 20 3b 0a 58 7b 0a 58 | 20 20 69 66 20 28 21 28 |s ;.X{.X| if (!(|
|00002ed0| 70 6f 73 2d 3e 6d 6f 76 | 65 73 5f 6c 65 66 74 29 |pos->mov|es_left)|
|00002ee0| 29 20 72 65 74 75 72 6e | 28 54 52 55 45 29 20 3b |) return|(TRUE) ;|
|00002ef0| 0a 58 20 20 72 65 74 75 | 72 6e 28 28 21 49 53 4d |.X retu|rn((!ISM|
|00002f00| 4f 56 45 28 70 6f 73 2c | 57 48 49 54 45 29 29 20 |OVE(pos,|WHITE)) |
|00002f10| 26 26 20 21 28 49 53 4d | 4f 56 45 28 70 6f 73 2c |&& !(ISM|OVE(pos,|
|00002f20| 42 4c 41 43 4b 29 29 29 | 20 3b 0a 58 7d 0a 58 0a |BLACK)))| ;.X}.X.|
|00002f30| 58 0a 58 2f 2a 20 20 54 | 68 69 73 20 66 75 6e 63 |X.X/* T|his func|
|00002f40| 74 69 6f 6e 20 66 69 6e | 64 73 20 69 6e 76 75 6c |tion fin|ds invul|
|00002f50| 6e 65 72 61 62 6c 65 20 | 70 69 65 63 65 73 2c 20 |nerable |pieces, |
|00002f60| 61 6e 64 20 73 63 6f 72 | 65 73 20 74 68 65 6d 0a |and scor|es them.|
|00002f70| 58 20 2a 20 20 61 70 70 | 72 6f 70 72 69 61 74 65 |X * app|ropriate|
|00002f80| 6c 79 3b 20 69 74 20 64 | 6f 65 73 20 6e 6f 74 20 |ly; it d|oes not |
|00002f90| 66 69 6e 64 20 41 4c 4c | 20 69 6e 76 75 6c 6e 65 |find ALL| invulne|
|00002fa0| 72 61 62 6c 65 20 70 69 | 65 63 65 73 20 2d 0a 58 |rable pi|eces -.X|
|00002fb0| 20 2a 20 20 69 6e 20 66 | 61 63 74 2c 20 6f 6e 6c | * in f|act, onl|
|00002fc0| 79 20 63 6f 6e 63 61 76 | 65 20 62 6c 6f 63 6b 73 |y concav|e blocks|
|00002fd0| 20 69 6e 63 6c 75 64 69 | 6e 67 20 61 20 63 6f 72 | includi|ng a cor|
|00002fe0| 6e 65 72 20 2d 20 62 75 | 74 0a 58 20 2a 20 20 6e |ner - bu|t.X * n|
|00002ff0| 65 76 65 72 74 68 65 6c | 65 73 73 20 73 68 6f 75 |everthel|ess shou|
|00003000| 6c 64 20 70 72 6f 76 69 | 64 65 20 61 20 67 6f 6f |ld provi|de a goo|
|00003010| 64 20 61 70 70 72 6f 78 | 69 6d 61 74 69 6f 6e 2e |d approx|imation.|
|00003020| 0a 58 20 2a 2f 0a 58 0a | 58 66 69 6e 64 5f 69 6e |.X */.X.|Xfind_in|
|00003030| 76 75 6c 6e 65 72 61 62 | 6c 65 28 62 6f 61 72 64 |vulnerab|le(board|
|00003040| 2c 20 73 63 6f 72 65 73 | 29 0a 58 42 4f 41 52 44 |, scores|).XBOARD|
|00003050| 20 2a 62 6f 61 72 64 20 | 3b 0a 58 69 6e 74 20 73 | *board |;.Xint s|
|00003060| 63 6f 72 65 73 5b 36 34 | 5d 20 3b 0a 58 7b 0a 58 |cores[64|] ;.X{.X|
|00003070| 20 20 69 6e 74 20 68 77 | 6d 2c 63 6f 72 6e 65 72 | int hw|m,corner|
|00003080| 2c 76 61 6c 75 65 2c 69 | 2c 6a 20 3b 0a 58 0a 58 |,value,i|,j ;.X.X|
|00003090| 20 20 69 66 20 28 28 63 | 6f 72 6e 65 72 20 3d 20 | if ((c|orner = |
|000030a0| 62 6f 61 72 64 2d 3e 73 | 71 75 61 72 65 5b 30 5d |board->s|quare[0]|
|000030b0| 29 20 21 3d 20 30 29 0a | 58 20 20 20 20 7b 0a 58 |) != 0).|X {.X|
|000030c0| 20 20 20 20 20 20 76 61 | 6c 75 65 20 3d 20 63 6f | va|lue = co|
|000030d0| 72 6e 65 72 2a 56 49 4e | 56 55 4c 20 3b 0a 58 20 |rner*VIN|VUL ;.X |
|000030e0| 20 20 20 20 20 68 77 6d | 20 3d 20 37 20 3b 0a 58 | hwm| = 7 ;.X|
|000030f0| 0a 58 20 20 20 20 20 20 | 66 6f 72 20 28 69 20 3d |.X |for (i =|
|00003100| 20 30 3b 20 69 20 3c 20 | 35 36 3b 20 69 20 2b 3d | 0; i < |56; i +=|
|00003110| 20 38 29 0a 58 20 20 20 | 20 20 20 20 20 7b 0a 58 | 8).X | {.X|
|00003120| 20 20 20 20 20 20 20 20 | 20 20 69 66 20 28 62 6f | | if (bo|
|00003130| 61 72 64 2d 3e 73 71 75 | 61 72 65 5b 69 5d 20 21 |ard->squ|are[i] !|
|00003140| 3d 20 63 6f 72 6e 65 72 | 29 20 62 72 65 61 6b 20 |= corner|) break |
|00003150| 3b 0a 58 20 20 20 20 20 | 20 20 20 20 20 73 63 6f |;.X | sco|
|00003160| 72 65 73 5b 69 5d 20 3d | 20 76 61 6c 75 65 20 3b |res[i] =| value ;|
|00003170| 0a 58 20 20 20 20 20 20 | 20 20 20 20 66 6f 72 20 |.X | for |
|00003180| 28 6a 20 3d 20 31 3b 20 | 6a 20 3c 20 68 77 6d 3b |(j = 1; |j < hwm;|
|00003190| 20 6a 2b 2b 29 0a 58 20 | 20 20 20 20 20 20 20 20 | j++).X | |
|000031a0| 20 20 20 7b 0a 58 20 20 | 20 20 20 20 20 20 20 20 | {.X | |
|000031b0| 20 20 20 20 69 66 20 28 | 62 6f 61 72 64 2d 3e 73 | if (|board->s|
|000031c0| 71 75 61 72 65 5b 69 2b | 6a 5d 20 21 3d 20 63 6f |quare[i+|j] != co|
|000031d0| 72 6e 65 72 29 0a 58 20 | 20 20 20 20 20 20 20 20 |rner).X | |
|000031e0| 20 20 20 20 20 20 20 7b | 0a 58 20 20 20 20 20 20 | {|.X |
|000031f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 68 77 6d 20 | | hwm |
|00003200| 3d 20 6a 20 3b 0a 58 20 | 20 20 20 20 20 20 20 20 |= j ;.X | |
|00003210| 20 20 20 20 20 20 20 20 | 20 62 72 65 61 6b 20 3b | | break ;|
|00003220| 0a 58 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X | |
|00003230| 20 20 7d 0a 58 20 20 20 | 20 20 20 20 20 20 20 20 | }.X | |
|00003240| 20 20 20 73 63 6f 72 65 | 73 5b 69 2b 6a 5d 20 3d | score|s[i+j] =|
|00003250| 20 76 61 6c 75 65 20 3b | 0a 58 20 20 20 20 20 20 | value ;|.X |
|00003260| 20 20 20 20 20 20 7d 0a | 58 20 20 20 20 20 20 20 | }.|X |
|00003270| 20 7d 0a 58 20 20 20 20 | 20 20 73 63 6f 72 65 73 | }.X | scores|
|00003280| 5b 30 5d 20 3d 20 63 6f | 72 6e 65 72 2a 56 43 4f |[0] = co|rner*VCO|
|00003290| 52 4e 20 3b 0a 58 20 20 | 20 20 7d 0a 58 0a 58 20 |RN ;.X | }.X.X |
|000032a0| 20 69 66 20 28 28 63 6f | 72 6e 65 72 20 3d 20 62 | if ((co|rner = b|
|000032b0| 6f 61 72 64 2d 3e 73 71 | 75 61 72 65 5b 37 5d 29 |oard->sq|uare[7])|
|000032c0| 20 21 3d 20 30 29 0a 58 | 20 20 20 20 7b 0a 58 20 | != 0).X| {.X |
|000032d0| 20 20 20 20 20 76 61 6c | 75 65 20 3d 20 63 6f 72 | val|ue = cor|
|000032e0| 6e 65 72 2a 56 49 4e 56 | 55 4c 20 3b 0a 58 20 20 |ner*VINV|UL ;.X |
|000032f0| 20 20 20 20 68 77 6d 20 | 3d 20 30 20 3b 0a 58 0a | hwm |= 0 ;.X.|
|00003300| 58 20 20 20 20 20 20 66 | 6f 72 20 28 69 20 3d 20 |X f|or (i = |
|00003310| 30 3b 20 69 20 3c 20 35 | 36 3b 20 69 2b 3d 20 38 |0; i < 5|6; i+= 8|
|00003320| 29 0a 58 20 20 20 20 20 | 20 20 20 7b 0a 58 20 20 |).X | {.X |
|00003330| 20 20 20 20 20 20 20 20 | 69 66 20 28 62 6f 61 72 | |if (boar|
|00003340| 64 2d 3e 73 71 75 61 72 | 65 5b 69 2b 37 5d 20 21 |d->squar|e[i+7] !|
|00003350| 3d 20 63 6f 72 6e 65 72 | 29 20 62 72 65 61 6b 20 |= corner|) break |
|00003360| 3b 0a 58 20 20 20 20 20 | 20 20 20 20 20 73 63 6f |;.X | sco|
|00003370| 72 65 73 5b 69 2b 37 5d | 20 3d 20 76 61 6c 75 65 |res[i+7]| = value|
|00003380| 20 3b 0a 58 20 20 20 20 | 20 20 20 20 20 20 66 6f | ;.X | fo|
|00003390| 72 20 28 6a 20 3d 20 36 | 3b 20 6a 20 3e 20 68 77 |r (j = 6|; j > hw|
|000033a0| 6d 3b 20 6a 2d 2d 29 0a | 58 20 20 20 20 20 20 20 |m; j--).|X |
|000033b0| 20 20 20 20 20 7b 0a 58 | 20 20 20 20 20 20 20 20 | {.X| |
|000033c0| 20 20 20 20 20 20 69 66 | 20 28 62 6f 61 72 64 2d | if| (board-|
|000033d0| 3e 73 71 75 61 72 65 5b | 69 2b 6a 5d 20 21 3d 20 |>square[|i+j] != |
|000033e0| 63 6f 72 6e 65 72 29 0a | 58 20 20 20 20 20 20 20 |corner).|X |
|000033f0| 20 20 20 20 20 20 20 20 | 20 7b 0a 58 20 20 20 20 | | {.X |
|00003400| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 68 77 | | hw|
|00003410| 6d 20 3d 20 6a 20 3b 0a | 58 20 20 20 20 20 20 20 |m = j ;.|X |
|00003420| 20 20 20 20 20 20 20 20 | 20 20 20 62 72 65 61 6b | | break|
|00003430| 20 3b 0a 58 20 20 20 20 | 20 20 20 20 20 20 20 20 | ;.X | |
|00003440| 20 20 20 20 7d 0a 58 20 | 20 20 20 20 20 20 20 20 | }.X | |
|00003450| 20 20 20 20 20 73 63 6f | 72 65 73 5b 69 2b 6a 5d | sco|res[i+j]|
|00003460| 20 3d 20 76 61 6c 75 65 | 20 3b 0a 58 20 20 20 20 | = value| ;.X |
|00003470| 20 20 20 20 20 20 20 20 | 7d 0a 58 20 20 20 20 20 | |}.X |
|00003480| 20 20 20 7d 0a 58 20 20 | 20 20 20 20 73 63 6f 72 | }.X | scor|
|00003490| 65 73 5b 37 5d 20 3d 20 | 63 6f 72 6e 65 72 2a 56 |es[7] = |corner*V|
|000034a0| 43 4f 52 4e 3b 0a 58 20 | 20 20 20 7d 0a 58 0a 58 |CORN;.X | }.X.X|
|000034b0| 20 20 69 66 20 28 28 63 | 6f 72 6e 65 72 20 3d 20 | if ((c|orner = |
|000034c0| 62 6f 61 72 64 2d 3e 73 | 71 75 61 72 65 5b 35 36 |board->s|quare[56|
|000034d0| 5d 29 20 21 3d 20 30 29 | 0a 58 20 20 20 20 7b 0a |]) != 0)|.X {.|
|000034e0| 58 20 20 20 20 20 20 76 | 61 6c 75 65 20 3d 20 63 |X v|alue = c|
|000034f0| 6f 72 6e 65 72 2a 56 49 | 4e 56 55 4c 20 3b 0a 58 |orner*VI|NVUL ;.X|
|00003500| 20 20 20 20 20 20 68 77 | 6d 20 3d 20 37 20 3b 0a | hw|m = 7 ;.|
|00003510| 58 0a 58 20 20 20 20 20 | 20 66 6f 72 20 28 69 20 |X.X | for (i |
|00003520| 3d 20 35 36 3b 20 69 20 | 3e 20 30 3b 20 69 20 2d |= 56; i |> 0; i -|
|00003530| 3d 20 38 29 0a 58 20 20 | 20 20 20 20 20 20 7b 0a |= 8).X | {.|
|00003540| 58 20 20 20 20 20 20 20 | 20 20 20 69 66 20 28 62 |X | if (b|
|00003550| 6f 61 72 64 2d 3e 73 71 | 75 61 72 65 5b 69 5d 20 |oard->sq|uare[i] |
|00003560| 21 3d 20 63 6f 72 6e 65 | 72 29 20 62 72 65 61 6b |!= corne|r) break|
|00003570| 20 3b 0a 58 20 20 20 20 | 20 20 20 20 20 20 73 63 | ;.X | sc|
|00003580| 6f 72 65 73 5b 69 5d 20 | 3d 20 76 61 6c 75 65 20 |ores[i] |= value |
|00003590| 3b 0a 58 20 20 20 20 20 | 20 20 20 20 20 66 6f 72 |;.X | for|
|000035a0| 20 28 6a 20 3d 20 31 3b | 20 6a 20 3c 20 68 77 6d | (j = 1;| j < hwm|
|000035b0| 3b 20 6a 2b 2b 29 0a 58 | 20 20 20 20 20 20 20 20 |; j++).X| |
|000035c0| 20 20 20 20 7b 0a 58 20 | 20 20 20 20 20 20 20 20 | {.X | |
|000035d0| 20 20 20 20 20 69 66 20 | 28 62 6f 61 72 64 2d 3e | if |(board->|
|000035e0| 73 71 75 61 72 65 5b 69 | 2b 6a 5d 20 21 3d 20 63 |square[i|+j] != c|
|000035f0| 6f 72 6e 65 72 29 0a 58 | 20 20 20 20 20 20 20 20 |orner).X| |
|00003600| 20 20 20 20 20 20 20 20 | 7b 0a 58 20 20 20 20 20 | |{.X |
|00003610| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 68 77 6d | | hwm|
|00003620| 20 3d 20 6a 20 3b 0a 58 | 20 20 20 20 20 20 20 20 | = j ;.X| |
|00003630| 20 20 20 20 20 20 20 20 | 20 20 62 72 65 61 6b 20 | | break |
|00003640| 3b 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |;.X | |
|00003650| 20 20 20 7d 0a 58 20 20 | 20 20 20 20 20 20 20 20 | }.X | |
|00003660| 20 20 20 20 73 63 6f 72 | 65 73 5b 69 2b 6a 5d 20 | scor|es[i+j] |
|00003670| 3d 20 76 61 6c 75 65 20 | 3b 0a 58 20 20 20 20 20 |= value |;.X |
|00003680| 20 20 20 20 20 20 20 7d | 0a 58 20 20 20 20 20 20 | }|.X |
|00003690| 20 20 7d 0a 58 20 20 20 | 20 20 20 73 63 6f 72 65 | }.X | score|
|000036a0| 73 5b 35 36 5d 20 3d 20 | 63 6f 72 6e 65 72 2a 56 |s[56] = |corner*V|
|000036b0| 43 4f 52 4e 20 3b 0a 58 | 20 20 20 20 7d 0a 58 0a |CORN ;.X| }.X.|
|000036c0| 58 20 20 69 66 20 28 28 | 63 6f 72 6e 65 72 3d 62 |X if ((|corner=b|
|000036d0| 6f 61 72 64 2d 3e 73 71 | 75 61 72 65 5b 36 33 5d |oard->sq|uare[63]|
|000036e0| 29 20 21 3d 20 30 29 0a | 58 20 20 20 20 7b 0a 58 |) != 0).|X {.X|
|000036f0| 20 20 20 20 20 20 76 61 | 6c 75 65 20 3d 20 63 6f | va|lue = co|
|00003700| 72 6e 65 72 2a 56 49 4e | 56 55 4c 20 3b 0a 58 20 |rner*VIN|VUL ;.X |
|00003710| 20 20 20 20 20 68 77 6d | 20 3d 20 30 20 3b 0a 58 | hwm| = 0 ;.X|
|00003720| 0a 58 20 20 20 20 20 20 | 66 6f 72 20 28 69 20 3d |.X |for (i =|
|00003730| 20 35 36 3b 20 69 20 3e | 20 30 3b 20 69 20 2d 3d | 56; i >| 0; i -=|
|00003740| 20 38 29 0a 58 20 20 20 | 20 20 20 20 20 7b 0a 58 | 8).X | {.X|
|00003750| 20 20 20 20 20 20 20 20 | 20 20 69 66 20 28 62 6f | | if (bo|
|00003760| 61 72 64 2d 3e 73 71 75 | 61 72 65 5b 69 2b 37 5d |ard->squ|are[i+7]|
|00003770| 20 21 3d 20 63 6f 72 6e | 65 72 29 20 62 72 65 61 | != corn|er) brea|
|00003780| 6b 20 3b 0a 58 20 20 20 | 20 20 20 20 20 20 20 73 |k ;.X | s|
|00003790| 63 6f 72 65 73 5b 69 2b | 37 5d 20 3d 20 76 61 6c |cores[i+|7] = val|
|000037a0| 75 65 20 3b 0a 58 20 20 | 20 20 20 20 20 20 20 20 |ue ;.X | |
|000037b0| 66 6f 72 20 28 6a 20 3d | 20 36 3b 20 6a 20 3e 20 |for (j =| 6; j > |
|000037c0| 68 77 6d 3b 20 6a 2d 2d | 29 0a 58 20 20 20 20 20 |hwm; j--|).X |
|000037d0| 20 20 20 20 20 20 20 7b | 0a 58 20 20 20 20 20 20 | {|.X |
|000037e0| 20 20 20 20 20 20 20 20 | 69 66 20 28 62 6f 61 72 | |if (boar|
|000037f0| 64 2d 3e 73 71 75 61 72 | 65 5b 69 2b 6a 5d 20 21 |d->squar|e[i+j] !|
|00003800| 3d 20 63 6f 72 6e 65 72 | 29 0a 58 20 20 20 20 20 |= corner|).X |
|00003810| 20 20 20 20 20 20 20 20 | 20 20 20 7b 0a 58 20 20 | | {.X |
|00003820| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003830| 68 77 6d 20 3d 20 6a 20 | 3b 0a 58 20 20 20 20 20 |hwm = j |;.X |
|00003840| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 62 72 65 | | bre|
|00003850| 61 6b 20 3b 0a 58 20 20 | 20 20 20 20 20 20 20 20 |ak ;.X | |
|00003860| 20 20 20 20 20 20 7d 0a | 58 20 20 20 20 20 20 20 | }.|X |
|00003870| 20 20 20 20 20 20 20 73 | 63 6f 72 65 73 5b 69 2b | s|cores[i+|
|00003880| 6a 5d 20 3d 20 76 61 6c | 75 65 20 3b 0a 58 20 20 |j] = val|ue ;.X |
|00003890| 20 20 20 20 20 20 20 20 | 20 20 7d 0a 58 20 20 20 | | }.X |
|000038a0| 20 20 20 20 20 7d 0a 58 | 20 20 20 20 20 20 73 63 | }.X| sc|
|000038b0| 6f 72 65 73 5b 36 33 5d | 20 3d 20 63 6f 72 6e 65 |ores[63]| = corne|
|000038c0| 72 2a 56 43 4f 52 4e 20 | 3b 0a 58 20 20 20 20 7d |r*VCORN |;.X }|
|000038d0| 0a 58 7d 0a 45 4e 44 5f | 4f 46 5f 46 49 4c 45 0a |.X}.END_|OF_FILE.|
|000038e0| 69 66 20 74 65 73 74 20 | 31 32 36 32 34 20 2d 6e |if test |12624 -n|
|000038f0| 65 20 60 77 63 20 2d 63 | 20 3c 27 6d 61 6b 65 6d |e `wc -c| <'makem|
|00003900| 6f 76 65 2e 63 27 60 3b | 20 74 68 65 6e 0a 20 20 |ove.c'`;| then. |
|00003910| 20 20 65 63 68 6f 20 73 | 68 61 72 3a 20 5c 22 27 | echo s|har: \"'|
|00003920| 6d 61 6b 65 6d 6f 76 65 | 2e 63 27 5c 22 20 75 6e |makemove|.c'\" un|
|00003930| 70 61 63 6b 65 64 20 77 | 69 74 68 20 77 72 6f 6e |packed w|ith wron|
|00003940| 67 20 73 69 7a 65 21 0a | 66 69 0a 23 20 65 6e 64 |g size!.|fi.# end|
|00003950| 20 6f 66 20 27 6d 61 6b | 65 6d 6f 76 65 2e 63 27 | of 'mak|emove.c'|
|00003960| 0a 69 66 20 74 65 73 74 | 20 2d 66 20 27 70 61 74 |.if test| -f 'pat|
|00003970| 63 68 65 73 30 33 27 20 | 2d 61 20 22 24 7b 31 7d |ches03' |-a "${1}|
|00003980| 22 20 21 3d 20 22 2d 63 | 22 20 3b 20 74 68 65 6e |" != "-c|" ; then|
|00003990| 20 0a 20 20 65 63 68 6f | 20 73 68 61 72 3a 20 57 | . echo| shar: W|
|000039a0| 69 6c 6c 20 6e 6f 74 20 | 63 6c 6f 62 62 65 72 20 |ill not |clobber |
|000039b0| 65 78 69 73 74 69 6e 67 | 20 66 69 6c 65 20 5c 22 |existing| file \"|
|000039c0| 27 70 61 74 63 68 65 73 | 30 33 27 5c 22 0a 65 6c |'patches|03'\".el|
|000039d0| 73 65 0a 65 63 68 6f 20 | 73 68 61 72 3a 20 45 78 |se.echo |shar: Ex|
|000039e0| 74 72 61 63 74 69 6e 67 | 20 5c 22 27 70 61 74 63 |tracting| \"'patc|
|000039f0| 68 65 73 30 33 27 5c 22 | 20 5c 28 38 33 30 20 63 |hes03'\"| \(830 c|
|00003a00| 68 61 72 61 63 74 65 72 | 73 5c 29 0a 73 65 64 20 |haracter|s\).sed |
|00003a10| 22 73 2f 5e 58 2f 2f 22 | 20 3e 27 70 61 74 63 68 |"s/^X//"| >'patch|
|00003a20| 65 73 30 33 27 20 3c 3c | 27 45 4e 44 5f 4f 46 5f |es03' <<|'END_OF_|
|00003a30| 46 49 4c 45 27 0a 58 0a | 58 2d 2d 2d 2d 2d 2d 2d |FILE'.X.|X-------|
|00003a40| 20 70 61 74 63 68 6c 65 | 76 65 6c 2e 68 20 2d 2d | patchle|vel.h --|
|00003a50| 2d 2d 2d 2d 2d 0a 58 2a | 2a 2a 20 2f 74 6d 70 2f |-----.X*|** /tmp/|
|00003a60| 64 61 30 36 32 35 31 09 | 54 68 75 20 4d 61 79 20 |da06251.|Thu May |
|00003a70| 20 33 20 31 30 3a 33 36 | 3a 32 39 20 31 39 39 30 | 3 10:36|:29 1990|
|00003a80| 0a 58 2d 2d 2d 20 70 61 | 74 63 68 6c 65 76 65 6c |.X--- pa|tchlevel|
|00003a90| 2e 68 09 54 68 75 20 4d | 61 79 20 20 33 20 31 30 |.h.Thu M|ay 3 10|
|00003aa0| 3a 33 32 3a 31 38 20 31 | 39 39 30 0a 58 2a 2a 2a |:32:18 1|990.X***|
|00003ab0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 0a 58 2a 2a |********|****.X**|
|00003ac0| 2a 20 31 39 2c 32 32 20 | 2a 2a 2a 2a 0a 58 20 20 |* 19,22 |****.X |
|00003ad0| 20 2a 20 20 74 6f 20 6d | 65 2c 20 74 68 65 6e 20 | * to m|e, then |
|00003ae0| 61 6e 20 61 74 74 65 6d | 70 74 20 77 69 6c 6c 20 |an attem|pt will |
|00003af0| 62 65 20 6d 61 64 65 20 | 74 6f 20 66 69 78 20 74 |be made |to fix t|
|00003b00| 68 65 6d 2e 0a 58 20 20 | 20 2a 2f 0a 58 20 20 0a |hem..X | */.X .|
|00003b10| 58 21 20 23 64 65 66 69 | 6e 65 20 20 50 41 54 43 |X! #defi|ne PATC|
|00003b20| 48 4c 45 56 45 4c 20 20 | 32 0a 58 2d 2d 2d 20 31 |HLEVEL |2.X--- 1|
|00003b30| 39 2c 32 32 20 2d 2d 2d | 2d 0a 58 20 20 20 2a 20 |9,22 ---|-.X * |
|00003b40| 20 74 6f 20 6d 65 2c 20 | 74 68 65 6e 20 61 6e 20 | to me, |then an |
|00003b50| 61 74 74 65 6d 70 74 20 | 77 69 6c 6c 20 62 65 20 |attempt |will be |
|00003b60| 6d 61 64 65 20 74 6f 20 | 66 69 78 20 74 68 65 6d |made to |fix them|
|00003b70| 2e 0a 58 20 20 20 2a 2f | 0a 58 20 20 0a 58 21 20 |..X */|.X .X! |
|00003b80| 23 64 65 66 69 6e 65 20 | 20 50 41 54 43 48 4c 45 |#define | PATCHLE|
|00003b90| 56 45 4c 20 20 33 0a 58 | 0a 58 2d 2d 2d 2d 2d 2d |VEL 3.X|.X------|
|00003ba0| 2d 20 43 48 41 4e 47 45 | 53 20 2d 2d 2d 2d 2d 2d |- CHANGE|S ------|
|00003bb0| 2d 0a 58 2a 2a 2a 20 2f | 74 6d 70 2f 64 61 30 36 |-.X*** /|tmp/da06|
|00003bc0| 32 35 34 09 54 68 75 20 | 4d 61 79 20 20 33 20 31 |254.Thu |May 3 1|
|00003bd0| 30 3a 33 36 3a 33 30 20 | 31 39 39 30 0a 58 2d 2d |0:36:30 |1990.X--|
|00003be0| 2d 20 43 48 41 4e 47 45 | 53 09 54 68 75 20 4d 61 |- CHANGE|S.Thu Ma|
|00003bf0| 79 20 20 33 20 31 30 3a | 33 34 3a 31 36 20 31 39 |y 3 10:|34:16 19|
|00003c00| 39 30 0a 58 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |90.X****|********|
|00003c10| 2a 2a 2a 0a 58 2a 2a 2a | 20 38 36 2c 38 38 20 2a |***.X***| 86,88 *|
|00003c20| 2a 2a 2a 0a 58 2d 2d 2d | 20 38 36 2c 39 33 20 2d |***.X---| 86,93 -|
|00003c30| 2d 2d 2d 0a 58 20 20 20 | 20 20 20 20 20 20 20 20 |---.X | |
|00003c40| 49 74 20 77 6f 75 6c 64 | 20 62 65 20 6e 69 63 65 |It would| be nice|
|00003c50| 20 69 66 20 28 61 74 20 | 6c 65 61 73 74 20 6f 6e | if (at |least on|
|00003c60| 20 74 68 65 20 74 74 79 | 20 76 65 72 73 69 6f 6e | the tty| version|
|00003c70| 29 20 74 68 65 20 74 65 | 78 74 0a 58 20 20 20 20 |) the te|xt.X |
|00003c80| 20 20 20 20 20 20 20 22 | 62 6c 61 63 6b 22 20 77 | "|black" w|
|00003c90| 61 73 20 72 65 70 6c 61 | 63 65 64 20 77 69 74 68 |as repla|ced with|
|00003ca0| 20 22 58 22 20 6f 72 20 | 22 62 6c 61 63 6b 20 28 | "X" or |"black (|
|00003cb0| 58 29 22 20 61 6e 64 20 | 6c 69 6b 65 77 69 73 65 |X)" and |likewise|
|00003cc0| 20 66 6f 72 0a 58 20 20 | 20 20 20 20 20 20 20 20 | for.X | |
|00003cd0| 20 77 68 69 74 65 2e 0a | 58 2b 20 0a 58 2b 20 76 | white..|X+ .X+ v|
|00003ce0| 31 2e 33 20 2d 20 70 61 | 74 63 68 6c 65 76 65 6c |1.3 - pa|tchlevel|
|00003cf0| 20 33 2e 20 33 72 64 20 | 4d 61 79 20 31 39 39 30 | 3. 3rd |May 1990|
|00003d00| 2e 0a 58 2b 20 0a 58 2b | 20 20 20 20 20 20 20 20 |..X+ .X+| |
|00003d10| 2a 20 52 65 6c 65 61 73 | 65 20 6f 66 20 74 68 65 |* Releas|e of the|
|00003d20| 20 63 75 72 72 65 6e 74 | 20 76 65 72 73 69 6f 6e | current| version|
|00003d30| 20 6f 66 20 6d 61 6b 65 | 6d 6f 76 65 2e 63 2c 20 | of make|move.c, |
|00003d40| 62 65 63 61 75 73 65 20 | 74 68 65 20 63 68 61 6e |because |the chan|
|00003d50| 67 65 73 0a 58 2b 20 20 | 20 20 20 20 20 20 20 20 |ges.X+ | |
|00003d60| 74 6f 20 74 68 69 73 20 | 66 69 6c 65 20 61 74 20 |to this |file at |
|00003d70| 70 61 74 63 68 20 6c 65 | 76 65 6c 20 23 31 20 6e |patch le|vel #1 n|
|00003d80| 65 76 65 72 20 6d 61 64 | 65 20 69 74 20 6f 75 74 |ever mad|e it out|
|00003d90| 2e 0a 45 4e 44 5f 4f 46 | 5f 46 49 4c 45 0a 69 66 |..END_OF|_FILE.if|
|00003da0| 20 74 65 73 74 20 38 33 | 30 20 2d 6e 65 20 60 77 | test 83|0 -ne `w|
|00003db0| 63 20 2d 63 20 3c 27 70 | 61 74 63 68 65 73 30 33 |c -c <'p|atches03|
|00003dc0| 27 60 3b 20 74 68 65 6e | 0a 20 20 20 20 65 63 68 |'`; then|. ech|
|00003dd0| 6f 20 73 68 61 72 3a 20 | 5c 22 27 70 61 74 63 68 |o shar: |\"'patch|
|00003de0| 65 73 30 33 27 5c 22 20 | 75 6e 70 61 63 6b 65 64 |es03'\" |unpacked|
|00003df0| 20 77 69 74 68 20 77 72 | 6f 6e 67 20 73 69 7a 65 | with wr|ong size|
|00003e00| 21 0a 66 69 0a 23 20 65 | 6e 64 20 6f 66 20 27 70 |!.fi.# e|nd of 'p|
|00003e10| 61 74 63 68 65 73 30 33 | 27 0a 66 69 0a 65 63 68 |atches03|'.fi.ech|
|00003e20| 6f 20 73 68 61 72 3a 20 | 45 6e 64 20 6f 66 20 73 |o shar: |End of s|
|00003e30| 68 65 6c 6c 20 61 72 63 | 68 69 76 65 2e 0a 65 78 |hell arc|hive..ex|
|00003e40| 69 74 20 30 0a | |it 0. | |
+--------+-------------------------+-------------------------+--------+--------+