无忧启动论坛
标题:
批处理显示九宫格
[打印本页]
作者:
namejm
时间:
2007-1-13 17:39
标题:
批处理显示九宫格
发一个小玩意出来耍耍:
@echo off
:: 九宫格的含义:
:: 戴九履一,左三右七,二四为肩,六八为足。
:: 换而言之,就是把1~9排成三行三列,横竖斜三个数相加都等于15
:: 首发于:http://www.cn-dos.net/forum/viewthread.php?tid=26647
title 九宫格
mode con cols=40 lines=20
set n1=0
setlocal enabledelayedexpansion
:begin
cls
set n5=5
set str= 1 2 3 4 6 7 8 9
set /a n1+=1
if %n1% gtr 9 exit
call :intercept %n1%
set /a n9=15-%n1%-%n5%
call :intercept %n9%
for %%i in (%str%) do (
set flag=
set n2=%%i
set str_tmp=%str%
call :intercept !n2!
set /a n8=15-!n2!-!n5!
set /a n3=15-!n1!-!n2!
set /a n7=15-!n8!-!n9!
set /a n4=15-!n1!-!n7!
set /a n6=15-!n3!-!n9!
for %%j in (!n3! !n4! !n6! !n7! !n8!) do call :intercept %%j
if not "!str!"=="" set flag=1
set /a sum1=!n3!+!n5!+!n7!
set /a sum2=!n4!+!n5!+!n6!
if !sum1! equ 15 if !sum1! equ !sum2! if not defined flag call :result
set str=!str_tmp!
)
goto begin
:intercept
set str=!str: %1=!
goto :eof
:result
cls
echo.
echo.
echo.
echo ┌──┬──┬──┐
echo │ %n1% │ %n2% │ %n3% │
echo ├──┼──┼──┤
echo │ %n4% │ %n5% │ %n6% │
echo ├──┼──┼──┤
echo │ %n7% │ %n8% │ %n9% │
echo └──┴──┴──┘
echo.
echo ________________________________________
echo.
echo 按任意键显示下一个
pause>nul
goto :eof
复制代码
作者:
spiegboy
时间:
2007-1-14 11:30
能给个详细的解释么,谢谢
作者:
namejm
时间:
2007-1-14 12:00
九宫格代码思路如下:
既然要求横竖斜三个数字相加都要等于15,则中心位置上的数字只能是3个数字的算术平均值5;然后按照1~9的顺序依次给第1格的变量赋值,则第9格的数值将随着第一格的数值而变化,换而言之,只要第1格的数值确定了,则第9格的数值也就确定了;第1、5、9格的数值确定之后,再把剩余数值中的任意一个赋给第2格的变量,则第8格的数值也就确定了;第1、2、5、8、9格的数值确定之后,按照横竖斜的和都为15的规律,则所有格子里的数值也就确定了,剩余的工作就是检测每个格子的数值是否重复、横竖斜的和是否为15。当所有的条件都符合之后,就显示结果,等待下一次变化。
欢迎光临 无忧启动论坛 (http://bbs.wuyou.net./)
Powered by Discuz! X3.3