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