中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 用批处理如何显示动态变换的九宫格?
« [1] [2] [3] »
作者:
标题: 用批处理如何显示动态变换的九宫格? 上一主题 | 下一主题
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『楼 主』:  用批处理如何显示动态变换的九宫格?

相信很多人都知道九宫格吧,



戴九履一,左三右七,二四为肩,六八为足,横竖斜三个数相加都得15
突发奇想,可不可以用批处理来显示九宫格呢?可不是简单的echo哦。
要列出九宫格局,每个格中一个数字,每隔几秒钟变换格中的数字,例如:
九宫           
4  9  2
3  5  7
8  1  6

变成
2  9  4
7  5  3
6  1  8

又变成
6  1  8
7  5  3
2  9  4

又变成
8  1  6
3  5  7
4  9  2

又变成
6  7  2
1  5  9
8  3  4

又变成
8  3  4
1  5  9
6  7  2

等等等等,要求列举所有可能,记住不是罗列,每次显示一种。
[ Last edited by ccwan on 2007-1-14 at 01:31 AM ]



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2007-1-14 01:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 2 楼』:  

2 4 6 8
1 3 7 9
5
河图格式是规定的

2007-1-14 01:40
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 3 楼』:  

并非讨论河图洛书,只要达到一楼的要求。



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2007-1-14 01:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 4 楼』:  

九宫八卦,很明显呀,只有八个结果

2007-1-14 02:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 5 楼』:  

这个难度大啊

2007-1-14 03:08
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
9527
银牌会员

努力做坏人


积分 1185
发帖 438
注册 2006-8-28
来自 北京
状态 离线
『第 6 楼』:  

这个难度确实大,不好找规律



我今后在论坛的目标就是做个超级坏人!!!
2007-1-14 03:50
查看资料  发短消息 网志  OICQ (329429)  编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 7 楼』:  

  演示代码如下:
@echo off
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
  写错了一个E文单词,更正一下下顺便美化了一下显示界面。

[ Last edited by namejm on 2007-1-13 at 05:38 PM ]

   此帖被 +77 点积分        点击查看详情   
评分人:【 lxmxn 分数: +10  时间:2007-1-14 05:27
评分人:【 vkill 分数: +5  时间:2007-1-14 05:28
评分人:【 redtek 分数: +15  时间:2007-1-14 07:19
评分人:【 pengfei 分数: +15  时间:2007-1-14 10:34
评分人:【 ccwan 分数: +15  时间:2007-1-14 21:01
评分人:【 chainliq 分数: +6  时间:2007-1-15 01:20
评分人:【 zhxy9804 分数: +2  时间:2007-2-24 22:22
评分人:【 htysm 分数: +8  时间:2007-4-23 04:32
评分人:【 huahua0919 分数: +1  时间:2007-12-5 10:36




尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-1-14 05:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 8 楼』:  

namejm   Nx

2007-1-14 05:27
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 9 楼』:  


  版主实在厉害啊,PF。


2007-1-14 05:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jy1260662
初级用户





积分 22
发帖 9
注册 2007-1-14
来自 珠海
状态 离线
『第 10 楼』:  



  Quote:
Originally posted by lxmxn at 2007-1-13 04:30 PM:

  版主实在厉害啊,PF。

同感!~~

2007-1-14 08:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pengfei
银牌会员




积分 1218
发帖 485
注册 2006-7-21
来自 湖南.娄底
状态 离线
『第 11 楼』:  

namejm兄的代码甚为精彩~~~!这里九宫格指的是魔方阵, 楼主给出的九宫格为三阶的魔方阵, 而变换时只是以纵横为中心轴将其两侧的阵列互换了一下, 它的行、列及对角都是相同数字相加。

大家还可以扩展一下, 把阶数扩大为5或7等.
所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。如下是三阶魔方阵:

8  1  6
3  5  7
4  9  2


打印魔方阵算法:

1、将1放在第一行中间一列;

2、从2开始直到n*n止各数依次按下列规则存放;每一个数存放的行比前一个数的行数减1,列数加1. 例如上面的三阶魔方阵,5在4的上一行后一列;

3、如果上一个数的行数为1,则下一个数的行数为n(指最下一行). 例如: 1在第1行,则2应放在最下一行,列数同样加1;

4、当上一个数的列数为n时,下一个数的列数应为1,行数减1. 例如: 2在第3行最后一列,则3应放在第2行第1列;

5、如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面. 例如: 按上面的规定,4应该放在第1行第2列,但该位置已被1占据,所以4就放在3的下面.由于6是第1行第3列(即最后一列),故7放在6下面.按此方法可以得到任何阶的魔方阵.
根据上面的算法用批处理实现打印魔方阵完全可以实现, 可能需要构建二维数组。

发个我以前写的打印魔方阵的小程序。

[ Last edited by pengfei on 2007-1-15 at 01:29 AM ]

   此帖被 +10 点积分       点击查看详情   
评分人:【 lxmxn 分数: +10  时间:2007-1-14 15:12


附件 1: sigil.rar (2007-1-14 13:35, 4.22 K, 下载附件所需积分 1 点 ,下载次数: 83)


业精于勤而荒于嬉,形成于思而毁于随。
2007-1-14 13:25
查看资料  发送邮件  发短消息 网志  OICQ (573381312)  编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 12 楼』:  


  To pengfei :

  兄写的小程序也精彩啊,而且把其中的算法也说的很明白,精彩。


2007-1-14 15:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 13 楼』:  

namejm的水平真不是盖的,佩服得很啊!



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2007-1-14 21:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chainliq
高级用户

学无尽止


积分 635
发帖 244
注册 2006-4-15
来自 广西贵港
状态 离线
『第 14 楼』:  

高手,KOOL````````



学无尽止
2007-1-15 01:20
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (86682419)  编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 15 楼』:  


@ECHO OFF
:TOP
SET /A R=%RANDOM%%%8
SET /A R=%R%+%R%%%2
IF %R% LEQ 0 GOTO TOP
IF 0x00%R% EQU 0x00%A% (
SET Ct=1) ELSE (
SET Ct=0)
SET A=%R%
SET /A E=5
SET /A At=15-%A%
SET /A I=%At%-%E%
SET /A It=15-%I%
SET /A X=15-%A%*2-%E%
IF %X% LEQ 0 SET /A X=~%X%+1
SET /A Y=20-%A%-%X%-%I%
IF %Ct% EQU 0 (SET /A C=%X%,G=%Y%) ELSE SET /A C=%Y%,G=%X%
SET /A B=%At%-%C%,D=%At%-%G%,F=%It%-%C%,H=%It%-%G%

ECHO %A% %B% %C%
ECHO %D% %E% %F%
ECHO %G% %H% %I%
pause>nul
cls&&goto top
我也试着写了一个,反推出来的

   此帖被 +15 点积分         点击查看详情   
评分人:【 pengfei 分数: +15  时间:2007-1-15 10:29


2007-1-15 08:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: