TizzyT

Challenge [C90 Version] -TizzyT

Jun 23rd, 2015
322
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.18 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.     int i = 0;
  16.     int y = 0;
  17.     int x = 0;
  18.     for(y; y < Y; y++) {
  19.         x = 0;
  20.         for (x; x < X; x++) {
  21.             board[y][x] = 0;
  22.         }
  23.     }
  24.     while (true) {
  25.         moves++;
  26.         board[PosY][PosX]++;
  27.         if (board[PosY][PosX] > Max) Max = board[PosY][PosX];
  28.         bool done = true;
  29.         y = 0;
  30.         x = 0;
  31.         for(y; y < Y; y++) {
  32.             x = 0;
  33.             for (x; x < X; x++) {
  34.                 printf("%d ", board[y][x]);
  35.                 if (board[y][x] == 0) done = false;
  36.             }
  37.             printf("\n");
  38.         }
  39.         printf("X:%d Y:%d\n\n", PosY, PosX);
  40.         if (done) break;
  41.         bool Moved = false;
  42.         while (Moved == false) {
  43.             PosX = Randomize(X, PosX, &Moved);
  44.             PosY = Randomize(Y, PosY, &Moved);
  45.         }
  46.     }
  47.     printf("Number of moves: %d\n\n", moves);
  48.     int Histogram[Max + 1];
  49.     i = 0;
  50.     for (i; i <= Max; i++) { Histogram[i] = 0; }
  51.     y = 0;
  52.     x = 0;
  53.     for(y; y < Y; y++) {
  54.         x = 0;
  55.         for (x; x < X; x++) {
  56.             Histogram[board[y][x]]++;
  57.         }
  58.     }
  59.     i = 0;
  60.     for (i; i <= Max; i++){
  61.         if (Histogram[i] > 0) { printf("%d\t%d\n", i, Histogram[i]); }
  62.     }
  63.     return 0;
  64. }
  65. int Randomize(int Limit, int Value, bool* Moved) {
  66.     if (Value == 0) {
  67.         if (rand() % 2 == 1) {
  68.             Value++;
  69.             *Moved = true;
  70.         }
  71.     } else if (Value == Limit - 1) {
  72.         if (rand() % 2 == 1) {
  73.             Value--;
  74.             *Moved = true;
  75.         }
  76.     } else {
  77.         switch (rand() % 3) {
  78.             case 1:
  79.                 Value--;
  80.                 *Moved = true;
  81.                 break;
  82.             case 2:
  83.                 Value++;
  84.                 *Moved = true;
  85.                 break;
  86.         }
  87.     }
  88.     return Value;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment