September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
116
Task/Forest-fire/Batch-File/forest-fire.bat
Normal file
116
Task/Forest-fire/Batch-File/forest-fire.bat
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
@echo off
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
if "%1"=="" (
|
||||
call:default
|
||||
) else (
|
||||
call:setargs %*
|
||||
)
|
||||
|
||||
call:createarray
|
||||
call:fillarray
|
||||
call:display
|
||||
echo.
|
||||
echo -------------------
|
||||
echo.
|
||||
|
||||
for /l %%i in (1,1,%i%) do (
|
||||
echo.
|
||||
echo -------------------
|
||||
echo.
|
||||
call:evolve
|
||||
call:display
|
||||
)
|
||||
pause>nul
|
||||
|
||||
:default
|
||||
set m=10
|
||||
set n=11
|
||||
set p=50
|
||||
set f=5
|
||||
set i=5
|
||||
exit /b
|
||||
|
||||
:setargs
|
||||
set m=%1
|
||||
set n=%m%+1
|
||||
set p=%2
|
||||
set f=%3
|
||||
set i=%4
|
||||
exit /b
|
||||
|
||||
:createarray
|
||||
for /l %%m in (0,1,%n%) do (
|
||||
for /l %%n in (0,1,%n%) do (
|
||||
set a%%m%%n=0
|
||||
)
|
||||
)
|
||||
exit /b
|
||||
|
||||
:fillarray
|
||||
for /l %%m in (1,1,%m%) do (
|
||||
for /l %%n in (1,1,%m%) do (
|
||||
set /a treerandom=!random! %% 101
|
||||
if !treerandom! leq %p% set a%%m%%n=T
|
||||
)
|
||||
)
|
||||
exit /b
|
||||
|
||||
:display
|
||||
for /l %%m in (1,1,%m%) do (
|
||||
set "line%%m="
|
||||
for /l %%n in (1,1,%m%) do (
|
||||
set line%%m=!line%%m! !a%%m%%n!
|
||||
)
|
||||
set line%%m=!line%%m:0= !
|
||||
echo.!line%%m!
|
||||
)
|
||||
exit /b
|
||||
|
||||
:evolve
|
||||
for /l %%m in (1,1,%m%) do (
|
||||
for /l %%n in (1,1,%m%) do (
|
||||
call:nexttick !a%%m%%n! %%m %%n
|
||||
set newa%%m%%n=!errorlevel!
|
||||
)
|
||||
)
|
||||
call:update
|
||||
exit /b
|
||||
|
||||
:nexttick
|
||||
|
||||
if %1==0 (
|
||||
set /a treerandom=!random! %% 101
|
||||
if !treerandom! leq %p% exit /b 1
|
||||
exit /b 0
|
||||
)
|
||||
|
||||
if %1==T (
|
||||
set /a lowerm=%2-1
|
||||
set /a upperm=%2+1
|
||||
set /a lowern=%3-1
|
||||
set /a uppern=%3+1
|
||||
set burn=0
|
||||
for /l %%m in (!lowerm!,1,!upperm!) do (
|
||||
for /l %%n in (!lowern!,1,!uppern!) do (
|
||||
if !a%%m%%n!==# set burn=1
|
||||
)
|
||||
)
|
||||
if !burn!==1 exit /b 2
|
||||
|
||||
set /a burnrandom=!random! %% 101
|
||||
if !burnrandom! leq %f% exit /b 2
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
if %1==# exit /b 0
|
||||
|
||||
:update
|
||||
for /l %%m in (1,1,%m%) do (
|
||||
for /l %%n in (1,1,%m%) do (
|
||||
if !newa%%m%%n!==1 set newa%%m%%n=T
|
||||
if !newa%%m%%n!==2 set newa%%m%%n=#
|
||||
set a%%m%%n=!newa%%m%%n!
|
||||
)
|
||||
)
|
||||
exit /b
|
||||
Loading…
Add table
Add a link
Reference in a new issue