Advertisement
RamonSaboya

Test cases generator #2

Sep 23rd, 2017
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.21 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. vector< bitset<5> > chars;
  4. vector<char> decodechars;
  5. int main() {
  6.   bitset<5> bs0;
  7.   bs0.reset();
  8.   bs0.set(0);
  9.   chars.push_back(bs0);
  10.   bitset<5> bs1;
  11.   bs1.reset();
  12.   bs1.set(0);
  13.   bs1.set(4);
  14.   chars.push_back(bs1);
  15.   bitset<5> bs2;
  16.   bs2.reset();
  17.   bs2.set(0);
  18.   bs2.set(3);
  19.   chars.push_back(bs2);
  20.   bitset<5> bs3;
  21.   bs3.reset();
  22.   bs3.set(3);
  23.   bs3.set(4);
  24.   chars.push_back(bs3);
  25.   bitset<5> bs4;
  26.   bs4.reset();
  27.   bs4.set(0);
  28.   bs4.set(2);
  29.   chars.push_back(bs4);
  30.   bitset<5> bs5;
  31.   bs5.reset();
  32.   bs5.set(2);
  33.   bs5.set(4);
  34.   chars.push_back(bs5);
  35.   bitset<5> bs6;
  36.   bs6.reset();
  37.   bs6.set(2);
  38.   bs6.set(3);
  39.   chars.push_back(bs6);
  40.   bitset<5> bs7;
  41.   bs7.reset();
  42.   bs7.set(0);
  43.   bs7.set(1);
  44.   chars.push_back(bs7);
  45.   bitset<5> bs8;
  46.   bs8.reset();
  47.   bs8.set(1);
  48.   bs8.set(4);
  49.   chars.push_back(bs8);
  50.   bitset<5> bs9;
  51.   bs9.reset();
  52.   bs9.set(4);
  53.   chars.push_back(bs9);
  54.   bitset<5> bsd;
  55.   bsd.reset();
  56.   bsd.set(2);
  57.   chars.push_back(bsd);
  58.   bitset<5> ss;
  59.   ss.reset();
  60.   ss.set(1);
  61.   ss.set(2);
  62.   chars.push_back(ss);
  63.   decodechars.push_back('0');
  64.   decodechars.push_back('1');
  65.   decodechars.push_back('2');
  66.   decodechars.push_back('3');
  67.   decodechars.push_back('4');
  68.   decodechars.push_back('5');
  69.   decodechars.push_back('6');
  70.   decodechars.push_back('7');
  71.   decodechars.push_back('8');
  72.   decodechars.push_back('9');
  73.   decodechars.push_back('-');
  74.   srand(time(NULL));
  75.   for(int z = 0; z < 200; z++) {
  76.     string sscode = "";
  77.     for(int c = 0; c < 5; c++) {
  78.       sscode += ss[4 - c] ? "2 " : "1 ";
  79.     }
  80.     string code = sscode + "1 ";
  81.     string decode = "";
  82.     string message = "";
  83.     int size = rand() % 23 + 1;
  84.     for(int i = 0; i < size; i++) {
  85.       int index = rand() % (chars.size() - 1);
  86.       bitset<5> bs = chars[index];
  87.       decode += decodechars[index];
  88.       for(int c = 0; c < 5; c++) {
  89.         message += bs[4 - c] ? "2 " : "1 ";
  90.       }
  91.       message += "1 ";
  92.     }
  93.     code += message;
  94.     int wc = 0, wk = 0;
  95.     for(int i = 1; i <= size; i++) {
  96.       char ch = decode[i - 1];
  97.       wc += ((size - i) % 10 + 1) * (ch == '-' ? 10 : (ch - '0'));
  98.       wk += ((size - i + 1) % 9 + 1) * (ch == '-' ? 10 : (ch - '0'));
  99.     }
  100.     wc %= 11;
  101.     char c = (wc == 10 ? '-' : (wc + '0'));
  102.     wk += (c == '-' ? 10 : (c - '0'));
  103.     wk %= 11;
  104.     char k = (wk == 10 ? '-' : (wk + '0'));
  105.     bitset<5> bs = chars[c == '-' ? 10 : c - '0'];
  106.     for(int c = 0; c < 5; c++) {
  107.       code += bs[4 - c] ? "2 " : "1 ";
  108.     }
  109.     code += "1 ";
  110.     bs = chars[k == '-' ? 10 : k - '0'];
  111.     for(int c = 0; c < 5; c++) {
  112.       code += bs[4 - c] ? "2 " : "1 ";
  113.     }
  114.     code += "1 " + sscode;
  115.     int codesize = 23 + (size * 6);
  116.     printf("%d\n", codesize);
  117.     int randsize = rand() % 100 + 1;
  118.     for(int c = 0; c < code.size(); c++) {
  119.       char ch = code[c];
  120.       if(ch == ' ') {
  121.         printf(" ");
  122.         continue;
  123.       }
  124.       int ez = ch - '0';
  125.       int value = ez * randsize;
  126.       double var = floor(value * ((double)(rand() % 6) / 100.0));
  127.       int var2 = var * (rand() % 2 == 0 ? -1 : 1);
  128.       printf("%d", value + var2);
  129.     }
  130.     printf("\n");
  131.   }
  132.   printf("0");
  133.   return 0;
  134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement