亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ca.c

?? 細胞自動機的一個源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include "ca.h"int (*ca_update_func)(ca_t *ca, int s, int e);/* get flat position in memory array from point   vector p */int ca_point(ca_t *ca, int *p) {  int i;  int run=1, c, n=0;  c = ca->cur;  for (i=0; i<(ca->dim); i++) {    n += run*p[i];    run *= ca->d[i];  }  return(n);}/* get point vector from flat memroy point p   and put into dest */int ca_vec(ca_t *ca, int *dest, int p) {  static int *d = NULL, *run = NULL, dim = 0;  int i, j, k;  if (dim!=(ca->dim)) {    if (d) free(d);    d = (int *)malloc(sizeof(int)*(ca->dim));    if (run) free(run);    run = (int *)malloc(sizeof(int)*(ca->dim));    dim = ca->dim;  }  run[0] = 1;  for (i=0; i<(dim-1); i++) {    run[i+1] = ca->d[i]*run[i];  }  for (i=(dim-1); i>=0; i--) {    dest[i] = p/run[i];    p -= (p/run[i])*run[i];  }}  int *ca_nei_addp(ca_t *ca, int *p, int *a) {  int i, j, k;  int carry=0;  for (i=0; i<(ca->dim); i++) {    p[i] += a[i] + ca->d[i];    p[i] %= ca->d[i];    /*    carry = ( (p[i]>ca->d[i]) ? 1 : 0 );    if (p[i]>=ca->d[i]) {      carry = p[i] - ca->d[i] + 1;    } else if (p[i]<0) {      carry = ca->d[i] + p[i];    } else carry=0;    p[i] += ca->d[i];    p[i] %= ca->d[i];    */  }  return(p);}/* get sum of neighbors for outer totalistic   CA */int ca_tot_sum(ca_t *ca, int p) {  int i, j, k=0;  int c;  int tfp;  static int *po=NULL, *t=NULL, dim=0;  if (dim!=ca->dim) {    dim = ca->dim;    if (po) {      free(po);      free(t);    }    po = (int *)malloc(sizeof(int)*(ca->dim));    t = (int *)malloc(sizeof(int)*(ca->dim));  }  c = ca->cur;  ca_vec(ca, t, p);  for (i=0; i<(ca->nei_num); i++) {    memcpy(po, t, sizeof(int)*dim);    ca_nei_addp(ca, po, ca->nei[i]);    tfp = ca_point(ca, po);    k += (ca->ca[c][tfp])*(ca->w[i]);    /* whoopsie, doesn't take into acount edges for > 1 dim */    /*    k += (ca->ca[c][(p + ca->fnei[i] + ca->fd)%ca->fd])*(ca->w[i]);    */  }  /*  if (ca->ca[c][p]) {    printf("k: %i (%i)\n", k, ca->wadd);  }  */  /* k is neighbor sum.  wadd is sum of weights.     since its outer totalistic, add the middle cell     value * sum of weights to get rule */  return(k + (ca->ca[c][p]*(ca->wadd)));}/* get next state for cell.   rule position = p_n p_(n-1) ... p_0 p */int ca_flat_state(ca_t *ca, int p) {  int i, j, k, c, n, *d;  int dig=0, digp=1, tfp;  static int *po=NULL, *t=NULL, dim=0;  if (dim!=ca->dim) {    dim = ca->dim;    if (po) {      free(po);      free(t);    }    po = (int *)malloc(sizeof(int)*(ca->dim));    t = (int *)malloc(sizeof(int)*(ca->dim));  }  c = ca->cur;  ca_vec(ca, t, p);  for (i=(ca->nei_num-1); i>=0; i--) {    memcpy(po, t, sizeof(int)*dim);    ca_nei_addp(ca, po, ca->nei[i]);    tfp = ca_point(ca, po);    dig += ca->ca[c][tfp]*digp;    digp *= ca->k;    /* whoops, doesn't handle edges in > 1 dimension */    /*    dig += ca->ca[c][ (ca->fnei[i] + p + ca->fd) % ca->fd ]*digp;    digp *= ca->k;    */  }  return(ca->r[dig]);}/* get rule position from flat position in memory */int ca_flat_rule(ca_t *ca, int p) {  int i, j, k, c, n, *d;  int dig, digp=1;  c = ca->cur;  dig = 0;  for (i=0; i<(ca->nei_num); i++) {    dig += ca->ca[c][ (ca->fnei[i] + p + ca->fd) % ca->fd ]*digp;    digp *= ca->dim;  }  /*  dig += ca->ca[c][p];  digp *= ca->dim;  for (i = ((ca->nei_num)/2); i<(ca->nei_num); i++) {    dig += ca->ca[c][ca->fnei[i]+p]*digp;    digp *= ca->dim;  }  */  return(dig);}int ca_tot_update(ca_t *ca, int s, int e) {  int i, j, c, n;  c = ca->cur;  n = (ca->cur + 1)%(ca->wlen);  for (i=s; i<=e; i++) {    ca->ca[n][i] = ca->tr[ca_tot_sum(ca, i)];  }  ca->cur++;  ca->cur%=ca->wlen;  return(0);}/*the way i'm doing it, there really isn't   any use of having s and e...*/int ca_flat_update(ca_t *ca, int s, int e) {  int i, j, c, n;  c = ca->cur;  n = (ca->cur+1)%(ca->wlen);  /* apply the rule to every cell */  for (i=s; i<=e; i++) {    ca->ca[n][i] = ca_flat_state(ca,i);  }  ca->cur++;  ca->cur%=ca->wlen;  return(0);}/* a more user friendly version of update.   ps start point, pe end point   DON'T USE (its not right)*/int ca_update(ca_t *ca, int *ps, int *pe) {  return(ca_flat_update(ca, ca_point(ca, ps), ca_point(ca, pe)));}/********************************* memory functions (alloc, init, free etc.)**********************************//* allocate the cell aut for the ca   assumed ca->dim & ca->d allocated and initialized */int ca_cell_alloc(ca_t *ca) {  int i, n=1;  /* allocate XxYxZ... size ca */  for (i=0; i<(ca->dim); i++) {    n*=ca->d[i];  }  //printf("ca: allocating ca (%i)\n", sizeof(int *)*(ca->wlen));  if (!(ca->ca = (int **)malloc(sizeof(int *)*(ca->wlen))))    return(-1);  for (i=0; i<(ca->wlen); i++) {    //printf("\t%i (%i)\n", i, sizeof(int)*n);    if (!(ca->ca[i] = (int *)malloc(sizeof(int)*n)))      return(-1);  }  ca->cur = 0;  ca->next = 1;  return(0);}ca_t *ca_alloc(int k, int dim, int wlen,	       int *d, int nei_num, int **nei,	       int *r, float **b, float *wb) {  ca_t *ca;  ca = (ca_t *)malloc(sizeof(ca_t));  return(ca_init(ca, k, dim, wlen, d, nei_num, nei, r, b, wb));}/* non totalistic init function */ca_t *ca_init(ca_t *ca, int k, int dim, int wlen,	      int *d, int nei_num, int **nei,	      int *r, float **b, float *wb) {  int i, j;  /*    ca_t *ca;    ca = (ca_t *)malloc(sizeof(ca_t));  */  ca->k = k;  ca->dim = dim;  ca->wlen = wlen;  ca->slen = wlen;  ca->go = 0;  /* dimensions of ca */  //printf("ca: allocating d (%i)\n", sizeof(int)*dim);  if (!(ca->d = (int *)malloc(sizeof(int)*dim)))    return(NULL);  ca->fd=1;  for (i=0; i<dim; i++) {    ca->d[i] = d[i];    ca->fd *= d[i];  }  ca->nei_num = nei_num;  /* neigbors */  //printf("ca: allocating nei & fnei (%i)\n", sizeof(int *)*nei_num);  if (!(ca->nei = (int **)malloc(sizeof(int *)*nei_num)))    return(NULL);  if (!(ca->fnei = (int *)malloc(sizeof(int *)*nei_num)))    return(NULL);  /* aloccate and assign relative neighbors */  for (i=0; i<nei_num; i++) {    //printf("\t%i (%i)\n", i, sizeof(int)*dim);    if (!(ca->nei[i] = (int *)malloc(sizeof(int)*dim)))      return(NULL);    for (j=0; j<dim; j++) {      ca->nei[i][j] = nei[i][j];    }  }  /* assign flat neighbors */  for (i=0; i<nei_num; i++) {    ca->fnei[i] = ca_point(ca, ca->nei[i]);  }  /* rule lookup */  ca->r_num = 1;  for (i=0; i<nei_num; i++) {    ca->r_num *= k;  }  //printf("ca: allocating r (%i)\n", sizeof(int)*(ca->r_num));  if (!(ca->r = (int *)malloc(sizeof(int)*(ca->r_num))))    return(NULL);  for (i=0; i<(ca->r_num); i++) {    ca->r[i] = r[i];  }  /* basis */  //printf("ca: allocating b (%i)\n", sizeof(float *)*dim);  if (!(ca->b = (float **)malloc(sizeof(float *)*dim)))    return(NULL);  for (i=0; i<dim; i++) {    //printf("ca:\t%i (%i)\n", i, sizeof(float)*4);    if (!(ca->b[i] = (float *)malloc(sizeof(float)*4)))      return(NULL);    for (j=0; j<dim; j++) {      ca->b[i][j] = b[i][j];    }    for (; j<4; j++) {      ca->b[i][j] = 0.0;    }  }  /* win vector */  //printf("ca: allocating wb (%i)\n", sizeof(float)*(dim+1));  if (!(ca->wb = (float *)malloc(sizeof(float)*(dim+1))))    return(NULL);  for (i=0; i<(dim+1); i++) {    ca->wb[i] = wb[i];  }  ca->delay = 1000;  ca->cur = 0;  ca->next = 1;  if (ca_cell_alloc(ca)<0) {    return(NULL);  }  for (j=0; j<ca->wlen; j++) {    for (i=0; i<ca->fd; i++) {      ca->ca[j][i] = 0;    }  }  ca->diff = 0;  ca->slen = 1;  return(ca);}/* outer totalistic init */ca_t *ca_tot_init(ca_t *ca, int k, int dim, int wlen,		  int *d, int nei_num, int **nei, int *w,		  int *r, float **b, float *wb) {  int i, j;  /*    ca_t *ca;    ca = (ca_t *)malloc(sizeof(ca_t));  */  ca->k = k;  ca->dim = dim;  ca->wlen = wlen;  ca->slen = wlen;  ca->go = 0;  /* dimensions of ca */  if (!(ca->d = (int *)malloc(sizeof(int)*dim)))    return(NULL);  ca->fd=1;  for (i=0; i<dim; i++) {    ca->d[i] = d[i];    ca->fd *= d[i];  }  ca->nei_num = nei_num;  /* neigbors */  if (!(ca->nei = (int **)malloc(sizeof(int *)*nei_num)))    return(NULL);  if (!(ca->fnei = (int *)malloc(sizeof(int *)*nei_num)))    return(NULL);  /* aloccate and assign relative neighbors */  for (i=0; i<nei_num; i++) {    if (!(ca->nei[i] = (int *)malloc(sizeof(int)*dim)))      return(NULL);    for (j=0; j<dim; j++) {      ca->nei[i][j] = nei[i][j];    }  }  /* weights */  ca->w = (int *)malloc(sizeof(int)*nei_num);  for (i=0; i<nei_num; i++) {    ca->w[i] = w[i];  }  ca->wadd=1;  for (i=0; i<ca->nei_num; i++) {    ca->wadd += ca->w[i];  }  /* assign flat neighbors */  for (i=0; i<nei_num; i++) {    ca->fnei[i] = ca_point(ca, ca->nei[i]);  }  /* outer totalistic rule lookup */  ca->tr_num = (nei_num+1)*k;  if (!(ca->tr = (int *)malloc(sizeof(int)*(ca->tr_num))))    return(NULL);  for (i=0; i<(ca->tr_num); i++) {    ca->tr[i] = r[i];  }  /* basis */  if (!(ca->b = (float **)malloc(sizeof(float *)*dim)))    return(NULL);  for (i=0; i<dim; i++) {    if (!(ca->b[i] = (float *)malloc(sizeof(float)*dim)))      return(NULL);    for (j=0; j<dim; j++) {      ca->b[i][j] = b[i][j];    }  }  /* win vector */  if (!(ca->wb = (float *)malloc(sizeof(float)*(dim+1))))    return(NULL);  for (i=0; i<(dim+1); i++) {    ca->wb[i] = wb[i];  }  ca->delay = 1000;  ca->cur = 0;  ca->next = 1;  if (ca_cell_alloc(ca)<0) {    return(NULL);  }  ca->slen = 1;  ca->diff = 0;  return(ca);}void ca_free(ca_t *ca) {  int i, j, k;  //printf("ca: freeing d\n");  free(ca->d);  for (i=0; i<ca->nei_num; i++) {    //printf("ca:\t%i\n", i);    free(ca->nei[i]);  }  //printf("ca: freeing nei & fnei\n");  free(ca->nei);  free(ca->fnei);  for (i=0; i<ca->wlen; i++) {    //printf("ca:\t%i\n", i);    free(ca->ca[i]);  }  //printf("ca: freeing ca\n");  free(ca->ca);  if (ca->w) {    //printf("ca: freeing w\n");    free(ca->w);  }  for (i=0; i<ca->dim; i++) {    //printf("ca:\t%i\n", i);    free(ca->b[i]);  }  //printf("ca: freeing b\n");  free(ca->b);  if (ca->wb) {    //printf("ca: freeing wb\n");    free(ca->wb);  }  if (ca->r) {    //printf("ca: freeing r\n");    free(ca->r);  }  if (ca->tr) {    //printf("ca: freeing tr\n");    free(ca->tr);  }  //printf("ca: freeing mother ca\n");  free(ca);}/**************************************

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
波多野结衣中文字幕一区| 欧美日韩中字一区| 久久国产三级精品| 一区二区三区欧美日| 亚洲欧美日韩中文播放 | 依依成人精品视频| 中文字幕一区二区三区不卡在线| 国产欧美日韩一区二区三区在线观看| 久久久另类综合| 精品国产青草久久久久福利| 欧美一区二区在线观看| 精品视频全国免费看| 欧美视频日韩视频| 欧美日韩1234| 欧美电影免费观看高清完整版在线观看| 91久久精品午夜一区二区| 欧美亚洲尤物久久| 欧美日韩激情一区二区三区| 91精品国产综合久久精品麻豆| 欧美性视频一区二区三区| 亚洲女人****多毛耸耸8| 国产自产视频一区二区三区| 麻豆精品一区二区三区| 国产乱子伦视频一区二区三区| 成人污视频在线观看| 99精品欧美一区| 日本福利一区二区| 欧美一区二区三区四区高清| 91精品国产综合久久久久久漫画 | 在线一区二区三区四区| 欧美在线一二三| 5566中文字幕一区二区电影| 欧美www视频| ...xxx性欧美| 日本美女一区二区三区视频| 国产成人在线看| 欧美亚洲国产一区二区三区| 欧美精品一区二区三区蜜桃| 亚洲欧洲综合另类在线| 青青青爽久久午夜综合久久午夜| 国产精品一区一区三区| 欧美色中文字幕| 国产亚洲一区字幕| 亚洲mv在线观看| 成人一级黄色片| 欧美一区二区三区免费| 中文字幕一区二区三中文字幕| 天天操天天综合网| 99re热视频精品| 精品国产精品一区二区夜夜嗨| 亚洲精品国产无天堂网2021| 韩国理伦片一区二区三区在线播放| 色婷婷综合久久久中文一区二区 | 在线视频欧美精品| 久久久美女艺术照精彩视频福利播放| 亚洲蜜臀av乱码久久精品| 国内精品伊人久久久久av影院| 欧美在线999| 中文字幕一区日韩精品欧美| 国产精品白丝jk黑袜喷水| 777a∨成人精品桃花网| 夜夜嗨av一区二区三区四季av| 国产jizzjizz一区二区| 精品不卡在线视频| 久久精品噜噜噜成人88aⅴ| 在线免费不卡电影| 亚洲乱码国产乱码精品精小说| 丁香另类激情小说| 久久色在线视频| 精品亚洲aⅴ乱码一区二区三区| 欧美另类变人与禽xxxxx| 亚洲午夜一区二区| 在线观看视频一区二区欧美日韩| 亚洲色欲色欲www| 成人深夜福利app| 国产精品久久久久久久久搜平片| 国产一区欧美二区| 久久久久综合网| 懂色av中文字幕一区二区三区| 久久久久久久精| 国产成人免费在线视频| 久久精品一区八戒影视| 国产成人午夜视频| 亚洲国产精品精华液2区45| 国产99久久久精品| 亚洲少妇30p| 在线91免费看| 狂野欧美性猛交blacked| 久久久亚洲综合| 成人丝袜高跟foot| 中文字幕亚洲视频| 欧美在线一二三四区| 日韩高清不卡在线| 精品国产露脸精彩对白| 国产成人综合亚洲91猫咪| 中文一区二区在线观看| 97精品久久久午夜一区二区三区 | 欧美精品色综合| 捆绑调教一区二区三区| 久久免费国产精品| 成人午夜在线播放| 一级中文字幕一区二区| 欧美一级二级在线观看| 国产黄人亚洲片| 亚洲精品福利视频网站| 欧美一级理论片| 国产凹凸在线观看一区二区| 亚洲伊人伊色伊影伊综合网| 日韩美女视频在线| 99精品视频在线观看免费| 亚洲gay无套男同| 国产亚洲精久久久久久| 欧美色偷偷大香| 国产成人综合在线播放| 日韩精品乱码免费| 中文字幕一区二区三区精华液| 日韩视频免费直播| 色美美综合视频| 国产一区二区三区精品欧美日韩一区二区三区 | 国产精品超碰97尤物18| 在线不卡a资源高清| 成人午夜电影网站| 免费看日韩精品| 亚洲黄色免费电影| 国产亚洲精品7777| 欧美大肚乱孕交hd孕妇| 99久久99久久精品国产片果冻| 久久激情综合网| 香蕉成人伊视频在线观看| 国产精品美女一区二区在线观看| 4438x亚洲最大成人网| 91婷婷韩国欧美一区二区| 精品一区二区三区视频| 五月综合激情日本mⅴ| 国产精品福利一区| 国产无一区二区| 日韩欧美国产不卡| 9191久久久久久久久久久| 欧美性淫爽ww久久久久无| 成人av网址在线观看| 国产黄色精品网站| 久久黄色级2电影| 日本aⅴ亚洲精品中文乱码| 亚洲www啪成人一区二区麻豆| 最新日韩在线视频| 亚洲欧美综合色| 中文字幕巨乱亚洲| 国产日产精品1区| 久久久午夜精品理论片中文字幕| 久久精品综合网| 日韩欧美成人一区| 日韩情涩欧美日韩视频| 欧美一区二区视频免费观看| 欧美三片在线视频观看 | 美女精品自拍一二三四| 天天综合色天天综合| 午夜欧美大尺度福利影院在线看| 亚洲综合一二区| 亚洲成人一区在线| 亚洲成人综合视频| 日韩精品国产欧美| 免费成人在线视频观看| 精品亚洲成a人在线观看 | 一本色道久久综合亚洲91| 99国产欧美另类久久久精品| 成人毛片在线观看| 色综合色狠狠综合色| 日本精品裸体写真集在线观看| 99久久er热在这里只有精品66| 91香蕉视频mp4| 欧美日韩精品一区二区三区蜜桃 | 欧美日韩精品一区视频| 91精品国产免费| 久久―日本道色综合久久| 亚洲国产精品黑人久久久| 亚洲丝袜自拍清纯另类| 亚洲国产视频a| 久久99精品国产麻豆不卡| 国产精品综合一区二区三区| 99精品视频一区| 91精品国产全国免费观看| 欧美精品一区男女天堂| 国产精品国产三级国产| 偷拍与自拍一区| 国产69精品久久99不卡| 欧美午夜精品久久久| 日韩视频国产视频| 中文字幕制服丝袜成人av | 综合久久国产九一剧情麻豆| 亚洲愉拍自拍另类高清精品| 麻豆中文一区二区| 99久久综合99久久综合网站| 欧美人与性动xxxx| 国产日韩欧美制服另类| 婷婷综合五月天| 成人午夜短视频| 日韩一级视频免费观看在线| 亚洲欧洲日产国码二区| 五月天亚洲精品| 99久久免费视频.com|