生命游戏测试数据

denghui0815 2008-01-08 09:30:14
DELL 笔记本 640m CPU: T2050 内存: 1G

原版文件 测试结果
--**-**---**--------*
---***----******---*-
----*-----**---------
------------*--------
-------------*-*-----
-------------*-------
---------------*-----
--------------**-----
---------------------
---------------------
---------------------
-----**--------------
-----**--------------
---------------------
---------------------
---------------------
---------------------
---------------------
---------------------
---------------------
---------------------
迭代100次 时间:7.191881秒
...全文
799 28 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
瓶盒 2008-01-24
  • 打赏
  • 举报
回复
是不是可以加一个循环检测?
zm0011 2008-01-24
  • 打赏
  • 举报
回复
24日还能改程序么?
zm0011 2008-01-23
  • 打赏
  • 举报
回复
我的机器要跑24秒
denghui0815 2008-01-23
  • 打赏
  • 举报
回复
再贴一个测试数据 Gosper Gun

5 1
5 2
6 1
6 2
3 35
3 36
4 35
4 36
3 13
3 14
4 12
4 16
5 11
5 17
6 11
6 15
6 17
6 18
7 11
7 17
8 12
8 16
9 13
9 14
1 25
2 25
2 23
3 21
3 22
4 21
4 22
5 21
5 22
6 25
6 23
7 25
0 0
100000
1 1 10 40
shgmail 2008-01-23
  • 打赏
  • 举报
回复
呵呵 恭喜楼主
wshong 2008-01-23
  • 打赏
  • 举报
回复
刚看题目,不是很明白,,,
godss 2008-01-15
  • 打赏
  • 举报
回复
应该是对的,那个数据直接跑5000次也只是500-600ms
OpenHero 2008-01-15
  • 打赏
  • 举报
回复
to:denghui0815 呵呵,现在看看,你是第一了:)我还考虑了大数据,哈哈~不过就用了2天的时间写,这次也没多少时间来做这生命游戏了:)
多向你请教啊,好像你上次的intel比赛也参加了?
俺还算是第一次参加比赛,呵呵
denghui0815 2008-01-15
  • 打赏
  • 举报
回复
当前的结果 DELL 笔记本 640m CPU: T2050 1.6G 双核 内存: 1G
GENERATION #100

--**-**---**--------*
---***----******---*-
----*-----**---------
------------*--------
-------------*-*-----
-------------*-------
---------------*-----
--------------**-----
---------------------
---------------------
---------------------
-----**--------------
-----**--------------
---------------------
---------------------
---------------------
---------------------
---------------------
---------------------
---------------------
---------------------
迭代100次 时间:0.635182秒

很遗憾 房间分配问题只拿了第2
不过对主办方的测试数据持保留意见
只用了500 1000 1000000个学生的三组数据
我认为应该使用 10000 1000000 10000000 个学生的数据更能符合最初题目的要求
jfguo 2008-01-15
  • 打赏
  • 举报
回复
virus1.dat 输入大概是: 0.102860
输出<0.001
zm0011 2008-01-15
  • 打赏
  • 举报
回复
我的机器配置是:酷睿E6600 2.8GHz(超频) 4GB内存(800MHz),
运行INTEL给出的VIRUS.DAT文件,
迭代一千次的时间是94毫秒,是不是时间算错了?
godss 2008-01-14
  • 打赏
  • 举报
回复
这个数据不好,全在1000*1000里面了测试不出来效果
godss 2008-01-14
  • 打赏
  • 举报
回复
楼上的机器如果只输入输出数据,不执行while循环是花多少时间,Xeon的机器到底多强劲啊?
jfguo 2008-01-14
  • 打赏
  • 举报
回复
当前的结果 (CPU: 双Intel(R) Xeon(R) CPU 5110 @ 1.60GHz, Memeory: 2G):

源码中的测试例:
GENERATION #100000

-----------
-----------
-----------
-----------
-----------
-----------
--*--------
--*--------
--*----**--
------*--*-
-------**--
Elapsed time: 0.990566 seconds

楼主的例子:
GENERATION #100

--**-**---**--------*
---***----******---*-
----*-----**---------
------------*--------
-------------*-*-----
-------------*-------
---------------*-----
--------------**-----
---------------------
---------------------
---------------------
-----**--------------
-----**--------------
---------------------
---------------------
---------------------
---------------------
---------------------
---------------------
---------------------
---------------------
Elapsed time: 0.415407 seconds


捺捺 2008-01-10
  • 打赏
  • 举报
回复
问题描述:Conway 的“生命游戏”是一款模拟生物体在矩形网格中生存和死亡的游戏。从理论上来说,网格应该是无边界的,但计算机模拟时可用内存是有限的,因此我们将限定网格“范围”的大小。每个网格元胞要么住着一个活着的生物体,要么空着。住有生物体的元胞是活的,而空元胞是死的。这款模拟游戏通过连续的时间段或连续的几代来描述生物体的生死过程。

元胞的状态可以根据以下规则一代一代地变化:

