title: Cell Compete Problems
body: <p>Here is my assignment:</p>
  
  <blockquote>
    <p>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 itbecomes active the next day.</p>
    
    <p>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 pervious state for
    updating the state of other cells. Update the cell informationof
    allcells simultaneously.</p>
    
    <p>Write a fuction 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.</p>
    
    <p>Program:</p>
  
  <pre><code>int* cellCompete(int* cells,int days)
  {
  //write your code here
  } 
  //function signature ends
  
  Test Case 1:
  INPUT:
  [1,0,0,0,0,1,0,0],1
  EXPECTED RETURN VALUE:
  [0,1,0,0,1,0,1,0]
  
  Test Case 2:
  INPUT:
  [1,1,1,0,1,1,1,1,],2
  EXPECTED RETURN VALUE:
  [0,0,0,0,0,1,1,0]
  </code></pre>
  </blockquote>
  
  <p>This is the problem statement given above for the problem. The code which I have written for this problem is given below. But the output is coming same as the input.</p>
  
  <pre><code>#include&lt;iostream&gt;
  using namespace std;
  
  // signature function to solve the problem
  int *cells(int *cells,int days)
  {   int previous=0;
      for(int i=0;i&lt;days;i++)
      {
  
          if(i==0)
          {
              if(cells[i+1]==0)
              {
  
              previous=cells[i];
              cells[i]=0;
          }
  
          else
          {
  
              cells[i]=0;
          }       
  
  
          if(i==days-1)
          {
              if(cells[days-2]==0)
              {
                  previous=cells[days-1];
                  cells[days-1]=0;
              }
          else
          {
              cells[days-1]=1;
          }
          }
  
  
  
          if(previous==cells[i+1])
          {
              previous=cells[i];
              cells[i]=0;
          }
  
          else
          {
              previous=cells[i];
              cells[i]=1;
          }
      }
  
              }
  return cells;
  }
  
  
  
  
  int main()
  {
      int array[]={1,0,0,0,0,1,0,0};
      int *result=cells(array,8);
      for(int i=0;i&lt;8;i++)
      cout&lt;&lt;result[i];
  }
  </code></pre>
  
  <p>I am not able to get the error and I think my logic is wrong. Can we apply dynamic programming here If we can then how?</p>