Advertisement
Guest User

TR2 test case generator

a guest
Jun 11th, 2010
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.17 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <cstdio>
  4. using namespace std;
  5. const int specialtests = 5 , randomtests = 15 , maxMaps = 100 , maxCities = 1000;
  6. int Top;
  7. void construct ( int pnode , int numLeft )
  8. {
  9.     if ( numLeft == 1 )
  10.         return;
  11.     numLeft --;
  12.     int leftsize = rand() % numLeft + 1 , rightsize = numLeft - leftsize;
  13.     if ( leftsize )
  14.     {
  15.         ++ Top;
  16.         cout << pnode <<" L " << Top << endl;
  17.         construct ( Top , leftsize );
  18.     }
  19.     if ( rightsize )
  20.     {
  21.         ++ Top;
  22.         cout << pnode << " R " << Top << endl;
  23.         construct ( Top , rightsize );
  24.     }
  25. }
  26. void outputSample()
  27. {
  28.     cerr <<"Generating sample inputs" << endl;
  29.     string sample = "3\n5\n1 L 2\n1 R 3\n3 L 4\n3 R 5\n4\n1 R 2\n1 L 3\n2 L 4\n3\n1 L 2\n1 R 3\n2\n5\n1 L 2\n2 L 3\n3 L 4\n4 L 5\n6\n1 L 2\n2 R 3\n3 L 4\n4 R 5\n5 L 6\n";
  30.     cout << sample << endl;
  31. }
  32.  
  33. void outputWorstCase()
  34. {
  35.     cerr <<"Generating worst case inputs" << endl;
  36.     // 100 Ls
  37.     cout << maxMaps << endl;
  38.     for ( int i=0;i<maxMaps;i++ )
  39.     {
  40.         cout << maxCities << endl;
  41.         for ( int i=1;i<maxCities;i++ )
  42.             cout << i <<" L " << i+1 << endl;
  43.     }
  44.     // 100 Rs
  45.     cout << maxMaps << endl;
  46.     for ( int i=0;i<maxMaps;i++ )
  47.     {
  48.         cout << maxCities << endl;
  49.         for ( int i=1;i<maxCities;i++ )
  50.             cout << i <<" R " << i+1 << endl;
  51.     }
  52.     // 50 Ls and 50 Rs
  53.     cout << maxMaps << endl;
  54.     for ( int i=0;i<maxMaps/2;i++ )
  55.     {
  56.         cout << maxCities << endl;
  57.         for ( int i=1;i<maxCities;i++ )
  58.             cout << i <<" L " << i+1 << endl;
  59.     }  
  60.     for ( int i=0;i<maxMaps/2;i++ )
  61.     {
  62.         cout << maxCities << endl;
  63.         for ( int i=1;i<maxCities;i++ )
  64.             cout << i <<" R " << i+1 << endl;
  65.     }  
  66.    
  67. }
  68.  
  69. int main()
  70. {
  71.     FILE * fp = fopen ("log.txt" , "w" );
  72.     freopen ( "input_TR2.txt" , "w" , stdout );
  73.     int seed = time(NULL);
  74.     srand(seed);
  75.     fprintf ( fp , "Seed = %d\n" , seed );
  76.     cout << specialtests +randomtests << endl;
  77.     outputSample();
  78.     outputWorstCase();
  79.     cerr << "Generating random cases" << endl;
  80.     for ( int testNum=0;testNum<randomtests;testNum++ )
  81.     {
  82.         cerr << "Generating testcase: " << specialtests + testNum + 1 << endl;
  83.         cout << maxMaps << endl;
  84.         for ( int i=0;i<maxMaps;i++ )
  85.         {
  86.             cout << maxCities << endl;
  87.             Top = 1;
  88.             construct ( 1 , maxCities );
  89.         }
  90.     }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement