Game of Life (Diehard)

integer, dimension(100,100) :: a, c

integer :: n,i,j,t,k,l,sum

open(unit=1,file='dhdata.out',status='unknown')

!========== initial condition =========================================

  do k = 1, 50

  do l = 1, 50

  a(k,l)=0

  end do

  end do

k=25

l=25

a(k,l)     = 1

a(k+1,l)   = 1

a(k+1,l+1) = 1

a(k+5,l+1) = 1

a(k+6,l+1) = 1

a(k+7,l+1) = 1

a(k+6,l-1) = 1

!================== main program ======================================

do t = 1,150

     sum = 0

  do i = 1, 50

  do j = 1, 50

    if     (a(i,j) .eq. 0 .and. a(i-1,j-1)+a(i,j-1)+a(i+1,j-1)+a(i-1,j)+a(i+1,j)+a(i-1,j+1)+a(i,j+1)+a(i+1,j+1).eq.3) then

    c(i,j) = 1

    elseif (a(i,j) .eq. 1 .and. a(i-1,j-1)+a(i,j-1)+a(i+1,j-1)+a(i-1,j)+a(i+1,j)+a(i-1,j+1)+a(i,j+1)+a(i+1,j+1).eq.2) then

    c(i,j) = 1

    elseif (a(i,j) .eq. 1 .and. a(i-1,j-1)+a(i,j-1)+a(i+1,j-1)+a(i-1,j)+a(i+1,j)+a(i-1,j+1)+a(i,j+1)+a(i+1,j+1).eq.3) then

    c(i,j) = 1

    else

    c(i,j) = 0

    endif

    sum = sum + a(i,j)

  !  write (*,*) t, i, j, a(i,j)

 

  end do

  end do

    write (1,*) t, sum 

 

             do i = 1, 50

             do j = 1, 50

             a(i,j)=c(i,j)

         

             end do

             end do

         

end do

end