中国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] »
作者:
标题: [已解决][难题]模拟输出数字九宫格 上一主题 | 下一主题
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『楼 主』:  [已解决][难题]模拟输出数字九宫格

模拟输出数字九宫格游戏(每行和每列的数字都不重复,而且是乱序),弄了三天都没弄出来,希望各位帮帮忙,就当是一个练习吧.
示例中只有1~6,希望能给出1~9的(能随机将每行中的几个数字变成空格就更好了).谢谢!!!

  Quote:

1 2 5 3 6 4
5 4 3 1 2 6
3 5 2 6 4 1
2 3 6 4 1 5
6 1 4 2 5 3
4 6 1 5 3 2

由于昨天没把问题描述清楚,现在再重新梳理一下,就是乱序生成9*9的数列,每行和每列都必须包含1~9这9个数字,如下:
8 7 5 2 9 1 6 4 3
2 9 6 4 3 8 5 1 7
3 4 1 7 6 5 2 8 9
6 5 9 1 7 3 4 2 8
4 2 7 9 8 6 1 3 5
1 3 8 6 5 2 7 9 4
9 8 4 5 1 7 3 6 2
7 1 2 3 4 9 8 5 6
5 6 3 8 2 4 9 7 1

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

4 6 9 1 3 2 8 5 7
5 1 3 7 4 8 2 9 6
6 2 8 5 7 9 1 4 3
9 4 5 3 2 7 6 1 8
8 7 6 2 1 5 4 3 9
1 3 2 4 8 6 9 7 5
3 8 7 6 9 4 5 2 1
7 5 4 9 6 1 3 8 2
2 9 1 8 5 3 7 6 4
2楼和5楼的是有规律的,不符合要求.

比较好的代码有:
22楼本人的代码(效率较低)
27楼terse的代码(效率较低)
29楼52306668的代码(效率较高,有规律)
31楼52306668的代码(效率较高,感觉最满意)


[ Last edited by moniuming on 2008-8-18 at 12:02 PM ]

2008-8-9 15:50
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 2 楼』:  

1 2 3 4 5 6
2 3 4 5 6 1
3 4 5 6 1 2
4 5 6 1 2 3
5 6 1 2 3 4
6 1 2 3 4 5

这样可以吗?



心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-8-9 16:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 3 楼』:  

能随机将每行中的几个数字变成空格就更好了
这是什么意思。。。
ps:要达到楼主其他的要求不难。。



批处理之家新域名:www.bathome.net
2008-8-9 16:55
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 4 楼』:  

每次都生成不一样的,要随机生成,如下(把1做成2的效果):
1:

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

2:

  Quote:
3 _ _ _ 7 9 _ 6 2
2 _ _ _ 1 _ 8 9 7
_ 1 7 8 _ _ 4 5 3
_ 4 _ _ 3 7 _ _ _
_ 2 _ 5 _ 1 7 3 4
7 _ 3 _ 8 _ _ 2 1
4 _ 9 _ 2 6 3 _ _
6 7 _ _ 5 _ 9 _ 8
_ _ _ 9 4 8 2 7 _

[ Last edited by moniuming on 2008-8-10 at 09:29 AM ]

2008-8-9 17:04
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 5 楼』:  


@echo off&setlocal enabledelayedexpansion
set "code= 9 1 2 3 4 5 6 7 8"
for /l %%i in (1,1,9) do (
    set "a=!code:~1,1!"
    set "code=!code:~2! !a!"
    echo !code:~1!
)
pause>nul
ps:这是不是每行每列都不一样啊

[ Last edited by bat-zw on 2008-8-9 at 05:09 PM ]



批处理之家新域名:www.bathome.net
2008-8-9 17:08
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 6 楼』:  

随机乱序啊。每个数字都用到了,如果用不到那才难。



心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-8-9 17:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 7 楼』:  

数独???



S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2008-8-9 17:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by slore at 2008-8-9 17:34:
数独???

是啊,因为数独是日本人的叫法,我非常讨厌日本人,所以就用中国人的叫法啦

2008-8-9 17:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 9 楼』:  这样就行了

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

2008-8-9 17:48
查看资料  发短消息 网志   编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 10 楼』:  

要求已在顶楼更新
继续期待中......

2008-8-10 09:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 11 楼』:  

你那几个样本是怎样生成的?~^_^



心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-8-10 12:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 12 楼』:  

理论上来说是可以的。但成功率。。。。。9*9没成功过。
@echo off&setlocal enabledelayedexpansion
for /l %%a in (0 1 6) do set var%%a=123456
set/a s=6,z=s
:loop
:: set m=%random%
set/a n+=1,m=%random%%%%s%
set a=!var%n%:~%m%,1!
if defined #%a% set/a n-=1&goto loop
set #%a%=abc
set var%n%=!var%n%:%a%=!
set "str=%str%%a% "
if %n% neq 6 goto loop
echo %str%
for /f "delims==" %%a in ('set #') do set "%%a="
set "str="
set/a s-=1
set/a n=0
if %s% neq 0 goto loop
pause




心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-8-10 12:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by pusofalse at 2008-8-10 12:36:
你那几个样本是怎样生成的?~^_^

哈哈,有一个游戏软件(exel格式)

12楼的代码在输出2行后就没了,但内存还是100%,

附件 1: 九宫格数字游戏.rar (2008-8-10 13:16, 45.53 K, 下载附件所需积分 1 点 ,下载次数: 5)
2008-8-10 13:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 14 楼』:  

我测试输出5个,成功率就已经非常低了,就更别说5个以上了。
就连3个时也有出错。 正在研究新方案。这类的题好复杂啊,看来我昨天太简单化了。



心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-8-10 13:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 15 楼』:  

呵呵这样的题目要有算法才好做。
要不好麻烦的。我情愿用c去写出来。还会简单一些。



知,不觉多。不知,乃求知
2008-8-10 14:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: