📄 rulenontot.c
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>int num_bit(int n) { int i, j; int s; s = 0; for (i=0; i<32; i++) { //printf("%i, %i, %i\n", n, n>>i, (n>>i)&1); s += (n>>i)&1; } return(s);}void get_tot_array(int r, int b, int *t) { int i=0; while (r) { t[i] = r%b; r/=b; i++; }}void print_usage(void) { printf("usage:\n"); printf("\t-n <number of neighbors>\n"); printf("\t-b <number base>\n"); printf("\t-r <non totalistic rule>\n"); printf("\t-d <dimension>\n"); printf("\t-f <file>\n"); printf("\t[-h] help\n");}int main(int argc, char **argv) { int i, j, k, r=0, b=0, n=0, d=0; char c; int *t; int c_opt; char *fn=NULL; extern char *optarg; FILE *fp; int tsize; while ((c_opt = getopt(argc, argv, "n:b:r:d:stdhf:")) != -1) { switch(c_opt) { case 'n': n = atoi(optarg); break; case 'b': b = atoi(optarg); break; case 'r': r = atoi(optarg); break; case 'f': fn = strdup(optarg); break; case 'd': d = atoi(optarg); break; case 'h': print_usage(); exit(1); default: print_usage(); exit(1); break; } } if (!(b && r && n && d)) { print_usage(); exit(1); } fp = (fn ? fopen(fn, "w") : stdout); fprintf(fp, "#ca non-totalistic generated config template\n"); fprintf(fp, "0\n"); /*non-totalistic file identifier*/ fprintf(fp, "#dim\n%i\n", d); fprintf(fp, "#ca win len\n50\n"); fprintf(fp, "#ca dimensions\n"); fprintf(fp, "100"); for (i=0; i<(d-1); i++) { fprintf(fp, " 100"); } fprintf(fp, "\n#num neigbors\n%i\n", n); fprintf(fp, "#neighbors\n"); for (i=0; i<n; i++) { fprintf(fp, "%i", i-1); /* makes 1d generation easier */ for (j=0; j<(d-1); j++) { fprintf(fp, " 0"); } fprintf(fp, "\n"); } fprintf(fp, "#display basis\n"); for (i=0; i<d; i++) { fprintf(fp, "1.0"); for (j=0; j<(d-1); j++) { fprintf(fp, " 0.0"); } fprintf(fp, "\n"); } fprintf(fp, "#win display vector\n"); for (i=0; i<d; i++) { fprintf(fp, "0.0 "); } fprintf(fp, "1.0\n"); fprintf(fp, "#number of states\n%i\n", b); tsize=1; for (i=0; i<n; i++) { tsize*=b; } t = (int *)malloc(sizeof(int)*tsize); for (i=0; i<tsize; i++) t[i]=0; get_tot_array(r, b, t); fprintf(fp, "#rules\n"); fprintf(fp, "#****\n#"); for (i=0; i<((n+1)*2); i++) { fprintf(fp, "(%i %i) ", i, t[i]); } fprintf(fp, "\n#****\n"); for (i=0; i<tsize; i++) { fprintf(fp, "%i ", t[i]); } fprintf(fp, "\n"); /* for (i=0; i<(1<<n); i++) { fprintf(fp, "%i ", t[num_bit(i)*2]); } for (i=0; i<(1<<n); i++) { fprintf(fp, "%i ", t[(num_bit(i)*2)+1]); } fprintf(fp, "\n"); */ fclose(fp);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -