本帖最后由 CrLf 于 2014-9-29 17:26 编辑
另附改进后的 bat 版生命游戏算法(第 6 版),在原先算法(第 5 版)的基础上提高 25% 效率:- @echo off &setlocal enabledelayedexpansion
- echo>计时.txt %time%
- for /f "delims==" %%a in ('set') do set %%a=
- echo 第1代
- for /f "skip=29 useback delims=" %%a in ("%~0") do (
- echo %%a
- set /a "行25+=1"
- set tmp=%%a&set "tmp=!tmp:■=1!"&set tmp=!tmp:▓=0!
- set 行!行25!=!tmp:~-1!!tmp!!tmp:~0,1!
- )
- set 行27=000000000000000000000000000
- for /l %%i in (2 1 100) do (
- echo 第%%i代
- set 行0=!行25!&set 行26=!行1!
- for /l %%Y in (0 1 25) do (
- set tmp=
- set /a y1=%%Y+1,y2=y1+1
- for /f "tokens=1,2" %%a in ("!y1! !y2!") do (
- for /l %%X in (0 1 24) do (
- set /a "xy=(0!行%%Y:~%%X,3!!行%%a:~%%X,3!!行%%b:~%%X,3!&0111101111)%%7,xy=^!(xy-2)*(!行%%a:~%%X,2!&1)+^!(xy-3)"
- set tmp=!tmp!!xy!
- )
- )
- set 行%%Y=!last:~-1!!last!!last:~0,1!
- if !y1! neq 26 set last=!tmp!&set tmp=!tmp:1=■!&echo !tmp:0=▓!
- )
- )
- echo>>计时.txt %time%
- type 计时.txt&pause&exit
- ▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
- ▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
- ▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓▓■■■▓
- ▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
- ▓■■■▓▓▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓
- ▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
- ▓■■■▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓▓▓
- ▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓▓■■■▓▓
- ▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
- ▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
- ▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓
- ▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
- ▓■▓▓■■■▓▓▓▓▓■■▓▓▓▓▓■■■▓▓▓
- ▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
- ▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
- ▓■■■▓▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓
- ▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
- ▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓▓■■■▓▓
- ▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
- ▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
- ▓■■■▓▓▓▓▓■■▓▓▓▓▓■■▓▓▓▓▓■■
- ▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
- ▓■▓■■■▓▓▓▓▓■■▓▓▓▓▓■■■▓▓▓▓
- ▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
- ▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
复制代码
|