Advertisement
Guest User

rek

a guest
May 12th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2.  
  3. #define N 10
  4. #define T_DIM (N*3*2+1)                                                      // Bok macierzy; +1 jest dla pewności ;)
  5. #define T_POW_2 (T_DIM*T_DIM)                                             // Macierz kwadratowa, Dim like a dimension
  6.  
  7. using namespace std;
  8.  
  9. // -----------------------------------------------------------------------------
  10.  
  11. void skocz(int x, int y, int ttl, int tab[], int start)                                              // pos x, pos y, Time To Live,
  12. {
  13.   if(ttl < 1)               return;
  14.   if(x < 0 || x > T_POW_2)  return;
  15.   if(y < 0 || y > T_POW_2)  return;
  16.  
  17.   if(!start)
  18.       tab[x+y*T_DIM]++; // tablicę liniową przerabiamy na kwadratową // Tak jest najprościej ;D
  19.  
  20.   ttl--;
  21.  
  22.   // zgodne ze wskazówkami zegara
  23.   skocz(x+1, y+2, ttl, tab,0);
  24.    skocz(x+2, y+1, ttl, tab,0);
  25.    skocz(x+2, y-1, ttl, tab,0);
  26.   skocz(x+1, y-2, ttl, tab,0);
  27.  
  28.   skocz(x-1, y-2, ttl, tab,0);
  29.  skocz(x-2, y-1, ttl, tab,0);
  30.  skocz(x-2, y+1, ttl, tab,0);
  31.   skocz(x-1, y+2, ttl, tab,0);
  32.  
  33. }
  34.  
  35. // -----------------------------------------------------------------------------
  36.  
  37. int main(int argc, char *argv[])
  38. {
  39.   int tab[T_POW_2] = {0};
  40.  
  41.   for( int k = 1; k <= N; k++)
  42.   {
  43.       int multi = 0, one_time = 0;
  44.  
  45.       skocz(T_DIM/2, T_DIM/2, k, tab, 1);
  46.  
  47.       for(int i = 0; i < T_POW_2; i++)
  48.       {
  49.         multi += tab[i];
  50.         if(tab[i])
  51.           one_time++;
  52.  
  53.         cout << " " << (tab[i])? 1:0;
  54.         if( i%T_DIM == 0)
  55.           cout << endl;
  56.  
  57.         tab[i] = 0;
  58.       }
  59.       printf("N: %d\tone_t: %d\tmulti_t: %d\n", k, one_time, multi );
  60.   }
  61.  
  62.   return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement