标题: 用批处理如何显示动态变换的九宫格?
[打印本页]
作者: ccwan
时间: 2007-1-14 01:29
标题: 用批处理如何显示动态变换的九宫格?
相信很多人都知道九宫格吧,
戴九履一,左三右七,二四为肩,六八为足,横竖斜三个数相加都得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 ]
作者: everest79
时间: 2007-1-14 01:40
2 4 6 8
1 3 7 9
5
河图格式是规定的
作者: ccwan
时间: 2007-1-14 01:43
并非讨论河图洛书,只要达到一楼的要求。
作者: everest79
时间: 2007-1-14 02:14
九宫八卦,很明显呀,只有八个结果
作者: vkill
时间: 2007-1-14 03:08
这个难度大啊
作者: 9527
时间: 2007-1-14 03:50
这个难度确实大,不好找规律
作者: namejm
时间: 2007-1-14 05:23
演示代码如下:
@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 ]
作者: vkill
时间: 2007-1-14 05:27
namejm Nx
作者: lxmxn
时间: 2007-1-14 05:30
版主实在厉害啊,PF。
作者: jy1260662
时间: 2007-1-14 08:56
Quote: |
Originally posted by lxmxn at 2007-1-13 04:30 PM:
版主实在厉害啊,PF。 |
|
同感!~~
作者: pengfei
时间: 2007-1-14 13:25
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 ]
附件
1: sigil.rar (2007-1-14 13:35, 4.22 K, 下载附件所需积分 1点
,下载次数: 83)
作者: lxmxn
时间: 2007-1-14 15:14
To pengfei :
兄写的小程序也精彩啊,而且把其中的算法也说的很明白,精彩。
作者: ccwan
时间: 2007-1-14 21:02
namejm的水平真不是盖的,佩服得很啊!
作者: chainliq
时间: 2007-1-15 01:20
高手,KOOL````````
作者: everest79
时间: 2007-1-15 08:12
@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
我也试着写了一个,反推出来的
作者: liuxin31554155
时间: 2007-1-19 05:38
貌似有更简单的推理方法.
作者: namejm
时间: 2007-1-19 06:46
Quote: |
Originally posted by liuxin31554155 at 2007-1-18 16:38:
貌似有更简单的推理方法. |
|
对这个感兴趣,发出来分享一下如何?
作者: honyfox
时间: 2007-1-19 08:04
真是太牛了,太专业了,我是业余爱好,无限崇拜ing。。。
作者: 6622186
时间: 2007-2-23 04:34
真有意思
作者: anqing
时间: 2007-2-23 06:01
真牛呀
p用到这部份上了。
作者: slore
时间: 2007-2-23 08:20
数独不知道谁去试下……
作者: bbq123bbq
时间: 2007-2-23 17:30
太厉害拉.......收藏慢慢消化
作者: tyh
时间: 2007-4-22 00:21
呵呵.这里算是牛人多.
作者: menglongfc
时间: 2007-4-23 02:01
都是高手啊,强的!!
作者: menglongfc
时间: 2007-4-23 02:29
下了,看不明白,学习了
作者: htysm
时间: 2007-4-23 04:33
偶是赶不上了。连看都看不懂呀。
作者: w1314ich
时间: 2007-4-23 05:48
强烈佩服~~
作者: rad9700
时间: 2007-4-24 08:13
厉害啊!!!!
作者: foxmt
时间: 2007-4-27 06:08
0x00%R% EQU 0x00%A%
這個是什麼意思呀
作者: beeny
时间: 2007-4-27 12:19
光%%%%号就能把人能看晕!
作者: flandy
时间: 2007-4-29 05:55
不错,支持
作者: 121360309
时间: 2007-12-5 01:58
kan 看晕了啊 还是不懂 太强了