void printEquilibrium(Equilibrium eq) { int n = eq.lcpdim; colset(n+2); /* column printing to see complementarity of w and z */ colprEquilibrium(eq); colout(); }
void colpr(const char *s) { int j; int w = strlen(s); if (posinbuf + w + 1 > COLBUFSIZE) /* not enough space in current buffer, flush */ /* require w < COLBUFSIZE, otherwise undefined behavior */ { int cc = currcol; colout(); printf("\n-----output reset-----\n\n"); colset(ncols); for (j=0; j < cc; j++) /* print blank columns to continue in the correct column */ buf[posinbuf++] = '\0'; currcol = cc; } if (colwidth[currcol] < w) colwidth[currcol] = w; strcpy(&buf[posinbuf], s); posinbuf += w + 1; currcol++; if (currcol==ncols) /* this requires ncols > 0 */ { currcol = 0; currlines++; } }
void nfprint(void) { char s[MAXSTRL]; int i, j; printf("NF payoffs:\n"); colset(nstrats[2]+1); colleft(0); colpr("pay1"); for (j=0; j<nstrats[2]; j++) { strattomovetuple(j, 2); movetupletoa(2, s); colpr(s); } colpr("pay2"); colnl(); for (i=0; i<nstrats[1]; i++) { strattomovetuple(i, 1); movetupletoa(1, s); colpr(s); /* payoffs player 1 */ for (j=0; j<nstrats[2]; j++) { rattoa(nfpay[i][j][0], s); colpr(s); } /* payoffs player 2 */ colpr(""); for (j=0; j<nstrats[2]; j++) { rattoa(nfpay[i][j][1], s); colpr(s); } colnl(); } colout(); } /* end of nfprint() */
void twolineoutmixed(int pl, Rat *mixed) { int i; char s[MAXSTRL]; int *support; int suppsize = 0; support = TALLOC( nstrats[pl], int); for (i = 0; i < nstrats[pl]; i++) if (mixed[i].num != 0) support[suppsize++] = i ; colset(suppsize) ; for (i = 0; i < suppsize; i++) { strattomovetuple (support[i], pl); movetupletoa(pl, s); colpr(s); } for (i = 0; i < suppsize; i++) { rattoa(mixed[support[i]], s); colpr(s); } colout(); free(support); }
void sfprint(void) { char s[MAXSTRL]; int i, j, k; printf("SF payoffs and constraints:\n"); colset(nseqs[2]+2+nisets[1]); colleft(0); colpr("pay1"); for (j=0; j<nseqs[2]; j++) { seqtoa(firstmove[2] + j, 2, s); colpr(s); } colnl(); colpr("pay2"); for (j=0; j<nseqs[2]; j++) colpr(" "); colpr("cons1"); for (k=1; k<=nisets[1]; k++) /* headers for constraint matrix pl1, printed on right of payoffs */ colpr((firstiset[1]+k-1)->name); for (i=0; i<nseqs[1]; i++) { /* payoffs player 1 */ seqtoa(firstmove[1] + i, 1, s); colpr(s); for (j=0; j<nseqs[2]; j++) { rattoa(sfpay[i][j][0], s); colpr(s); } colnl(); /* payoffs player 2 */ colpr(""); for (j=0; j<nseqs[2]; j++) { rattoa(sfpay[i][j][1], s); colpr(s); } /* constraints player 1 */ for (k=0; k<=nisets[1]; k++) colipr(sfconstr[1][k][i]); colnl(); } /* constraints player 2 */ for (k=0; k<=nisets[2]; k++) { colnl(); if (k==0) colpr("cons2"); else colpr((firstiset[2]+k-1)->name); for (j=0; j<nseqs[2]; j++) colipr(sfconstr[2][k][j]); colnl(); } colout(); } /* end of sfprint() */
void outrealplan(int pl, Rat *rplan) { int i; char s[MAXSTRL]; colset(nseqs[pl]) ; for (i = 0; i < nseqs[pl]; i++) { seqtoa(firstmove[pl] + i, pl, s); colpr(s); } for (i = 0; i < nseqs[pl]; i++) { rattoa(rplan[i], s); colpr(s); } colout(); }
void compatstrats(int pl) { char s[MAXSTRL]; Move seq; int i,j,nl; int **compattable; int *slist; /* list of strategies */ T2ALLOC(compattable, nstrats[pl], nseqs[pl], int); slist = TALLOC (nstrats[pl], int); for (seq = firstmove[pl]; seq < firstmove[pl+1]; seq++) { j = seq - firstmove[pl]; nl = seqtostratlist(seq, pl, slist); for (i=0; i<nl; i++) compattable [slist[i]] [j] = 1; } printf("\nStrategies compatible with sequences for player %d:\n", pl); colset(nseqs[pl]+1); colleft(0); colpr(""); for (seq = firstmove[pl]; seq < firstmove[pl+1]; seq++) { seqtoa(seq, pl, s); colpr(s); } for (i=0; i<nstrats[pl]; i++) { strattomovetuple(i, pl); movetupletoa(pl, s); colpr(s); for (j=0; j<nseqs[pl]; j++) if (compattable[i][j]) colpr("x"); else colpr(""); } colout(); FREE2(compattable, nstrats[pl]); free(slist); } /* end of compatstrats(pl) */