中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-09 18:01
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决][难题]模拟输出数字九宫格 查看 3,925 回复 35
31 发表于 2008-08-17 21:46 ·  中国 广东 广州 天河区 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
哈哈,坚持把这个思路完善,横竖乱序后,再随机调换数字:

@echo off
title made by cn-dos and bathome - 523066680
setlocal enabledelayedexpansion
:start
set h1=123456789
set h2=234567891
set h3=345678912
set h4=456789123
set h5=567891234
set h6=678912345
set h7=789123456
set h8=891234567
set h9=912345678

for /l %%a in (0,1,9) do (
set Ex%%a=
set Ex2%%a=
set hang%%a=
)

set /a a=0,b=0,c=0
::a ---把列打乱
:a
set /a a+=1
:a-1
set n=%random:~-1%
if %n% equ 9 set n=8
if not defined Ex%n% (
for /l %%a in (1,1,9) do (call,set hang%%a=!hang%%a! %%h%%a:~!n!,1%%)
) else (goto :a-1)
set Ex%n%=ex
if %a% lss 9 goto :a
::b ---把行打乱
:b
set /a b+=1
:b-1
set n=%random:~-1%
if %n% equ 0 set n=9
if not defined Ex2%n% (set h%b%=!hang%n%!) else (goto :b-1)
set Ex2%n%=ex
if %b% lss 9 goto :b
::c ---随机调换数字
:c
set /a c+=1
:c-1
set n1=!random:~-1!
set n2=!random:~-1!
if %n1% equ %n2% goto :c-1
if %n1% equ 0 set n1=1
if %n2% equ 0 set n2=9
for /l %%a in (1,1,9) do (
set h%%a=!h%%a:%n1%=n!
set h%%a=!h%%a:%n2%=%n1%!
set h%%a=!h%%a:n=%n2%!
)
if %c% lss 8 goto :c
for /l %%a in (1,1,9) do echo !h%%a!
pause
goto :start


[ Last edited by 523066680 on 2008-8-18 at 07:42 AM ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
moniuming +8 2008-08-17 22:50
32 31楼,好样的!!! 发表于 2008-08-17 23:18 ·  中国 广东 广州 电信
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
哈哈,看来要用31楼的代码来做数字九宫格游戏的主体了...
33 发表于 2008-08-18 02:18 ·  中国 广东 广州 海珠区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
19年会员
UID 82819
性别 男
状态 离线
这个?有解决么?

没有发现啊 ?

5 6 4 7 3 9 8 2 1
1 4 2 9 5 8 7 6 3
4 9 8 5 6 1 3 7 2
3 2 6 8 1 7 9 4 5
2 8 7 1 4 3 5 9 6
6 7 9 3 2 5 1 8 4
7 3 5 2 8 6 4 1 9
9 5 1 6 7 4 2 3 8
8 1 3 4 9 2 6 5 7

根本没有解决哦。。

看到了蓝色的字没?不符合条件的。

[ Last edited by flyinspace on 2008-8-18 at 02:19 AM ]
知,不觉多。不知,乃求知
34 发表于 2008-08-18 06:24 ·  中国 广东 广州 天河区 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
真麻烦呐……对于这个我还是不了解……不干了……

额 好像这种情况是挺多的,看看能不能改改咯……

现在已经将31楼调换数字次数改成8次.试试
多少还是出现了多处类似的情况……&麻烦呐
5 6 8 9 3 7 2 1 4
6 1 3 4 5 2 8 9 7
3 5 2 1 8 4 7 6 9
4 7 1 8 9 5 6 2 3
7 2 9 3 4 6 1 8 5
2 8 4 5 7 1 9 3 6
8 3 7 6 2 9 4 5 1
9 4 6 2 1 3 5 7 8
1 9 5 7 6 8 3 4 2



刚刚观察,moun的生成结果,偶然的也会出现类似情况啊
5 7 2 3 9 6 4 8 1
2 9 1 6 5 3 7 4 8
7 6 8 5 4 1 2 3 9
1 4 6 8 7 9 5 2 3
6 3 4 2 8 7 1 9 5
8 5 9 1 6 4 3 7 2
3 8 7 9 2 5 6 1 4
4 2 3 7 1 8 9 5 6
9 1 5 4 3 2 8 6 7


细心看了n个代码的结果,应该说 这个情况不在少数。
我把31楼关键部分改了下。稍微减少了相邻相同的现象
(才发现原来的时候 好多地方都是相邻相等啊)

[ Last edited by 523066680 on 2008-8-18 at 08:23 AM ]
35 发表于 2008-08-18 11:54 ·  中国 广东 广州 广东金万邦科技投资有限公司(新一代数据中心)IDC机房(BGP)
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
Originally posted by flyinspace at 2008-8-18 02:18:
这个?有解决么?

没有发现啊 ?

5 6 4 7 3 9 8 2 1
1 4 2 9 5 8 7 6 3
4
个人认为要排除这种情况是非常困难的,13楼的游戏软件也会出现这种情况呀...
36 如何用! 发表于 2008-09-08 16:51 ·  中国 福建 福州 电信
新手上路
积分 2
发帖 1
注册 2008-09-08 16:26
17年会员
UID 125128
性别 男
状态 离线
不知道如何用?
论坛跳转: