|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T p
Length: 968 (0x3c8) Types: TextFile Names: »playscore.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/General/Nobs/playscore.c«
#include "defs.h" #include "globs.h" int playscore() { int hold, low; hold = 0; if (count == 15 || count == 31) hold=2; if (gocount > 1 && RANK(go[gocount-2])==RANK(go[gocount-1])) { hold += 2; if (gocount > 2 && RANK(go[gocount-3])==RANK(go[gocount-2])) { hold += 4; if (gocount > 3 && RANK(go[gocount-4])== RANK(go[gocount-3])) hold += 6; } return hold; /* No need to check for runs */ } if (gocount < 3) return hold; for (low=0; low<gocount-2; low++) if (isplrun(low, gocount-low)) return hold+gocount-low; return hold; } int isplrun(start, num) int start, num; { int highest, lowest, i; register mask; lowest = KING; highest = ACE; for (i=start; i<start+num; i++) { if (RANK(go[i])>highest) highest=RANK(go[i]); if (RANK(go[i])<lowest) lowest=RANK(go[i]); } if (highest != lowest+num-1) return 0; /* * Use a mask. */ mask = (1<<num)-1; for (i=start; i<start+num; i++) mask &= ~(1<<(RANK(go[i])-lowest)); return !mask; }