質問: アリの挙動のプログラムが分かりません。
回答: ランダムな動きだとBが10マス連続で左にいきそうにないので 8割左に移動するようにしてみました。(srandしていませんので毎度同じパターンになります) #include #include #include void MoveA(int *n, unsigned char *p) { *n += (*n>0)?(-1):(0); p[*n] = 0x01; } void MoveB(int *n, unsigned char *p) { if( *n == 0 ) (*n)++; else if( *n >= 49 ) (*n)--; else if( p[*n] ) { p[*n] = 0x00; if(p[*n-1])(*n)--; else if(p[*n+1])(*n)++; else (rand()%5)?((*n)--):((*n)++); } else (rand()%5)?((*n)--):((*n)++); } int main() { unsigned char ucRoad[50]; int nAntA = 20, nAntB = 30; memset(ucRoad,0,sizeof(ucRoad)); while(nAntA != nAntB) { MoveA(&nAntA, ucRoad); MoveB(&nAntB, ucRoad); } return 0; }