/* Kva-kva-kvadrant, 10-2-1 */ #include #define POCET_TRANSF 4 #define POCET_POLI 4 #define ERROR(x...) {fprintf(stderr,x); exit(1);} #define MAX_DELKA_KODU 10000 char zn_transf[POCET_TRANSF+1]="+-XY"; int typ_transf[POCET_TRANSF][POCET_POLI]={ {1,3,0,2}, /* $+$ */ {2,0,3,1}, /* $-$ */ {1,0,3,2}, /* $X$ */ {2,3,0,1} /* $Y$ */ }; int transf[POCET_POLI]={0,1,2,3}; /* na počátku je identita */ int inv=0; /* a bez inverze */ /* uloží do transf permutaci, která je ekvivalentní celému dlouhému řetězci vstupních transformací; v inv je uloženo, zda se invertují barvy */ void nacti_transformace(){ char zn; int i,j; while((zn=getchar())!='\n'){ if(zn=='I'){ /* inverze */ inv=!inv; }else{ int nova[POCET_POLI]; i=0; /* hledej transformaci */ while(i=POCET_TRANSF) ERROR("neznama transformace %c",zn); /* složení permutací */ for(j=0;j