一个元胞有八个邻居,分别从水平、垂直和对角方向包围此元胞。
如果一个元胞是活的,但它没有活着的邻居或只有一个活着的邻居,那么到了下一代该元胞将会饿死。
如果一个元胞是活的,且有四个或更多活着的邻居,那么到了下一代该元胞将因过度拥挤而死亡。
如果一个元胞是活的,且有二个或三个活着的邻居,那么到了下一代该元胞将继续活下去。
如果一个元胞是死的,且正好有三个活着的邻居,那么到了下一代该元胞将复活。所有其他死元胞到了下一代仍将保持死亡状态。
所有出生和死亡都在同一时刻发生,因此快要死去的元胞可能会促使其相邻元胞出生,但无法通过缓解拥挤程度来阻止其他元胞的死亡,即将出生的元胞也不能杀死或保护上一代活着的元胞。

标准模拟算法是检查网格中每一代的所有元胞,计算每个元胞的邻居数量并据此确定该元胞是活还是死,或者根据当代的计算结果来推断它在下一代是否会出生。另一种算法是保存一些元胞列表,其中包含在下一代可能需要注意的元胞。它只重点计算那些可能会导致元胞状态发生改变的元胞。这种备用算法可通过随附的代码实现。这种算法将进行线程化。代码档案文件中还包括一个带有更详细代码描述的文本文件。

代码限制:必须使用主程序中的算法和用于遍历那些列表的四个例程。数据结构(元胞、网格和列表)的实现可根据需要进行修改。

关于输入文件的描述:在应用程序开始执行后,将输入文件的名称以命令行参数的形式赋予应用程序。该文件内将有许多包含成对整数的行,这些成对的整数代表这款模拟游戏开始时活着的元胞所在的行和列。标记 (0 0) 代表活元胞的坐标终端。标记行后跟着下面两行:第一行包含一个整数,它代表要模拟的代的数量;第二行包含两个行-列对(四个整数),它们代表在模拟完成后将打印到标准输出设备的网格区域。(代码档案文件随附一个示范输入数据文件 virus.dat。)

评分标准:“执行情况和所用时间得分”将根据执行速度和输出准确度给出。

详情请点击:大赛官方网站

捺捺 2008-01-10
  • 打赏
  • 举报
回复
问题描述:Conway 的“生命游戏”是一款模拟生物体在矩形网格中生存和死亡的游戏。从理论上来说,网格应该是无边界的,但计算机模拟时可用内存是有限的,因此我们将限定网格“范围”的大小。每个网格元胞要么住着一个活着的生物体,要么空着。住有生物体的元胞是活的,而空元胞是死的。这款模拟游戏通过连续的时间段或连续的几代来描述生物体的生死过程。

元胞的状态可以根据以下规则一代一代地变化:

一个元胞有八个邻居,分别从水平、垂直和对角方向包围此元胞。
如果一个元胞是活的,但它没有活着的邻居或只有一个活着的邻居,那么到了下一代该元胞将会饿死。
如果一个元胞是活的,且有四个或更多活着的邻居,那么到了下一代该元胞将因过度拥挤而死亡。
如果一个元胞是活的,且有二个或三个活着的邻居,那么到了下一代该元胞将继续活下去。
如果一个元胞是死的,且正好有三个活着的邻居,那么到了下一代该元胞将复活。所有其他死元胞到了下一代仍将保持死亡状态。
所有出生和死亡都在同一时刻发生,因此快要死去的元胞可能会促使其相邻元胞出生,但无法通过缓解拥挤程度来阻止其他元胞的死亡,即将出生的元胞也不能杀死或保护上一代活着的元胞。

标准模拟算法是检查网格中每一代的所有元胞,计算每个元胞的邻居数量并据此确定该元胞是活还是死,或者根据当代的计算结果来推断它在下一代是否会出生。另一种算法是保存一些元胞列表,其中包含在下一代可能需要注意的元胞。它只重点计算那些可能会导致元胞状态发生改变的元胞。这种备用算法可通过随附的代码实现。这种算法将进行线程化。代码档案文件中还包括一个带有更详细代码描述的文本文件。

代码限制:必须使用主程序中的算法和用于遍历那些列表的四个例程。数据结构(元胞、网格和列表)的实现可根据需要进行修改。

关于输入文件的描述:在应用程序开始执行后,将输入文件的名称以命令行参数的形式赋予应用程序。该文件内将有许多包含成对整数的行,这些成对的整数代表这款模拟游戏开始时活着的元胞所在的行和列。标记 (0 0) 代表活元胞的坐标终端。标记行后跟着下面两行:第一行包含一个整数,它代表要模拟的代的数量;第二行包含两个行-列对(四个整数),它们代表在模拟完成后将打印到标准输出设备的网格区域。(代码档案文件随附一个示范输入数据文件 virus.dat。)

评分标准:“执行情况和所用时间得分”将根据执行速度和输出准确度给出。

详情请点击:大赛官方网站

denghui0815 2008-01-10
  • 打赏
  • 举报
回复
谢谢大家支持 我已经完成不加锁的算法了 竞赛结束后会公开给大家
捺捺 2008-01-10
  • 打赏
  • 举报
回复
楼主,强烈支持你!!
denghui0815 2008-01-09
  • 打赏
  • 举报
回复
是Intel比赛的题目

目前采取了并行优化 将原有的List改成了Array 避免了频繁的new 和 delete
denghui0815 2008-01-09
  • 打赏
  • 举报
回复
我机器上原版的 使用原来的测试数据
GENERATION #100000

-----------
-----------
-----------
-----------
-----------
-----------
--*--------
--*--------
--*----**--
------*--*-
-------**--
迭代100000次 时间:3.706578秒
加载更多回复(8)

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