73 lines
1.7 KiB
C
73 lines
1.7 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <time.h>
|
|
#include <math.h>
|
|
#include <stdint.h>
|
|
#include <wchar.h>
|
|
#include <locale.h>
|
|
|
|
void printGrid(int gridX, int gridY, int **arr) {
|
|
// print the array for debugging
|
|
wprintf(L"%lc", 0x2554);
|
|
for(int j = 0; j < gridY; j++) {
|
|
wprintf(L"%lc", 0x2550);
|
|
}
|
|
wprintf(L"%lc", 0x2557);
|
|
wprintf(L"\n");
|
|
for(int j = 0; j < gridY; j++) {
|
|
wprintf(L"%lc", 0x2551);
|
|
for(int i = 0; i < gridX; i++) {
|
|
wprintf(L"%lc", ((arr[i][j] == 1) ? 0x0023 : 0x0020));
|
|
}
|
|
wprintf(L"%lc\n", 0x2551);
|
|
}
|
|
wprintf(L"%lc", 0x255A);
|
|
for(int j = 0; j < gridY; j++) {
|
|
wprintf(L"%lc", 0x2550);
|
|
}
|
|
wprintf(L"%lc", 0x255D);
|
|
|
|
return;
|
|
}
|
|
|
|
int main(int argc, char *argv[]) {
|
|
if(argc < 3) {
|
|
printf("Usage: conway <xsize> <ysize> [seed]\n");
|
|
exit(255);
|
|
}
|
|
setlocale(LC_CTYPE, "");
|
|
int gridX, gridY, seed = 0, generation = 0;
|
|
for(int i = argc - 1; i > 0; i--) {
|
|
switch(i) {
|
|
case 1:
|
|
gridX = atoi(argv[i]);
|
|
break;
|
|
case 2:
|
|
gridY = atoi(argv[i]);
|
|
break;
|
|
case 3:
|
|
seed = atoi(argv[i]);
|
|
break;
|
|
}
|
|
}
|
|
if(seed == 0) {
|
|
time_t t;
|
|
srand((unsigned) time(&t));
|
|
} else {
|
|
srand(seed);
|
|
}
|
|
// dynamically allocate the 2D array, could be quite large!
|
|
int *arr[gridX];
|
|
for(int i = 0; i < gridY; i++) {
|
|
arr[i] = (int *)malloc(gridY * sizeof(int));
|
|
}
|
|
// seed the array
|
|
for(int i = 0; i < gridX; i++) {
|
|
for(int j = 0; j < gridY; j++) {
|
|
arr[i][j] = (rand() % 2 == 0) ? 1 : 0;
|
|
}
|
|
}
|
|
printGrid(gridX, gridY, arr);
|
|
|
|
return 0;
|
|
}
|