47 lines
1.1 KiB
C++
47 lines
1.1 KiB
C++
#include <string>
|
|
#include <sstream>
|
|
#include <iostream>
|
|
using namespace std;
|
|
|
|
#include "tournament.h"
|
|
|
|
int is_pow_2 (unsigned int x) {
|
|
return ((x != 0) && ((x & (~x + 1)) == x));
|
|
}
|
|
|
|
string tournament(garray & restaurants) {
|
|
if(not is_pow_2(restaurants.size)){
|
|
ostringstream o;
|
|
o << restaurants.size << " is not a power of 2";
|
|
throw o.str();
|
|
}
|
|
|
|
string selection;
|
|
|
|
bool finished = false;
|
|
while(not finished) {
|
|
garray tmp;
|
|
for(int i=0; i < restaurants.size / 2; i++) {
|
|
int a_i = 2*i;
|
|
int b_i = a_i + 1;
|
|
string a = restaurants.data[a_i];
|
|
string b = restaurants.data[b_i];
|
|
cout << "(a) " << a << " (b) " << b << endl;
|
|
cout << "your selection: ";
|
|
cin >> selection;
|
|
if(selection[0] == 'a')
|
|
tmp.add(a);
|
|
else
|
|
tmp.add(b);
|
|
}
|
|
if(tmp.size == 1) {
|
|
finished = true;
|
|
selection = tmp.data[0];
|
|
}
|
|
else {
|
|
restaurants = tmp;
|
|
}
|
|
}
|
|
return selection;
|
|
}
|