#include "utilities.h" #include #include static unsigned int random_number(unsigned int max) { return rand() / (RAND_MAX / max); } void shuffle(void *base, size_t nitems, size_t size) { char *c_base = base; char swap[size]; for (int i = 0; i < nitems; i++) { char *a = c_base + (i * size); char *b = c_base + (random_number(nitems - 1) * size); memcpy(swap, a, size); memcpy(a, b, size); memcpy(b, swap, size); } } void init2d(void **array, size_t width, size_t height, size_t size) { char **c_array = (char **)array; char *start = (char *)array; for (size_t x = 0; x < width; x++) c_array[x] = start + (width * sizeof(int *)) + (x * height * size); } size_t sizeof_2d(size_t width, size_t height, size_t size) { return (width * sizeof(char *)) + (width * height * size); } /* * Find left and right ints. */ int find_lr_ints(char *text, char **left, char **right) { *left = text; while (**left != 0 && (**left < '0' || **left > '9')) (*left)++; if (**left == 0) return 0; *right = text + strlen(text); while (**right < '0' || **right > '9') (*right)--; while (**right >= '0' && **right <= '9') (*right)--; (*right)++; return 1; }