#define SIZE 16 #define SSIZE 4 /* sqrt(SIZE) */ #define SIZEBITS 4 /* ceil(lg(SIZE)) */ #define SIZE1BITS 5 /* ceil(lg(SIZE+1)) */ static int charfill(int ch) { switch (ch) { case '.': return( 0); break; case '0': return( 1); break; case '1': return( 2); break; case '2': return( 3); break; case '3': return( 4); break; case '4': return( 5); break; case '5': return( 6); break; case '6': return( 7); break; case '7': return( 8); break; case '8': return( 9); break; case '9': return(10); break; case 'A': return(11); break; case 'B': return(12); break; case 'C': return(13); break; case 'D': return(14); break; case 'E': return(15); break; case 'F': return(16); break; } return(-1); } static char fillchar(int fill) { return("?0123456789ABCDEF"[fill]); } #define bitcount(x) ((const char *)&bitcount_[0])[(x)] static char bitcount_[65536]; static void bitcount_init(void) { int i; int v; for (i=0;i<65536;i++) { v = (i & 0x5555) + ((i >> 1) & 0x5555); v = (v & 0x3333) + ((v >> 2) & 0x3333); v = (v & 0x0f0f) + ((v >> 4) & 0x0f0f); bitcount_[i] = (v & 0x00ff) + ((v >> 8) & 0x00ff); } } #define FILLEDFMT " %c " #define FILLEDARG(x) fillchar((x)) #define MASKFMT "%04x" #define SEP " " #define VECTYPE unsigned long long int #define SUMDECL unsigned char sum[16]; #define SUMINIT bzero(&sum[0],sizeof(sum)) #define SUMADD(vec) do { int i_; typeof((vec)) v_ = (vec); \ for (i_=15;i_>=0;i_--) { sum[i_] += (v_ >> i_) & 1; } } while (0) #define SUMGET(inx) sum[(inx)] #include "solve.c"