|
|
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.