Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- #include <time.h>
- int Randomize(int, int, bool*);
- int main() {
- srand(time(NULL));
- int X, Y, moves = 0, PosX = 0, PosY = 0, Max = 0;
- printf("Enter width of array\n");
- scanf("%d", &X);
- printf("Enter height of array\n");
- scanf("%d", &Y);
- printf("\n");
- int board[Y][X];
- for(int y = 0; y < Y; y++) {
- for (int x = 0; x < X; x++) {
- board[y][x] = 0;
- }
- }
- while (true) {
- moves++;
- board[PosY][PosX]++;
- if (board[PosY][PosX] > Max) Max = board[PosY][PosX];
- bool done = true;
- for(int y = 0; y < Y; y++) {
- for (int x = 0; x < X; x++) {
- printf("%d ", board[y][x]);
- if (board[y][x] == 0) done = false;
- }
- printf("\n");
- }
- printf("X:%d Y:%d\n\n", PosY, PosX);
- if (done) break;
- bool Moved = false;
- while (Moved == false) {
- PosX = Randomize(X, PosX, &Moved);
- PosY = Randomize(Y, PosY, &Moved);
- }
- }
- printf("Number of moves: %d\n\n", moves);
- int Histogram[Max + 1];
- for (int i = 0; i <= Max; i++) { Histogram[i] = 0; }
- for(int y = 0; y < Y; y++) {
- for (int x = 0; x < X; x++) {
- Histogram[board[y][x]]++;
- }
- }
- for (int i = 0; i <= Max; i++){
- if (Histogram[i] > 0) { printf("%d\t%d\n", i, Histogram[i]); }
- }
- return 0;
- }
- int Randomize(int Limit, int Value, bool *Moved) {
- if (Value == 0) {
- if (rand() % 2 == 1) {
- Value++;
- *Moved = true;
- }
- } else if (Value == Limit - 1) {
- if (rand() % 2 == 1) {
- Value--;
- *Moved = true;
- }
- } else {
- switch (rand() % 3) {
- case 1:
- Value--;
- *Moved = true;
- break;
- case 2:
- Value++;
- *Moved = true;
- break;
- }
- }
- return Value;
- }
Advertisement
Add Comment
Please, Sign In to add comment