TizzyT

Challenge -TizzyT

Jun 20th, 2015
378
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.07 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4. #include <time.h>
  5. int Randomize(int, int, bool*);
  6. int main() {
  7.     srand(time(NULL));
  8.     int X, Y, moves = 0, PosX = 0, PosY = 0, Max = 0;
  9.     printf("Enter width of array\n");
  10.     scanf("%d", &X);
  11.     printf("Enter height of array\n");
  12.     scanf("%d", &Y);
  13.     printf("\n");
  14.     int board[Y][X];
  15.     for(int y = 0; y < Y; y++) {
  16.         for (int x = 0; x < X; x++) {
  17.             board[y][x] = 0;
  18.         }
  19.     }
  20.     while (true) {
  21.         moves++;
  22.         board[PosY][PosX]++;
  23.         if (board[PosY][PosX] > Max) Max = board[PosY][PosX];
  24.         bool done = true;
  25.         for(int y = 0; y < Y; y++) {
  26.             for (int x = 0; x < X; x++) {
  27.                 printf("%d ", board[y][x]);
  28.                 if (board[y][x] == 0) done = false;
  29.             }
  30.             printf("\n");
  31.         }
  32.         printf("X:%d Y:%d\n\n", PosY, PosX);
  33.         if (done) break;
  34.         bool Moved = false;
  35.         while (Moved == false) {
  36.             PosX = Randomize(X, PosX, &Moved);
  37.             PosY = Randomize(Y, PosY, &Moved);
  38.         }
  39.     }
  40.     printf("Number of moves: %d\n\n", moves);
  41.     int Histogram[Max + 1];
  42.     for (int i = 0; i <= Max; i++) { Histogram[i] = 0; }
  43.     for(int y = 0; y < Y; y++) {
  44.         for (int x = 0; x < X; x++) {
  45.             Histogram[board[y][x]]++;
  46.         }
  47.     }
  48.     for (int i = 0; i <= Max; i++){
  49.         if (Histogram[i] > 0) { printf("%d\t%d\n", i, Histogram[i]); }
  50.     }
  51.     return 0;
  52. }
  53. int Randomize(int Limit, int Value, bool *Moved) {
  54.     if (Value == 0) {
  55.         if (rand() % 2 == 1) {
  56.             Value++;
  57.             *Moved = true;
  58.         }
  59.     } else if (Value == Limit - 1) {
  60.         if (rand() % 2 == 1) {
  61.             Value--;
  62.             *Moved = true;
  63.         }
  64.     } else {
  65.         switch (rand() % 3) {
  66.             case 1:
  67.                 Value--;
  68.                 *Moved = true;
  69.                 break;
  70.             case 2:
  71.                 Value++;
  72.                 *Moved = true;
  73.                 break;
  74.         }
  75.     }
  76.     return Value;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment