联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-23:00
  • 微信:codinghelp

您当前位置:首页 >> OS作业OS作业

日期:2018-08-12 06:41

说明

* 本作业限时3天完成

* 作业完成后必须附上 Readme 纯文本文档(推荐使用 markdown 排版)

* Readme文档中必须描述如何运行单元测试或主程序来证明作业的正确性(至少针对测试用例输

入能够得到对应输出)

* 作业的输入和输出必须和题目的测试用例输出严格一致

* 可以选用擅长的语言完成,例如C、C++、Java、C#、Javascript、Python、Scala等

*请注意作业的保密性,不要将作业放在Git等渠道上面

校招题目

用计算机生成迷宫是一个很有趣的任务。我们可以用 道路网格(Road Grid) 来表示迷宫的道路,那么 3 x 3

的 道路网格(图-1 左)可以对应一个 7 x 7 的 渲染网格(Render Grid) ——图-1 右 的方式(迷宫的墙是灰

色的,道路是白色的):

图-1 3 x 3 的 道路网格 及其 渲染网格

如果我们将迷宫 道路网格 两个相邻的 cell 连通,则可以打通道路。如 图-2 所示:

图-2 3 x 3 连通迷宫的 道路网格 和 渲染网格

连通 道路网格 有如下的约束条件:

● 每一个 cell 只能够直接与相邻正南、正北、正东、正西的 cell 连通。不能够和其他的 cell 连

通。

● 两个 cell 之间的连通一定是双向的。即 cell(0,0) 和 cell(1,0) 连通等价于 cell(1,0) 和

cell(0,0) 的连通。

要求1:将迷宫渲染为字符串

现在我们希望你书写程序,将给定迷宫的 道路网格,渲染为字符串输出。例如,其使用方式如下(伪代码

,仅做演示,实际实现时请应用实际语言的编程风格)

Maze maze = MazeFactory.Create(command);

String mazeText = maze.Render();

其中 command 是一个字符串。它的定义如下:

● 第一行是迷宫 道路网格 的尺寸。例如 3 x 3 的迷宫为 3 3,而 5 x 4 的迷宫为 5 4(5 行 4 列)。

● 第二行是迷宫 道路网格 的连通性定义。如果 cell(0,1) 和 cell(0,2) 是连通的,则表示为:

0,1 0,2,多个连通以分号 ; 隔开。

例如,如果给定输入:

3 3

0,1 0,2;0,0 1,0;0,1 1,1;0,2 1,2;1,0 1,1;1,1 1,2;1,1 2,1;1,2 2,2;2,0 2,1

则输出字符串为(如果当前 渲染网格 为墙壁,则输出 [W] 如果为道路则输出 [R]):

[W] [W] [W] [W] [W] [W] [W]

[W] [R] [W] [R] [R] [R] [W]

[W] [R] [W] [R] [W] [R] [W]

[W] [R] [R] [R] [R] [R] [W]

[W] [W] [W] [R] [W] [R] [W]

[W] [R] [R] [R] [W] [R] [W]

[W] [W] [W] [W] [W] [W] [W]

要求2:检查输入的有效性

在处理输入的时候需要检查输入的有效性。需要检查的有效性包括如下的几个方面:

● 无效的数字:输入的字符串无法正确的转换为数字。此时,该函数的输出为字符串 ”Invalid

number format.”

● 数字超出预定范围:数字超出了允许的范围,例如为负数等。此时,该函数的输出为字符串

”Number out of range.”

● 格式错误:输入命令的格式不符合约定。此时,该函数的输出为字符串 ”Incorrect command

format.”

● 连通性错误:如果两个网格无法连通,则属于这种错误。此时,该函数的输出为字符串 ”Maze

format error.”

当多个问题同时出现时,报告其中一个错误即可。


版权所有:留学生编程辅导网 2020 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp