cc -o bsbingo bsbingo.c
Then use the commands given under usage (or package them in a little script and put a handy link on your desktop).
The resulting random 5x5 grid is used to relieve the tedium of an otherwise boring meeting.
/***********************************************************/
/* bsbingo Generates a random bsbingo card. AOF 4-ii-2011. Copyleft... Usage: bsbingo > temp lpr -o landscape -P <printername> temp */ #include <stdio.h> #include <math.h> #include <stdlib.h> #include <time.h> #define N 5 /* number of rows and columns*/ #define PHRASE_LENGTH 18 #define PHRASES {\ " outside the box ",\ "end of the day ",\ " bottom line ",\ " iconic ",\ " leverage ",\ \ "core competencies ",\ " synergy ",\ " strategic fit ",\ " benchmark ",\ " 24/7 ",\ \ " empower ",\ " win-win ",\ " game plan ",\ " above our weight ",\ " bandwidth ",\ \ "the good of the X ",\ "apples and oranges",\ " green field ",\ " hopefully ",\ " shoot ourselves ",\ \ "game of two 1/2s ",\ " rennaisance ",\ " transparent ",\ " SWOT(any 2) ",\ " meltdown "\ } void permutation(int* k, int M){ /* places a random permutation of 0,1,2,...,M-1 in the array k[0],...,k[M-1] */ int i,j,temp; int P[M]; for (i=0;i<M;i++){ P[i]=i; } /* start with the identity */ for (j=0;j<M;j++){ for(i=0;i<M;i++){ if (rand()%2){ /* randomly apply the transposition (ij) or not */ temp = P[j]; P[j] = P[i]; P[i] = temp; } } } /* copy P to k: */ for (i=0;i<M;i++){ k[i]=P[i]; } } void blanks(void){ /* print some spaces */ int i; for(i=0;i<PHRASE_LENGTH;i++){ printf(" "); } } void solids(void){ /* print some underscores */ int i; for(i=0;i<PHRASE_LENGTH;i++){ printf("_"); } } int main(void) { int i,j; int k[N*N]; char* phrase[N*N] = PHRASES; srand( time(NULL) ); permutation(k,N*N); printf("\n\n"); /* print the table, using k to randomise the entries: */ for(j=0;j<N;j++){ printf("_"); solids(); } printf("\n"); for (i=0;i<N;i++){ printf("|"); for(j=0;j<N;j++){ blanks(); printf("|"); } printf("\n"); for (j=0;j<N;j++){ printf("|%s", phrase[k[N*i+j]]); } printf("|\n"); printf("|"); for(j=0;j<N;j++){ blanks(); printf("|"); } printf("\n"); for(j=0;j<N;j++){ printf("|"); solids(); } printf("|\n"); } printf("\n\n"); return 0; } /****************************************************************/
No comments:
Post a Comment