📄 ruleoutertot.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 <neighborhood>\n"); printf("\t-b <number base>\n"); printf("\t-r <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; 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 outer totalistic generated config template\n"); fprintf(fp, "1\n"); fprintf(fp, "#dim\n%i\n", d); fprintf(fp, "#win length\n50\n"); fprintf(fp, "#ca dimensions\n"); fprintf(fp, "100"); for (i=0; i<(d-1); i++) { fprintf(fp, " 100"); } fprintf(fp, "\n#neigborhood\n%i\n", n); fprintf(fp, "#neighbors\n"); for (i=0; i<n; i++) { fprintf(fp, "0"); for (j=0; j<(d-1); j++) { fprintf(fp, " 0"); } fprintf(fp, "\n"); } fprintf(fp, "#weights\n"); fprintf(fp, "1"); for (j=0; j<(n-1); j++) { fprintf(fp, " 1"); } fprintf(fp, "\n"); fprintf(fp, "#display basis\n"); for (i=0; i<d; i++) { fprintf(fp, "0.0"); for (j=0; j<(d-1); j++) { fprintf(fp, " 0.0"); } fprintf(fp, "\n"); } fprintf(fp, "#window basis\n"); if (d>0) fprintf(fp, "0.0"); for (i=0; i<(d-1); i++) { fprintf(fp, " 0.0"); } fprintf(fp, " 1.0\n"); fprintf(fp, "#number of states\n%i\n", b); t = (int *)malloc(sizeof(int)*(n*2*b)); for (i=0; i<(2*b*n); i++) t[i]=0; get_tot_array(r, b, t); fprintf(fp, "#rules (%i)\n", (n+1)*b); for (j=0; j<b; j++) { for (i=j; i<((n+1)*b); i+=b) { fprintf(fp, "%i ", t[i]); } } fprintf(fp, "\n"); fclose(fp);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -