#include <iostream>
#include <string.h>
#include "stdio.h"
#include <stdlib.h>
#include <fcntl.h>
#include <time.h>
#include <algorithm>
#include <string>
const int tagnum=10;
const int idlong=8;
int collisionnum=0;
int collno=0;
string ids[];
char answer[idlong+1];
struct node{
bool sleep;
char id[idlong+1];
};
struct node tag[tagnum];
using namespace std;
void creatID() {
int i;
int j;
printf("Q-Ary Algorithms Tags examples ID is:\n");
//printf("Total Number of Tags: "+tagnum+"\n");
for( i=0;i<tagnum;i++) {
tag[i].sleep=true;
for(j=0;j<idlong;j++)
tag[i].id[j]=rand()%2+48;
tag[i].id[idlong]='\0';
ids[i] = "10100101";
printf("\n",i+1,tag[i].id);
}
}
string convertInt(int number)
{
if (number == 0)
return "0";
string temp="";
string returnvalue="";
while (number>0)
{
temp+=number%10+48;
number/=10;
}
for (int i=0;i<temp.length();i++)
returnvalue+=temp[temp.length()-i-1];
return returnvalue;
}
int main()
{
//creatID();
string stack1="";
string prefix;
string coll = "";
string cnt;
//cout << prefix;
prefix = "0";
for(int i = 1; i <= 10; i++) {
string p1="";
string id = ids[i];
p1 = id.substr(0,1);
if(p1==prefix) { coll.append(convertInt(i)); coll.append(","); }
cout << "ID[" << i << "] => " << id << "==" << p1 << endl;
}
//string colno = count(coll.begin(), coll.end(), ',');
cout << "Collusion Number: 1 (collusion ids: " << coll << ") Number of Collusion: " << count(coll.begin(), coll.end(), ',') << "\n";
string coll1 = "m,mm,m,";
//cnt = count(coll.begin(), coll.end(), ',');
stack1.append("1");
stack1.append(",");
prefix = "00";
coll = "";
for(int i = 1; i <= 10; i++) {
string p1="";
string id = ids[i];
p1 = id.substr(0,2);
if(p1==prefix) { coll.append(convertInt(i)); coll.append(","); }
}
cout << "Collusion Number: 2 (collusion ids: " << coll << ") Number of Collusion: " << count(coll.begin(), coll.end(), ',') << "\n";
stack1.append("01");
stack1.append(",");
prefix = "000";
coll = "";
for(int i = 1; i <= 10; i++) {
string p1="";
string id = ids[i];
p1 = id.substr(0,3);
if(p1==prefix) { coll.append(convertInt(i)); coll.append(","); }
}
cout << "Collusion Number: 3 (collusion ids: " << coll << ") Number of Collusion: " << count(coll.begin(), coll.end(), ',') << "\n";
stack1.append("001");
stack1.append(",");
prefix = "001";
coll = "";
for(int i = 1; i <= 10; i++) {
string p1="";
string id = ids[i];
p1 = id.substr(0,3);
if(p1==prefix) { coll.append(convertInt(i)); coll.append(","); }
}
cout << "Collusion Number: 4 (collusion ids: " << coll << ") Number of Collusion: " << count(coll.begin(), coll.end(), ',') << "\n";
stack1.append("001");
stack1.append(",");
prefix = "0010";
coll = "";
for(int i = 1; i <= 10; i++) {
string p1="";
string id = ids[i];
p1 = id.substr(0,4);
if(p1==prefix) { coll.append(convertInt(i)); coll.append(","); }
}
cout << "Collusion Number: 5 (collusion ids: " << coll << ") Number of Collusion: " << count(coll.begin(), coll.end(), ',') << "\n";
stack1.append("001");
stack1.append(",");
prefix = "0011";
coll = "";
for(int i = 1; i <= 10; i++) {
string p1="";
string id = ids[i];
p1 = id.substr(0,4);
if(p1==prefix) { coll.append(convertInt(i)); coll.append(","); }
}
cout << "Collusion Number: 6 (collusion ids: " << coll << ") Number of Collusion: " << count(coll.begin(), coll.end(), ',') << "\n";
stack1.append("001");
stack1.append(",");
prefix = "01";
coll = "";
for(int i = 1; i <= 10; i++) {
string p1="";
string id = ids[i];
p1 = id.substr(0,4);
if(p1==prefix) { coll.append(convertInt(i)); coll.append(","); }
}
cout << "Collusion Number: 7 (collusion ids: " << coll << ") Number of Collusion: " << count(coll.begin(), coll.end(), ',') << "\n";
stack1.append("001");
stack1.append(",");
return 0;
}