int main(int argc, char *argv[]) { CA *ca; char *filename = "out.rnd"; FILE *p; int nbytes; unsigned rule; srand(time(NULL)); nbytes = 1024*1024*10; if (argc != 2) { fprintf(stderr, "usage: %s rule\n", PROGRAM_NAME); exit(EXIT_FAILURE); } else { char *strend; rule = strtoul(argv[1], &strend, 10); if (*strend) { fprintf(stderr, "Invalid rule : '%s'\n", argv[1]); exit(EXIT_FAILURE); } } if (DEBUG) { printf("rule : %u\n", rule); } ca = ca_create(512, rule); if (!(p = fopen(filename, "wb"))) { perror("fopen"); exit(EXIT_FAILURE); } ca_init_random(ca); while (nbytes >= 0) { ca_iterate(ca, 1); nbytes = ca_to_file(ca, nbytes, p); } fclose(p); ca_destroy(ca); return EXIT_SUCCESS; }
static int ca_extend(struct count_array *ca, dm_block_t extra_blocks) { dm_block_t nr_blocks = ca->nr + extra_blocks; uint32_t *counts = vzalloc(sizeof(*counts) * nr_blocks); if (!counts) return -ENOMEM; if (ca->counts) { memcpy(counts, ca->counts, sizeof(*counts) * ca->nr); ca_destroy(ca); } ca->nr = nr_blocks; ca->nr_free += extra_blocks; ca->counts = counts; return 0; }
int main(int argc, char *argv[]) { UINT i; unsigned int N; UINT NSTATES; unsigned int rule; CA *ca; char *graph; if (argc != 3) { fprintf(stderr, "usage: %s rule ca-size\n", PROGRAM_NAME); exit(EXIT_FAILURE); } sscanf(argv[1], "%u", &rule); sscanf(argv[2], "%u", &N); if (DEBUG) fprintf(stderr, "rule %u\nN=%u\n", rule, N); ca = ca_create(N, rule); NSTATES = 2; NSTATES <<= (N - 1); graph = create_graph(NSTATES); for (i = 0; i < NSTATES; ++i) flags_unset(graph, i, STATE_ALL_SET_MASK); for (i = 0; i < NSTATES; ++i) if (!flags_test(graph, i, STATE_HAS_BEEN_VISITED)) search_cycle(ca, graph, i); free_graph(graph); ca_destroy(ca); return EXIT_SUCCESS; }
int main(int argc, char *argv[]) { CA **ca; char *filename = "out.rnd"; FILE *p; long long nbytes; int nrules; unsigned int *rules; int j; srand(time(NULL)); nbytes = 1024L * 1024L * 1024L * 2L; nrules = argc - 1; if (nrules < 1) { fprintf(stderr, "usage: %s rule0 rule1 ... ruleN\n", PROGRAM_NAME); exit(EXIT_FAILURE); } else { char *strend; int i; MALLOC(rules, sizeof(unsigned int) * nrules); MALLOC(ca, sizeof(CA*) * nrules); for (i = 0; i < nrules; ++i) { rules[i] = strtoul(argv[i + 1], &strend, 10); if (*strend) { fprintf(stderr, "Invalid rule : '%s'\n", argv[i + 1]); exit(EXIT_FAILURE); } if (DEBUG) fprintf(stderr, "Parsed rule '%s'\n", argv[i + 1]); ca[i] = ca_create(503, rules[i]); ca_init_random(ca[i]); } } if (!(p = fopen(filename, "wb"))) { perror("fopen"); exit(EXIT_FAILURE); } while (nbytes >= 0) { int i; for (i = nrules - 1; i >= 1 ; --i) ca_feedback(ca[i], ca[i - 1], 4); for (i = 0; i < nrules; ++i) ca_iterate(ca[i], 1); nbytes = ca_to_file(ca[nrules - 1], nbytes, p); } fclose(p); for (j = 0; j < nrules; ++j) ca_destroy(ca[j]); return EXIT_SUCCESS; }
int main(int argc, char *argv[]) { int i; int N; int NSTATES; unsigned int rule; CA *ca; FILE *p; char filename[256]; if (argc != 3) { fprintf(stderr, "usage: %s rule ca-size\n", PROGRAM_NAME); exit(EXIT_FAILURE); } sscanf(argv[1], "%u", &rule); sscanf(argv[2], "%d", &N); if (DEBUG) fprintf(stderr, "rule %u\nN=%d\n", rule, N); ca = ca_create(N, rule); sprintf(filename, "graph-rule%u-n%d.dot", rule, N); filename[255] = 0; p = fopen(filename, "w"); if (!p) { fprintf(stderr, "couldn't open file '%s'\n", filename); exit(EXIT_FAILURE); } fprintf(p, "digraph Graph_rule%u_n%d{\n", rule, N); NSTATES = (2 << (N - 1)); for (i = 0; i < NSTATES; ++i) { int dest; ca_int_init(ca, i); ca_iterate(ca, 1); dest = ca_int_get(ca); fprintf(p, " %d -> %d;\n", i, dest); } fprintf(p, "}\n"); fclose(p); ca_destroy(ca); return EXIT_SUCCESS; }