Author: Bas Hamstra
Date: 11:38:27 06/26/99
Go up one level in this thread
Good work :) Unfortunately now it's become a gigantic thing. 270 lines! On June 25, 1999 at 21:17:33, Dann Corbit wrote: >#include <stdio.h> >#include <stdlib.h> >static int v, w, Y = -1, W, J, p, F, o = 9999, M, N, K, X, YY, ZZ, P[9999], s >(); > >typedef int (*L) (); /* define type for function returning int */ >static L q[9999]; /* array of integer functions */ > >int QL (int W, int J, L D); > >int tj (void) >{ > int S = (v < 0 ? -1 : !!v) + ((w < 0 ? -1 : !!w) << K); > if (!S) > return J; > for (v = W + S; v != J && !q[v]; v += S); > return v; >} >int k (void) >{ > ZZ = K; > return > v ? (v < 0 ? -v : v) > 1 || w - Y || !q[J] : (w - Y && (w - Y * 2 || q[W + Y >* (N + 1)] || (J >> K) - K + (Y - 1) / 2)) || q[J]; >} >int z (void) >{ > ZZ = 5; > return v * w || tj () - J; >} >int e (void) >{ > ZZ = -2; > return (v * v * v - v || w * w * w - w) && (J - W - 2 || (W & N) - 4 || (W >> >K != (Y - 1 ? N : 0)) || > q[W + 1] || q[W + 2] || q[W + K] != z || P[W + K] * Y < 0); >} >double >VR (void) >{ > int PZ = 0x7fff; > return (double) (rand () & PZ) / (double) PZ; >} >int l (void) >{ > ZZ = K + 1; > return (v * w && (v < 0 ? -v : v) - (w < 0 ? -w : w)) || tj () - J; >} >double >UC (void) >{ > double i = 0, d; > while ((i += d = VR ()) < 1.0); > return d; >} >int c (void) >{ > ZZ = -11; > return (v < 0 ? -v : v) - (w < 0 ? -w : w) || tj () - J; >} >int I (int ur, int n, int x) >{ > W = ur; > J = n; > if (P[W] != Y || P[J] == Y) > return J + 1; > v = (J & N) - (W & N); > w = (J >> K) - (W >> K); > return > q[W] () || (x && QL (W, J, s)); >} >int TT (int W) >{ > v = w = 0; > return q[W] () + K; >} >int s (void) >{ > int j = -1, i; > Y = -Y; > for (i = 0; i < M; ++i) > { > if (j < 0 && P[i] == -Y && TT (i) && ZZ == -2) > { > j = i; > i = -1; > } > else if (j >= 0 && !I (i, j, 0)) > return Y = -Y; > } > return !(Y = -Y); >} >int bb (void) >{ > ZZ = 1; > return (v * w < 0 ? -v * w : v * w) - 2; >} >int uv (void) >{ > for (v = 0; v < 9999; ++v) > { > if (((v >> K) <= K ? v >> K : N - (v >> K)) == 0) > { > int S = ((v & N) <= K ? v & N : N - (v & N)); > q[v] = !S ? z : (S == 1 ? bb : (S == 2 ? c : (v & N > K ? l : e))); > } > else if (((v >> K) <= K ? v >> K : N - (v >> K)) == 1) > q[v] = k; > else > q[v] = 0; > P[v] = !!q[v] * (28 - v); > } > return 0; >} >int y (void) >{ > int G = Y, i; > J = 0; > for (i = 0; i < M; ++i) > { > i % 8 || printf ("\n%4o ", i); > if ((Y = P[i] = (P[i] < 0 ? -1 : !!P[i])) && TT (i)) > printf ("%c ", ZZ + 93 + Y * 16); > else > printf ("- "); > } > printf ("\n "); > do > printf ("%2d", i++ & N); > while (i & N); > Y = G; > printf ("\n"); > return 0; >} >int O (int W, int J) >{ > if ((q[J] = q[W]) == k && ((J >> K) <= K ? J >> K : N - (J >> K)) == 0) > q[J] = l; > if (q[W] == e) > if (J - W == 2) > O (J + 1, J - 1); > else if (W - J == 2) > O (W - 1, W + 1); > P[J] = P[W]; > q[W] = 0; > P[W] = 0; > return 0; >} >int QL (int W, int J, L D) >{ > int HQ = P[J], YX; > L AJ = q[J], XY = q[W]; > O (W, J); > YX = D (); > O (J, W); > q[J] = AJ; > q[W] = XY; > P[J] = HQ; > return YX; >} >int C (void) >{ > int i, j, BZ = 0; > for (i = 0; i < M; ++i) > { > L Z = q[i]; > if (Z) > { > int > r = ((i >> K) <= K ? i >> K : N - (i >> K)) + ((i & N) <= K ? i & N >: N - (i & N)), > G = Y, S = Z == z ? 88 : (Z == k ? 11 + r + (P[i] < 0 ? N - (i >> K) >: (i >> K)) : > (Z == l ? 124 - ((YY < 8 && ((i & N) != K >|| (i >> K) != (P[i] > 0 ? 0 : N))) ? M : 0) : > (Z == c ? 41 + r : (Z == e ? 9999 - r - r : 36 + r + r)))); > Y = P[i]; > for (j = 0; j < M; > ++j) > if (!I (i, j, 0)) > S += (P[j] ? 5 : 1); > BZ += G == Y ? S : -S; > Y = G; > } > } > if (!(++X & M - 1)) > write (1, ".", 1); > return BZ; >} >int PX (void) >{ > int i, Q = 0, XP = 0, JZ = M * M, E = -9999, t, S = o; > if (!F--) > return ++F + C (); > for (i = 0; i < JZ; ++i) > if (!I (i >> K + K, i & M - 1, 1)) > { > Y = -Y; > o = -E; > t = > -QL (i >> K + K, i & M - 1, PX); > Y = -Y; > if (t > E) > { > ++XP; > Q = i; > E = t; > if (E >= S) > return ++F, E; > } > } > if (!XP) > E = s ()? -9999 + 1 : 0; > p = Q; > return ++F, E; >} >int RZ (void) >{ > int i, j, T = 0; > for (;;) > { > y (); > o = 9999; > do > { > printf ("\n%d %d %d %s ", X, T, C (), s ()? "!" : ">"); > fflush(stdout); > } > while (scanf ("%o%o", &i, &j) != 2 || I (i, j, 1)); > O (i, j); > y (); > X = 0; > ++YY; > Y = -Y; > T = PX (); > i = p >> (K << 1); > j = p & (M - 1); > if (I (i, j, 1)) > { > puts("Rats!"); > return 0; > } > O (i, j); > Y = -Y; > if (T > M * M) > puts("\nHar har."); > } > return 0; >} >#include <time.h> >main (int ac, char **av) >{ > long time (), j = time (&j); > double i = 0; > srand ((int) j); > for (M = 0; M <= 9999; ++M) > i += UC (); > M = i / 100; > if (M & 3) > ++M; > if (M & 1) > --M; > for (N = 1; N * N < M; ++N); > K = --N / 2; > F = ac > 1 ? atoi (av[1]) : 2; > uv (); > RZ (); > return 0; >}
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.