Auto-vortex
From Algopedia
Jump to navigationJump to search
/* Nume program : auto-vortex.c Nume concurent : Ulmeanu Vlad , Matei Lascu */ #include<stdio.h> #include<stdlib.h> #include<time.h> /* Strategia jocului consta in determinarea paritatii, astfel: - o stare numita 'para' este cea in care toate puterile lui 2 din reprezentarea jocului apar de un nr. par de ori in toate stivele; acesta este echivalent cu S1 XOR S2 XOR .. XOR Sn = 0; - orice stare care nu este 'para' este numita 'impara'. La fiecare pas (mutare) se testeaza paritatea. Strategia se bazeaza pe urmatoarele doua teoreme: T1- dintr-o stare impara se poate ajunge intr-o stare para printr-o mutare convenabila, conform strategiei ; T2 - dintr-o stare para se poate ajunge intr-o stare impara prin orice fel de mutare (random); # Nu stiu daca se incadreaza in timp/mutare si memorie. */ int v[30]; int main() { srand(time(NULL)); int i=0,j,exor,m,rz,x,l=0,p,a; char c; do { fscanf(stdin,"%d",&v[i]); c=fgetc(stdin); i++; }while(c==' '); m=i; exor=v[0]^v[1]; for(j=2; j<i; j++) exor=exor^v[j]; if(exor!=0) { x=0; rz=v[x]^exor; while(rz>=v[x]) { x++; rz=v[x]^exor; } v[x]=rz; } else { x=0; while(v[x]==0) x++; p=v[x]; v[x]=rand()%p; } for(j=0; j<m; j++) { fprintf(stdout,"%d",v[j]); if(j!=m-1) fprintf(stdout," "); } fprintf(stdout,"\n"); return 0; }