5.3 使用数据结构对真实世界建模

甚至在因特网之前,人们也有办法与世界另一边的某人下一盘国际象棋。每个
棋手在自己家里放好一个棋盘,然后轮流向对方寄出明信片,描述每一着棋。要做到这一点,棋手需要一种方法,无二义地描述棋盘的状态,以及他们的着法。
在“代数记谱法”中,棋盘空间由一个数字和字母坐标确定,如图 5-1 所示。
5.3 使用数据结构对真实世界建模_第1张图片

 棋子用字母表示:K 表示王,Q 表示后,R 表示车,B 表示象,N 表示马。描述一次移动,用棋子的字母和它的目的地坐标。一对这样的移动表示一个回合(白方先下),例如,棋谱 2. Nf3 Nc6 
表明在棋局的第二回合,白方将马移动到 f3,黑方将马移动到c6。
代数记谱法还有更多内容,但要点是你可以用它无二义地描述象棋游戏,不需要站在棋盘前。你的对手甚至可以在世界的另一边!实际上,如果你的记忆力很好,甚至不需要物理的棋具:只需要阅读寄来的棋子移动,更新心里想
的棋盘。
计算机有很好的记忆力。现在计算机上的程序,很容易存储几百万个像'2.  Nf3 
Nc6'这样的字符串。这就是为什么计算机不用物理棋盘就能下象棋。它们用数据建模来表示棋盘,你可以编写代码来使用这个模型。
这里就可以用到列表和字典。可以用它们对真实世界建模,例如棋盘。作为第一个例子,我们将使用比国际象棋简单一点的游戏:井字棋。
 

 

 

你可能感兴趣的:(数据结构)