Want more features on Pastebin? Sign Up, it's FREE!
Guest

TR2 test case generator

By: a guest on Jun 11th, 2010  |  syntax: C++  |  size: 2.17 KB  |  views: 148  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  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. }
clone this paste RAW Paste Data