Web & App Development

# Recent Automata AMCAT questions answers

Hello here is a solution of a problem asked in automata AMCAT exam. The solution is in C++ but logic can be applied to any programming language.

Problem: There is a colony of 8 cells arranged in a straight line where each day every cell competes with its adjacent cells(neighbour). Each day, for each cell, if its neighbours are both active or both inactive, the cell becomes inactive the next day, otherwise it becomes active the next day.

Assumptions:

The two cells on the ends have single adjacent cell, so the other adjacent cell can be assumsed to be always inactive.
Even after updating the cell state. consider its previous state for updating the state of other cells. Update the cell information of all cells simultaneously.

Write a function cellCompete which takes takes one 8 element array of integers cells representing the current state of 8 cells and one integer days representing te number of days to simulate.

An integer value of 1 represents an active cell and value of 0 represents an inactive cell.

program:
int* cellCompete(int* cells,int days)
{/
}
//function signature ends
 Example automata AMCAT fig
TESTCASES 1:
INPUT:
[1,0,0,0,0,1,0,0],1
EXPECTED RETURN VALUE:
[0,1,0,0,1,0,1,0]
TESTCASE 2:
INPUT:
[1,1,1,0,1,1,1,1,],2
EXPECTED RETURN VALUE:
[0,0,0,0,0,1,1,0]
`#include<iostream>using namespace std;int cellCompete(int *cells ,int day){//write your code herefor (int i=0;i<day;i++){  cells[-1]=0; //assumptions cells[8]=0;//assumptions int u[8]; //another array to copy value for (int i=-1;i<9;i++){ u[i]=cells[i];  }  for(int j=0;j<8;j++){ if(u[j-1]==u[j+1]){ //comparing the value of the neighbouring cells of u[] cells[j]=0; //changing value of cell according to condition } else cells[j]=1; } } for (int i=0;i<8;i++){cout<<cells[i];}return 0;}int main(){ //main functionint days,cells[]={1,0,0,0,0,1,0,0}; //array to pass through functionint *cellsptr=cells; //creating array values to pointercout<<"enter days:"; //for dayscin>>days; cout<<"n[1,0,0,0,0,1,0,0]n";cellCompete(cellsptr, days); //passing to functionreturn 0;}`

### 1 Comment

• int* cellComplete(int* cells,int days){
int previous = 0,i=0,j=0,temp=0;
for(j=0;j<days;j++){
previous = 0;
for(i=0;i<8;i++){
if(i==0){
previous=cells[i];
cells[i]=cells[i+1];
continue;
}
if(i==7){
temp=previous;
previous=cells[i];
cells[i]=temp;
continue;
}
if(previous==cells[i+1]){
previous=cells[i];
cells[i]=0;
}
else{
previous=cells[i];
cells[i]=1;
}
}
}
}