-
Notifications
You must be signed in to change notification settings - Fork 1
/
Permutation_Array.cpp
90 lines (81 loc) · 2.98 KB
/
Permutation_Array.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include<bits/stdc++.h>
using namespace std;
typedef long long int lli;
vector<lli> create_permutation(lli height, lli width){
lli i = 0, total_pixel = height*width, j = 0;
map<lli, lli> m;
vector<lli> per(total_pixel, 0);
for(i=0; i<=total_pixel; i++){
per[i] = i;
}
unsigned seed = 0;
shuffle(per.begin(), per.end(), default_random_engine(seed));
// while(m.size() < total_pixel){
// lli num = rand()%total_pixel;
// if(m.find(num) == m.end()){
// m[num] = 1;
// per[i++] = num;
// }
// ++j;
// cout<<j<<endl;
// }
return per;
}
vector<vector<lli>> create_random_color_permutation(lli height, lli width){
lli i, j, max_color_value = 255, total_pixel = height*width;
vector<vector<lli>> color(height, vector<lli>(width, 0));
for(i=0; i<height; i++){
for(j=0; j<width; j++){
lli num = (rand())%max_color_value;
color[i][j] = num;
}
}
return color;
}
void create_color_S_Box_csv_file(lli height, lli width, vector<vector<lli>> color, string file_name){
ofstream file;
file.open(file_name);
lli i, j;
for(i=0; i<height; i++){
for(j=0; j<width; j++){
file<<color[i][j]<<",";
}
file<<endl;
}
file.close();
}
void craete_permutation_table_csv_file(vector<lli> per, lli height, lli width, string file_name){
ofstream file;
file.open(file_name);
lli i, j, k = 0;
for(i=0; i<height; i++){
for(j=0; j<width; j++){
file<<per[k++]<<",";
}
file<<endl;
}
file.close();
}
int main(){
lli N, height = 525, width = 525;
lli i, j;
//-------------------- Color Shuffle Box ---------------------------------
vector<vector<lli>> red_per = create_random_color_permutation(height, width);
cout<<"Red Permutation generated\n"<<endl;
vector<vector<lli>> blue_per = create_random_color_permutation(height, width);
cout<<"Blue Permutation generated\n"<<endl;
vector<vector<lli>> green_per = create_random_color_permutation(height, width);
cout<<"Green Permutation generated\n"<<endl;
//-------------------------------------------------------------------------
//------------------ Create CSV File of shuffle matrix --------------------
create_color_S_Box_csv_file(height, width, red_per, "Red_S_Box.csv");
create_color_S_Box_csv_file(height, width, green_per, "Green_S_Box.csv");
create_color_S_Box_csv_file(height, width, blue_per, "Blue_S_Box.csv");
//-------------------------------------------------------------------------
//------------------ Create Permutation Matrix ----------------------------
vector<lli> initial_permutaion = create_permutation(height, width);
craete_permutation_table_csv_file(initial_permutaion, height, width, "Initial_Permutation.csv");
cout<<"Initial Permutation generated\n"<<endl;
//-------------------------------------------------------------------------
return 0;
}