|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1980 Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms are permitted ! 6: * provided that the above copyright notice and this paragraph are ! 7: * duplicated in all such forms and that any documentation, ! 8: * advertising materials, and other materials related to such ! 9: * distribution and use acknowledge that the software was developed ! 10: * by the University of California, Berkeley. The name of the ! 11: * University may not be used to endorse or promote products derived ! 12: * from this software without specific prior written permission. ! 13: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 14: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 15: * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 16: */ ! 17: ! 18: #ifndef lint ! 19: static char sccsid[] = "@(#)odds.c 5.3 (Berkeley) 6/18/88"; ! 20: #endif /* not lint */ ! 21: ! 22: #include "back.h" ! 23: ! 24: odds (r1,r2,val) ! 25: register int r1; ! 26: int r2, val; ! 27: { ! 28: register int i, j; ! 29: ! 30: if (r1 == 0) { ! 31: for (i = 0; i < 6; i++) ! 32: for (j = 0; j < 6; j++) ! 33: table[i][j] = 0; ! 34: return; ! 35: } else { ! 36: r1--; ! 37: if (r2-- == 0) ! 38: for (i = 0; i < 6; i++) { ! 39: table[i][r1] += val; ! 40: table[r1][i] += val; ! 41: } ! 42: else { ! 43: table[r2][r1] += val; ! 44: table[r1][r2] += val; ! 45: } ! 46: } ! 47: } ! 48: ! 49: count () { ! 50: register int i; ! 51: register int j; ! 52: register int total; ! 53: ! 54: total = 0; ! 55: for (i = 0; i < 6; i++) ! 56: for (j = 0; j < 6; j++) ! 57: total += table[i][j]; ! 58: return (total); ! 59: } ! 60: ! 61: canhit (i,c) ! 62: int i, c; ! 63: ! 64: { ! 65: register int j, k, b; ! 66: int a, d, diff, place, addon, menstuck; ! 67: ! 68: if (c == 0) ! 69: odds (0,0,0); ! 70: if (board[i] > 0) { ! 71: a = -1; ! 72: b = 25; ! 73: } else { ! 74: a = 1; ! 75: b = 0; ! 76: } ! 77: place = abs (25-b-i); ! 78: menstuck = abs (board[b]); ! 79: for (j = b; j != i; j += a) { ! 80: if (board[j]*a > 0) { ! 81: diff = abs(j-i); ! 82: addon = place+((board[j]*a > 2 || j == b)? 5: 0); ! 83: if ((j == b && menstuck == 1) && ! 84: (j != b && menstuck == 0)) ! 85: for (k = 1; k < diff; k++) ! 86: if (k < 7 && diff-k < 7 && ! 87: (board[i+a*k]*a >= 0 || ! 88: board[i+a*(diff-k)] >= 0)) ! 89: odds (k,diff-k,addon); ! 90: if ((j == b || menstuck < 2) && diff < 7) ! 91: odds (diff,0,addon); ! 92: } ! 93: if (j == b && menstuck > 1) ! 94: break; ! 95: } ! 96: return (count()); ! 97: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.