中国开发网: 论坛: 程序员情感CBD: 贴子 884846
周星驰: 试着翻译了一下。
用的google translate :D


实验1:生命游戏

在实验室:星期三,2010年1月13日截止时间:星期二,2010年1月19日

概述

人生的游戏中,由约翰康威发明于1970年,是一个零玩家“游戏”之称的例子
作为细胞自动机。游戏由一个二维世界中的所有无限延伸
方向,分为“细胞。”每个细胞是不是“死”或“活”在给定的“一代。”该
比赛由一组规则,描述了细胞是如何进化一代又一代集。
这些规则计算在下一代作为国家职能的一个单元格的状态
在当前一代邻近细胞。在2 - D世界,一个细胞的邻国的8个细胞
垂直,水平,或对角相邻的单元格。 Conway的一套规则概述
为:

1。一个居住少于两个邻国活细胞死亡。

2。一个拥有三个以上住邻居活细胞也死亡。

3。带有两个或三个生命究竟住邻居的活细胞。

4。恰含三只活一个邻居死细胞活了。

在这个实验中,我们将实施康威的生命游戏,与未成年人限制,
我们的2 - D世界是有限的。对世界将超出边缘邻居们对细胞
假定死亡的边缘。你可以阅读Conway的生命游戏维基百科上的详情,
http://en.wikipedia.org/wiki/Conway's_Game_of_Life。

范例(所谓的“滑翔机”):

| | | | | | | | | | | | | |
| | | | * | | | | | | * | | | |
| | * | | * | | | - →| | | |*|*| |
| | |*|*| | | | | |*|*| | |
| | | | | | | | | | | | | |

图注:* =活着,=死

A部分:实施演进(在实验室)

在这部分,我们将着重于执行需要发展,从一代人的世界的规则
到下一个。为了帮助您,我们提供了多种功能,你应该使用访问和修改
当前和下一状态的世界。这些函数在头文件中所述lifegame.h
并实施了该文件lifegame.c。此外,我们还提供了一个描述你的骨骼
需要做这个lab1a.c的一部分。

在开始之前,您应该复制从更衣室(/ mit/6.087/Lab1 /)将所有这些文件
你的工作目录。编译的时候,你需要编译lab1a.c和lifegame.c在一起
生成一个可执行文件(让我们称之为lab1a.o)在它的所有代码(否则,你会
获得“未定义引用”错误)。这里的一个编译此代码示例命令行:


雅典娜%的gcc -克- O0壁lab1a.c lifegame.c邻lab1a.o

雅典娜%


首先审查lifegame.h和lab1a.c的内容。您需要在几行填写
main()和完成的功能下一代(),获取下一个状态(的x,y)和
序号邻居(的x,y)。有没有需要修改这部分的文件lifegame.h或lifegame.c。

(一)你如何初始化人生的游戏世界吗?写在适当的代码

main()函数。


(二)如何将您输出世界的最终状态一旦所有的演变都做了什么?写

在main()调用合适的函数。


(c)主()函数调用下一代()来处理每一代的进化

过程。您的代码应该在下一代每个细胞的状态根据规则

规定在本讲义概述。一旦所有单元格的状态已经确定

为了下一代,调用完成进化()将设置当前世界状态

下一代的下一代和复位状态。你的代码的使用应

获取下一个状态(的x,y)函数来计算每个单元格的下一个状态。


(四)写出的代码得到一个状态(的x,y),因此函数返回下一个状态(活着还是

死去的在指定的单元格)座标值的活邻居数(返回

由数量邻居(的x,y)函数)和生命规则的游戏。


(e)在功能数量邻居填写(的x,y),所以它返回现场邻居的数量(细胞

vertically,horizontally,或diagonally adjacent)为the specified cell。既然我们的世界是有限的,

这超出了世界的边缘相邻细胞可能已经死亡。


现在,你就大功告成了,编译和运行程序。随意改变NUM个世代的定义,
但是当你准备好被检查过,确保NUM个世代= 50,表明你的程序
输出到实验室助理。

检查关闭:

B部分:文件中的世界

在本实验的第一部分,世界的初始状态是硬编码到lifegame.c和
世界的最终状态是输出到控制台。在这部分,我们将修改代码,使
世界的初始状态都可以读出一个文件,并最终状态输出到文件中。

首先,让我们检查lifegame.c。请注意您需要的功能来实现:
从世界初始化文件(文件名)和世界上保存到文件(文件名)。


雅典娜是麻省理工学院的基于UNIX的计算环境。开放式课程不提供对它的访问。

(一)这些第一,世界初始化从文件(文件名),读取指定文件filename
并初始化从文件中指定的模式的世界。基本上,该文件是一个矩阵
字符,'*'来指定一个活细胞,和''(空格)指定一死细胞。第i个字符
第j行(零索引)代表单元格的初始状态位于(我的J)。如果该行
不包含足够的字符或文件不包含足够的线路,未指定
细胞被认为已经死亡。在函数填充读取文件并初始化的世界。不要
忘记重置所有国家的下一代死。使用适当的错误处理。

(二)其他功能,保存世界文件(文件名),保存了世界的最终状态
文件中的文件名相同的格式在初始化函数中使用:第i个字符
第j线(零索引)表示状态的细胞位于第(i,j)的世界。

(三)填写lab1b.c使用从第一个(lab1a.c)代码和修改到内容
调用这些函数。该加载文件的名称将被指定在第一个命令行
参数传递给可执行文件。如果没有指定文件,你应该默认为初始化
世界硬编码的默认“滑翔机”的格局。保存对文件的最终输出“world.txt。”

为了帮助您测试您的代码,我们提供了几个测试文件:glider.txt(应匹配
从第一个输出)和sship.txt(在sshipout.txt输出)。

要完成,写一个简介(1页最大。)实验室报告,说明你的经验完成这个实验中,
你面临哪些挑战以及如何处理它们,你从这个实验的经验教训。打开
在压缩文件中包含所有的代码(lab1a.c,lab1b.c,lifegame.h和lifegame.c),和你
实验报告,星上使用网上投稿系统。

恭喜你,你就大功告成了!

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录