title: LeetCode: Prison Cells After N Days
body: <p>Stack, I can't quite wrap my head around this oddity. I'm evaluating the positions within the array, each time. How is it that by initializing the array each time I receive different results... I would appreciate if someone can explain this.</p>
  
  <p><strong>In While Loop: Correct</strong></p>
  
  <p><br>0,1,0,1,1,0,0,1
  <br>0,1,1,0,0,0,0,0
  <br>0,0,0,0,1,1,1,0
  <br>0,1,1,0,0,1,0,0
  <br>0,0,0,0,0,1,0,0
  <br>0,1,1,1,0,1,0,0
  <br>0,0,1,0,1,1,0,0
  <br>0,0,1,1,0,0,0,0</p>
  
  <p><strong>Outside While Loop (Initialized Once): Incorrect</strong></p>
  
  <p><br>0,1,0,1,1,0,0,1
  <br>0,1,1,0,0,0,0,0
  <br>0,0,1,0,1,0,1,0
  <br>0,0,1,1,0,0,1,0
  <br>0,0,0,1,0,0,1,0
  <br>0,1,1,0,1,1,0,0
  <br>0,0,1,1,1,0,1,0
  <br>0,0,0,0,1,1,0,0</p>
  
  <p><strong>Question Details</strong></p>
  
  <p>There are 8 prison cells in a row, and each cell is either occupied or vacant.</p>
  
  <p>Each day, whether the cell is occupied or vacant changes according to the following rules:</p>
  
  <p>If a cell has two adjacent neighbors that are both occupied or both vacant, then the cell becomes occupied.
  Otherwise, it becomes vacant.
  (Note that because the prison is a row, the first and the last cells in the row can't have two adjacent neighbors.)</p>
  
  <p>We describe the current state of the prison in the following way: cells[i] == 1 if the i-th cell is occupied, else cells[i] == 0.</p>
  
  <p>Given the initial state of the prison, return the state of the prison after N days (and N such changes described above.)</p>
  
  <p><strong>Example 1: Expected Output</strong></p>
  
  <p>Input: cells = [0,1,0,1,1,0,0,1], N = 7
  <br>Output: [0,0,1,1,0,0,0,0]
  <br>Explanation: 
  <br>The following table summarizes the state of the prison on each day:
  <br>Day 0: [0, 1, 0, 1, 1, 0, 0, 1]
  <br>Day 1: [0, 1, 1, 0, 0, 0, 0, 0]
  <br>Day 2: [0, 0, 0, 0, 1, 1, 1, 0]
  <br>Day 3: [0, 1, 1, 0, 0, 1, 0, 0]
  <br>Day 4: [0, 0, 0, 0, 0, 1, 0, 0]
  <br>Day 5: [0, 1, 1, 1, 0, 1, 0, 0]
  <br>Day 6: [0, 0, 1, 0, 1, 1, 0, 0]
  <br>Day 7: [0, 0, 1, 1, 0, 0, 0, 0]       </p>
  
  <p><strong>Method</strong></p>
  
  <pre><code>    static public int[] PrisonAfterNDays(int[] cells, int N) 
      {
          int counter = 0;
          //Doesn't work if it's here
          //int[] temp = new int[8];
          while(counter &lt; N)
          {
              Console.WriteLine(String.Join(",",cells));
  
              //Works if it's here ?!?!?!
              int[] temp = new int[8];
              for(int j = 1; j &lt; 8-1; j++)
              {
                  if(cells[j-1] == cells[j+1])
                  {
                      temp[j] = 1;
                  }
                  else
                  {
                      temp[j] = 0;
                  }
  
              }
  
              cells = temp;
              counter++;
          }
  
          return cells;
      }
  </code></pre>