PROGRAM DESCRIPTION THE PROGRAM IS DIVIDED INTO FOUR MAIN SECTIONS: 1) DECLARATION OF VARIABLES 2) SUBROUTINES 3) COMPUTATIONAL FUNCTIONS AND ROUTINES 4) MAIN BODY 1) DECLARATION OF VARIABLES I HOPE THAT VARIABLE NAMES ARE SELF-EXPLANATORY AS POSSIBLE. THIS LIST WILL EXPLAIN MOST OF THEM IN MORE DETAIL. BBOFF,WBOFF -- THE NUMBER OF BLACKS AND WHITES BORN OFF DICE1,DICE2,DICE3,DICE4 -- DICE1 AND DICE2 HOLD WHITES THROW. DICE3 AND DICE4 ARE USED WHEN WHITE IS BEARING OFF AND DOUBLES ARE THROWN BARFL -- A FLAG USED TO INDICATE THAT THERE IS ONE WHITE ON THE BAR SO THAT WHEN TESTING FOR THE BEST MOVE, THIS PIECE IS SURE TO BE MOVED. BRDVAL -- THE FUNCTIONAL RESULT OF A BOARD CONFIGURATION GIVEN BY THE EQUATION W1*FUNCTION1+.....+W10*FUNCTION10 BSTVAL -- THE HIGHEST BRDVAL ASSOCIATED WITH A GIVEN THROW OF THE DICE COMPVAL -- THE BSTVAL OF THE PREVIOUS THROW OF THE DICE M1,M2,M3,M4 -- USED TO INDICATE THAT 1,2,3, OR 4 MOVES ARE TO BE MADE. THIS IS NECESSARY WHEN WHITE CANNOT MAKE A MOVE WITH THE GIVEN THROW OF THE DICE. V1-V10 -- USED IN BOARD VALUE ROUTINES TO STORE ADDENDS OF THE BOARD VALUE FUNCTION. G,H,I,J,K,L,M,N -- INDEXES FOR CYCLE LOOPS RUNNING -- A FLAG TO INDICATE THAT THE FORCES HAVE SEPARATED AND TO DISCONTINUE COMPARING BOARD VALUES. W1-W10 -- USED TO STORE THE WEIGHTS LOADED FROM AND TO A SEPARATE FILE. BV1-BV10 -- USED TO STORE THE VALUES OF THE ADDENDS(V1-V10) EACH TIME A NEW BSTVAL IS FOUND. PT1,PT2,PT3,PT4 -- THE POINT FROM WHICH A WHITE HAS BEEN MOVED DURING A "TEST" MOVE. PT3 AND PT4 ARE USED ONLY IN CASE OF DOUBLES. BSTPT1,BSTPT2,BSTPT3,BSTPT4 -- USED TO STORE THE POINTS FROM WHICH A NEW BSTVAL WAS FOUND. BSTMOV1,BSTMOV2 -- USED TO STORE THE DICE THROW ASSOCIATED WITH A BEST POINT. IN CASE OF DOUBLES, ALL MOVES ARE THE SAME. BARPT1,BARPT2,BARPT3,BARPT4 -- FLAGS TO INDICATE THAT A "TEST" MOVE RE- SULTED IN REMOVING A BLACK FROM THE BOARD. SECOND -- USED TO INDICATE DICE HAVE BEEN SWOPPED SO THAT BOARD VALUE CALCULATIONS ARE NOT DUPLICATED. NOMOV -- USED IN BEARING OFF TO INDICATE NO MOVE POSSILBE FROM A CERTAIN POINT WITH THE GIVE DIE. ODDS -- A TWELVE ELEMENT ARRAY WHICH CONTAINS THE ODDS OF BLACK LANDING ONE TO TWELVE SPACES AHEAD OF HIM WITH A GIVEN THROW OF THE DICE. THERE IS A COMMON FACTOR OF 105 WHICH IS IGNORED. THESE ODDS ARE USED IN DETERMINING WHICH PIECE WHITE SHOULD LEAVE AS A SINGLE, IF HE MUST DO SO. DOUBLES ARE INCLUDED UP TO TWELVE, I.E. 12=6+6=4+4+4=3+3+3+3, WITH HIGHER DOUBLES COMBINATIONS BEING RATHER INSIGNIFICANT. 2) SUBROUTINES THESE COULD HAVE BEEN INCLUDED IN THE MAIN BODY IN MOST CASES, BUT WERE REMOVED TO MAKE THE PROGRAM MORE READABLE. EACH HAS A SPECIFIC TASK WHICH IN MOST CASES IS SELF-EXPLANATORY. DOBLACK -- A SEPARATE PROGRAM IN ITSELF TO PERFORM THE OPPONENTS MOVE. IT BEGINS BY READING BLACK'S THROW AND MAKING SURE IT IS LEGAL. THEN THERE IS A SERIES OF STATEMENTS TO SEE IF BLACK CAN MOVE, AND IF SO, DOES HE HAVE AN OPTION. IF HE DOES NOT HAVE AN OPTION, THEN THE PROGRAM MAKES HIS MOVE. OTHERWISE, THE PROGRAM READS THE POINT FROM WHICH BLACK WISHES TO MOVE AND THE AMOUNT HE WANTS THE PIECE MOVED. AT THIS POINT, THE MOVE TYPED IS IRREVOCABLE. THEN A SERIES OF TESTS ARE MADE TO SEE IF HE HAS A PIECE ON THE POINT, HAS A PIECE ON THE BAR AND DID NOT MOVE IT FIRST, TRIED TO BEAR OFF BEFORE ALL HIS MEN WERE HOME, TRIED TO MOVE TO A POINT OCCUPIED BY THE COMPUTER, OR TRIED TO USE A DICE THROW HE DID NOT HAVE. IF THE MOVE TYPED IS LEGAL, THEN IT IS MADE, OR A MAN IS BORN OFF, AND THE PROGRAM LOOPS TO MAKE THE SEC- OND MOVE, OR THE THIRD OR FOURTH MOVE IN CASE OF DOUBLES. INITIALIZE -- THE PIECES ARE PLACED ON THE BOARD. PRINTSTATE -- A STRAIGHTFORWARD ROUTINE TO PRINT THE BOARD AND OTHER REL- EVANT INFORMATION. IN THIS CASE, THE POINTS ARE NUMBERED AND THE BAR IS NOT SHOWN GRAPHICALLY. ALSO, A MAXIMUM OF SEVEN PIECES ARE SHOWN ON A PARTICULAR POINT, BUT THE EXTRA MEN ARE NOT LOST TO THE COMPUTER. THE NUMBER OF MEN ON THE BAR AND THE NUMBER OF MEN BORN OFF ARE WRIT- TEN AFTER THE BOARD IS OUTPUT, IF IT IS NECESSARY. MMOVE -- AN OFTEN USED ROUTINE WHICH ACTUALLY MAKES A MOVE AFTER THE BEST MOVE HAS BEEN FOUND. FIRST, THE WHITE IS "REMOVED" FROM ITS CURRENT POINT AND THEN "PLACED" ON ITS NEW POINT. THEN, IF THERE IS A BLACK ON THE LATTER POINT, IT IS REMOVED AND PLACED ON THE BAR. MTSTMOV -- THIS ROUTINE IS THE SAME AS MMOVE EXCEPT THAT A FLAG IS SET WHEN A BLACK IS REMOVED FROM THE BOARD. THE ROUTINE IS USED TO MAKE A "TEST" MOVE SO THAT ALL POSSIBLE BOARD CONFIGURATIONS CAN BE TESTED FOR MERIT. THIS COULD BE INTERPRETED IN REAL LIFE AS A PLAYER MOVING A PIECE BUT KEEPING HIS FINGER ON IT. CLTSTMOV -- RESTORES THE BOARD POSITION AS IT WAS BEFORE A MTSTMOV. THIS INCLUDES RETURNING ANY BLACK WHICH MAY HAVE BEEN TEMP- ORARILY REMOVED FROM A POINT. LOADWTS & DUMPWTS -- THE WEIGHTS ARE READ AT THE BEGINNING OF THE PROGRAM FROM A SEPARATE FILE AND THE POSSIBLY ALTERED WEIGHTS ARE WRITTEN BACK TO THE SAME FILE AT THE END OF THE PROGRAM. DOBEST -- THIS SUBROUTINE IS USED WHEN BEARING OFF THE SECOND MAN, AND ALSO THE THIRD AND FOURTH MAN IN CASE OF DOUBLES. IT FIRST TESTS TO SEE IF A MAN CAN BE REMOVED FROM THE MAXIMUM DISTANCE AWAY FROM THE EDGE OF THE BOARD. IT THEN SEES IF THERE IS A MAN ON THE SPOT OF THE MAXIMUM DISTANCE MINUS ONE. IT THEN ATTEMPTS TO "LEVEL OUT" THE HOME AREA. IF ANY OF THESE ALTERNATIVES ARE FOUND, THE MOVE IS MADE. IF NOT, THE MAN FARTHEST FROM BEING BORN OFF IS MOVED FORWARD. THIS IS DISCUSSED FURTHER UNDER "STRATEGY". MTSTBOFF & CLTSTBOFF -- THESE ROUTINES ARE CALLED WHEN WHITE IS IN A POSITION TO BEAR OFF, BUT THERE ARE STILL BLACKS IN HIS HOME AREA. THEY FUNCTION MUCH THE SAME AS MTSTMOV AND CLTSTMOV, EXCEPT WITH THE ADDED COMPLICATION THAT A "TEST" MOVE MAY ENTAIL MOVING A PIECE OFF THE BOARD. 3) COMPUTATIONAL FUNCTIONS AND ROUTINES HOMEB -- IS CALLED WHEN BLACK ATTEMPTS TO BEAR OFF TO MAKE SURE ALL HIS MEN ARE HOME. THE FUNCTION RETURNS 1 IF THEY ARE, 0 IF THEY ARE NOT ALL HOME. WBEARO -- IS THE COMPLEMENTARY FUNCTION FOR WHITE, ONLY IT RETURNS THE NUMBER OF WHITES HOME INSTEAD. GBRDVAL -- COMPUTES THE BRDVAL FUNCTION IN SUCH A WAY AS TO COMPARE WHITES BOARD POSITION RELATIVE TO BLACK, OR IN OTHER WORDS, TO SEE WHO IS WINNING. THIS FUNCTION IS USED IN DETERMINING WHETHER BLACK OR WHITE MADE THE BETTER MOVE IRREGARDLESS OF THE DICE THROWN. GBRD -- COMPUTES THE BRDVAL FUNCTION WITH ONLY WHITES BOARD POSITION IN MIND. THIS FUNCTION IS USED TO DETERMINE WHITES BEST MOVE. IT STORES POINTS AND ASSOCIATED MOVE WHENEVER A NEW BSTVAL IS FOUND. IT ALSO KEEPS TRACK OF THE WEIGHTS ASSOCIATED WITH THE NEW BEST MOVE. THE REA- SON FOR THIS IS EXPLAINED BY THE NEXT TWO ROUTINES. GOOD -- THIS ROUTINE IS PASSED THE VALUES SAVED BY GBRD AND THE VALUES OF THE WEIGHTS. AS THE NAME IMPLIES, A GOOD MOVE WAS MADE; SO ALL WEIGHTS WHICH GAVE A POSITIVE ADDEND ARE INCREMENTED (THIS IS TO SAY THAT THIS FUNCTION, OR ADDEND, IS IMPORTANT IN MAKING GOOD MOVES), WHILE ALL AD- DENDS WHICH GAVE A NEGATIVE VALUE ARE DECREMENTED (THIS IS TO SAY THAT THE COMPUTER MADE A GOOD MOVE DESPITE THIS ADDENDS "WARNING", SO PER- HAPS THIS "WARNING" IS OVER-RATED). ZERO ADDENDS ARE LEFT UNCHANGED. BAD -- HERE, A BAD MOVE WAS MADE, SO ALL "WARNINGS" OR NEGATIVE VALUE ADDENDS ARE INCREMENTED AND ALL POSITIVE INDICATORS ARE DECREMENTED. THE REMAINING FUNCTIONS ARE PAIRED. THESE FUNCTIONS DESCRIBE A BOARD POSI- TION WHICH I FEEL IS IMPORTANT IN DETERMINING THE OUTCOME OF THE GAME. I WILL ONLY DESCRIBE THE FUNCTIONS DEALING WITH WHITES POSITION; THOSE FOR BLACK ARE EXACTLY THE SAME EXCEPT THAT THE BOARD DIRECTION IS REVERSED. WBAR -- THE NUMBER OF WHITES ON THE BAR (BOARD POSITION 0 = BAR). WSIN -- THE NUMBER OF POINTS WITH ONLY ONE WHITE PIECE OCCUPYING IT. WSINCL -- THIS IS PROBABLY THE SINGLE MOST IMPORTANT FUNCTION. WHEN WHITE LEAVES A SINGLE, THIS FUNCTION DETERMINES THE ODDS OF THE PIECE BEING TAKEN BY DETERMINING HOW FAR IT IS FROM A BLACK AND ADDING THE ODDS OF THIS BLACK PIECE TAKING THE WHITE TO THE ODDS OF ANY OTHER BLACK PIECE WHICH MAY TAKE THIS WHITE. THIS IS DONE FOR ALL THE WHITE SINGLES. WPTSHOME -- THE NUMBER OF POINTS IN WHITES HOME (BOARD POSITIONS 19-24) WHICH ARE HELD BY WHITE. WPTS -- THE NUMBER OF POINTS HELD BY WHITE ANYWHERE ON THE BOARD. WPTSSUCC -- THE NUMBER OF SIDE-BY-SIDE POINTS HELD BY WHITE. WFST3,WFST6,WFST12 -- THE NUMBER OF WHITES ON THE FIRST THREE, SIX, AND TWELVE POINTS OF THE BOARD (THOSE POINTS FARTHEST AWAY FROM WHITES HOME). WHOME -- THE NUMBER OF PIECES WHITE HAS ON HIS SIX HOME POSITIONS. WTOGO -- THE TOTAL VALUE OF DICE THROWS IT WILL TAKE TO GET ALL WHITES MEN HOME. THIS IS OFTEN USED AS THE MOST IMPORTANT INDICATOR AS TO WHO IS ACTUALLY WINNING THE GAME IN REAL LIFE GAMES. 4) MAIN BODY THE MAIN BODY IS DIVIDED INTO THREE PARTS: A) THE COMPETITIVE GAME IN PREPARATION FOR THE GAME, THE WEIGHTS ARE LOADED, THE TELETYPE IS SELECTED, THE BOARD IS INITIALIZED AND THEN PRINTED. THE GAME IS NOW READY TO BEGIN. WHITE GOES FIRST. THE DICE ARE READ AND IF DOUBLES ARE THROWN, DICE3 AND DICE4 ARE ASSIGNED FOR USE IN CASE OF BEARING OFF. BSTVAL IS GIVEN THE MOST NEGATIVE NUMBER REPRESENTABLE BY THE COMPUTER TO INSURE THAT THE FIRST MOVE WILL GIVE A NEW BSTVAL. TWO TESTS ARE THEN MADE TO SEE IF WHITE IS IN A POSITION TO BEAR OFF, OR TO SEE IF THE FORCES ARE SEPA- RATED. IF SO, CONTROL PASSES TO ONE OF THE OTHER PARTS OF THE MAIN BODY. WHITE IS NOW READY TO MOVE. HE FIRST CHECKS TO SEE IF HE HAS ANY MEN ON THE BAR. IF HE HAS NO CHOICE OF A MOVE TO MAKE, THE MOVE IS MADE DIRECT- LY (OR IF HE CANNOT MOVE, NO MOVE IS MADE). IF HE HAS A CHOICE, THEN THE BARFL IS SET, WHICH INSURES THAT THE MAN ON THE BAR IS MOVED. THE K-CYCLE IS USED FOR SWOPPING THE DICE WHEN THEY ARE DIFFERENT. THE IDEA BEHIND THIS CYCLE AND THE FOUR NESTED CYCLES IS DIS- CUSSED IN STRATEGIES. THE I-CYCLE IS THEN ENTERED. WHEN A POSSIBLE MOVE IS FOUND IT IS STORED IN PT1, AND THEN TESTS ARE MADE TO SEE IF THE MOVE IS FEASIBLE. IF SO, A TEST MOVE IS MADE. IF AT ANY TIME AFTER A TEST MOVE IS MADE AND THERE IS ANOTHER MOVE REMAINING AND WHITE IS IN A POSI- TION TO BEAROFF, CONTROL IS PASSED TO THAT SECTION OF THE MAIN BODY. THE J-CYCLE IS THEN ENTERED, WITH A TEST TO MAKE SURE THAT A TEST MOVE IS NOT DUPLICATED. WHEN A MOVE IS FOUND, AND DOULBLES WERE NOT THROWN, THE PRO- GRAM EVALUATES THIS BOARD POSITION AND STORES THE RESULT IF THIS IS THE BEST POSSIBLE MOVE SO FAR. IF NO MOVE IS FOUND, THE MOVE FLAG (M1-M4) DOES NOT GET SET AND NO MOVE WILL BE MADE. IF DOUBLES WERE THROWN, THE BOARD EVALUATION WILL NOT BE MADE UNTIL AFTER FOUR POSSIBLE MOVES HAVE BEEN FOUND. AFTER THE BOARD EVALUATION, THE LAST TEST MOVE IS RETURNED AND A NEW MOVE WITH THAT DIE IS SOUGHT. AFTER ALL TEST MOVES ARE EVALUATED, THE BEST MOVE IS READY TO BE MADE. IF NOT ALL OF THE DICE THROW COULD BE USED, I.E. SIX AND FOUR BUT A SIX MOVE WAS IMPOSSIBLE, THE LAST TEST MOVE MADE WITH THE DIE THAT COULD BE USED IS MADE (THIS IS PURELY RANDOM, BUT THE PROGRAMMING TO OVERCOME THIS WOULD BE OUT OF PROPORTION WITH THE LIKELYHOOD OF IT ACTUALLY OCCURING). DONE IS THE FINISHING POINT FOR THE THREE MAIN PARTS OF THE PROGRAM. FIRST, A CHECK IS MADE TO SEE IF WHITE HAS WON. IF NOT, THE BOARD IS PRINTED, BLACK MAKES HIS MOVE, AND A TEST IS MADE TO SEE IF HE WON. IF THE FORCES ARE SEPARATED OR WHITE IS BEARING OFF, THE CYCLE IS FINISHED AND WHITE IS ASKED TO MAKE HIS NEXT MOVE. IF NOT, THE BOARD IS EVALUATED IN SUCH A WAY TO SEE WHO IS WINNING. IF WHITE HAS IMPROVED HIS POSI- TION SINCE THE LAST MOVE, THE GOOD ROUTINE IS CALLED. IF WHITE MADE A BAD MOVE ON COMPARISON WITH BLACK, THEN THE BAD ROUTINE IS CALLED. THE NEW BRDVAL IS STORED FOR COMPARISON AFTER THE NEXT SET OF MOVES, AND WHITE THEN PROCEEDS TO MAKE HIS NEXT MOVE. B)FORCES SEPARATED BUT NOT ALL WHITES ARE HOME THIS PART OF THE PROGRAM DEALS WITH GETTING THE MEN HOME IN AS FEW MOVES AS POSSIBLE. IT SIMPLY WORKS ON THE PRINCIPLE OF MOVING THE MAN FAR- THEST AWAY THE LARGER OF THE TWO DIE ROLLS. UNFORTUNEATELY, THIS IS NOT THE BEST ALGORITHM IN PRACTICE, AND IS DISCUSSED IN STRATEGIES. IF ALL THE MEN ARE MOVED HOME AND THERE IS A ROLL OR ROLLS LEFT OVER, CONTROL IS PASSED TO BEAROFF. C)BEARING OFF BEARING OFF IS DIVIDED INTO TWO SECTIONS. THE FIRST DEALS WITH BEAR- ING OFF WHEN THE FORCES ARE SEPARATED, AND THE SECOND DEALS WITH THE CASE WHEN BLACK STILL HAS MEN IN WHITES HOME GROUND (OR ON THE BAR). IN THE FORMER CASE, A STRIAGHTFORWARD METHOD IS USED TO BEAR OFF. FIRST, THE SMALLER OF THE DICE IS DEALT WITH. THE ONLY DIFFERENCE IN HANDLING OF THE FIRST AND SECOND DIE COMES LATER IN THE METHOD AND WILL BE DISCUSSED THERE, SO WE CAN ASSUME THAT WE DEAL WITH ALL ROLLS IDENTICALLY. THE FIRST POSSIBLE MOVE OCCURS IF A MAN CAN BE BORN OFF FROM THE MAXIMUM DISTANCE FROM THE EDGE OF THE BOARD. IF THERE ARE NO MEN ON THIS POINT, A MAN MAY BE BORN OFF FROM ONE LESS THAN THIS MAXIMUM DISTANCE. IF THERE ARE NO MEN ON EITHER OF THESE POINTS, THEN AN ATTEMPT IS MADE TO EVEN OUT THE HOME AREA. IN OTHER WORDS, IF THERE ARE A DISPROPORTION- ATE MANY NUMBER OF MEN ON THE POINTS FARTHER AWAY FROM THE EDGE OF THE BOARD, THEY ARE MOVED FORWARD. IF THIS IS NOT THE CASE, THE MAN FARTHEST AWAY FROM THE EDGE OF THE BOARD IS MOVED FORWARD, OR BORN OFF, EXCEPT IN THE CASE OF THE FIRST DICE MOVING FORWARD A MAN THAT WOULD BE BORN OFF BY THE SECOND DICE. IN THAT CASE, THE SECOND FARTHEST MAN IS MOVED. THE PROCESS IS REPEATED FOR A THIRD AND FOURTH MAN IN THE CASE OF DOUBLES. IN THE LATTER CASE, CARE MUST BE TAKEN NOT TO LEAVE ANY SINGLES IN A POSITION TO BE TAKEN. FIRST, A SERIES OF STATEMENTS IS EXECUTED TO GET THE LARGEST ROLL IN DICE1. (REMEMBER BEAROFF MAY BE ENTERED AFTER A MOVE HAS BEEN MADE, BUT WITH ONE OR MORE MOVES LEFT OVER.) THE K-CYCLE HERE CYCLES THROUGH POSSIBLE VALUES OF WSINCL. THE NESTED CYCLE STRUCTURE IS VERY SIMILAR TO THAT USED IN THE COMPETITIVE GAME, WITH THE ADDED COMP- LICATION THAT DURING TEST MOVES IT IS POSSIBLE TO BEAR A MAN OFF. ON THE FIRST LOOP OF THE K-CYCLE, A MOVE IS SOUGHT THAT WILL LEAVE NO MEN IN A POSITION TO BE TAKEN. IF NO SUCH MOVE IS POSSIBLE, THE MOVE THAT PROVIDES THE LOWEST ODDS OF HAVING A MAN TAKEN IS MADE. WHEN A MOVE IS MADE, CON- TROL PASSES TO THE DONE LABEL. THIS COMPLETES THE DESCRIPTION OF THE MAIN BODY AND OF THE PROGRAM.