[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
=.=  仔细一想,经过验证,果然一行一行的计算可行,依靠4次移位来计算细胞和,循环25次得到和,再循环25次替换得到新细胞图。
不知道是不是terse一样的算法,等写出代码试试效率。

呃,不支持近30位的数值计算=。=,难道要切成4段算?

[ 本帖最后由 caruko 于 2011-2-23 16:52 编辑 ]

TOP

换了一种算法,破电脑跑了1分钟,换台双核的应该在40多秒,小有进步=。=

循环代码行数40行 #.#,算法不复杂,只可惜批处理不支持26个字符长度的数值计算,也还没找到好的大数计算方法,目前是把25位数分成4段处理的,导致多出大量的字符数值转换跟计算。

如果支持大数计算,可以节省1/3的时间,如果支持BIT(OR),还能节省1/3时间。

我再优化优化,还有某些地方得出的数值可重用,应该可以节省10多秒。 现在才迫切希望换成64位机来运行它 =.=。

[ 本帖最后由 caruko 于 2011-2-23 22:54 编辑 ]

TOP

回复 47楼 的帖子

somebody总是在预想设备好的情况,
此处当我没说过   

[ 本帖最后由 523066680 于 2011-2-24 08:50 编辑 ]

TOP

优化了代码,运行时间大幅提升,电脑好点,或许可以进入20秒内了。如果能够直接支持26位长度的大数加法,估计只要15秒不到。
下面是运行结果。

第99代
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓■▓▓▓■▓
▓▓▓▓▓▓■■▓▓▓▓▓▓▓▓▓▓▓▓▓▓■▓■
▓▓▓▓▓▓■■■▓▓▓▓▓▓▓▓▓■▓▓▓▓▓■
■▓▓▓▓▓▓■▓▓▓▓▓▓▓▓▓■▓■■▓▓■■
▓■■▓■■■▓▓▓▓■■▓▓▓▓▓■■■▓▓▓▓
▓▓■■■■▓▓▓▓▓■■▓▓▓▓▓▓■▓▓▓▓▓
▓▓▓■▓▓▓▓▓▓■■■■■▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓■■▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓■■▓■▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓■■▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓■▓■▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓■▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓■■▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓■■▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓■▓▓▓▓▓
第100代
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓■▓
▓▓▓▓▓▓■▓■▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓■
▓▓▓▓▓▓▓▓■▓▓▓▓▓▓▓▓▓■■▓▓▓▓▓
■■▓▓▓▓▓▓■▓▓▓▓▓▓▓▓■▓▓■▓▓■■
■■■▓▓▓■▓▓▓▓■■▓▓▓▓▓▓▓▓▓▓▓■
▓■▓▓▓▓■▓▓▓▓▓▓▓▓▓▓▓■■■▓▓▓▓
▓▓■■▓▓▓▓▓▓■▓▓▓■▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓■▓▓▓▓■▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓■▓▓■▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓■▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓■▓■▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓■▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓■■▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓■■▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
0:05:11.00--> 0:05:36.46


[ 本帖最后由 caruko 于 2011-2-24 00:10 编辑 ]

TOP

我的第一个算法是最普遍的,前面那个贴出C代码的算法=。=
只不过我用了大量诸如
判断超标
set /a "x=^!(%%x-1)*25+(%%x-1)" ,当X-1等于0,就让X=25,否着不变。
set /a "x=^!(%%x+1-26)+^!^!(%%x+1-26)*(%%x+1)" 当x+1等于26,就让X=1,否着不变。

重新赋值
set /a "new=^!(sum-3) | ^!(sum-2) * !old!"  ::sum=3,new=1; sum=2,new=old; else new=0
但最后发现,|  之前的可以提速,| 之后的计算,没有比if判断快。

第二个算法是猜想terse的效率,估计他是一行一行处理的,而不是每个坐标都处理。效率提升几十倍只能这么做。

TOP

参赛代码

突然发现结果竟然是错误的。
奇怪,修改了下。这楼删了。
上传的后面跟贴。

[ 本帖最后由 caruko 于 2011-3-8 20:58 编辑 ]

TOP

大概要25秒的样子(CPU:T5800 双核 2G,内存 1G ,Win7旗舰版)
第一代:
▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓▓■■■▓
▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
▓■■■▓▓▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓
▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
▓■■■▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓▓▓
▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓▓■■■▓▓
▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓
▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
▓■▓▓■■■▓▓▓▓▓■■▓▓▓▓▓■■■▓▓▓
▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
▓■■■▓▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓
▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓▓■■■▓▓
▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
▓■■■▓▓▓▓▓■■▓▓▓▓▓■■▓▓▓▓▓■■
▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
▓■▓■■■▓▓▓▓▓■■▓▓▓▓▓■■■▓▓▓▓
▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓
▓■■■▓▓▓▓▓■■■▓▓▓▓▓■■■▓▓▓▓▓

11:20:18.96
第100代:
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓■▓
▓▓▓▓▓▓■▓■▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓■
▓▓▓▓▓▓▓▓■▓▓▓▓▓▓▓▓▓■■▓▓▓▓▓
■■▓▓▓▓▓▓■▓▓▓▓▓▓▓▓■▓▓■▓▓■■
■■■▓▓▓■▓▓▓▓■■▓▓▓▓▓▓▓▓▓▓▓■
▓■▓▓▓▓■▓▓▓▓▓▓▓▓▓▓▓■■■▓▓▓▓
▓▓■■▓▓▓▓▓▓■▓▓▓■▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓■▓▓▓▓■▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓■▓▓■▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓■▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓■▓■▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓■▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓■■▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓■■▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

11:20:43.68

TOP

回复 50楼 的帖子

算法应该差不多吧  这样应该简单点吧  set/a i=^!^!(%%i%%25)*%%i+1
1

评分人数

    • netbenton: 批处理编程竞赛 第2011-001期 第二名PB + 20

TOP

看来我连鼓励奖都拿不到了,杯具的三分钟,心都凉了...

TOP

设想过转换成二进制进行位运算,也想过从格雷码获取灵感,甚至还想过穷举3个四位数(后三位不是0就是1)相加的所有可能,最终都没用上,还是用了最笨的办法...
数学和编程基础差,实在不擅长这种数学游戏式的批处理编程,期盼比赛结束时看各位高手的代码,学习学习,借鉴借鉴。

TOP

终于发现100张图只要20秒的秘密了,简直让人无语至极...

TOP

我之前那个算2分多钟的代码,跟现在16秒的代码,实际算法差不了太多,计算量最多差个2-3倍,没有增加到十倍以上的程度。
但是现在的效率我自己也没想到,只能说,效率跟批处理的特性有关。
换一个语言来写,绝对没有这么大差距,甚至可能在批处理中算的慢的会更快。

TOP

回复 43楼 的帖子

配置相近,不过我不是xp。改到现在,也在18秒上下徘徊,看来再改进下算法有希望争个第二第三

TOP

上传作品提示

从今天起可以上传参赛作品了。
3月10日 23:59:59 以后上传的作品无效,以贴子最后的修改时间为准。

请再大家要看清楚一楼的参赛代码实现的标准

参赛回贴标题统一为:“参赛贴”
请参赛的朋友以附件形式上传,并设置阅读权限为240

3月11日~3月12日 会将所有参赛代码整理到顶楼,同时给出统一环境下的运行时间,并公示两天,

3月15日前,公布获奖名单。并兑现相应奖励。

[ 本帖最后由 netbenton 于 2011-3-7 07:47 编辑 ]

TOP

哦哈哈, 速度最慢的人来啦,应该不会有人走同一条路线的。
这条路线贴矩阵倒是很方便。
时间50秒以上 ,  所以就没什么必要限制了。

TOP

返回列表