ThoughtWorks2019 提前批大作业附代码

说明
* 本作业限时3天完成
* 作业完成后必须附上 Readme 纯文本文档(推荐使用 markdown 排版)
* Readme文档中必须描述如何运行单元测试或主程序来证明作业的正确性(至少针对测试用例输
入能够得到对应输出)
* 作业的输入和输出必须和题目的测试用例输出严格一致
* 可以选用擅长的语言完成,例如C、C++、Java、C#、Javascript、Python、Scala等
*请注意作业的保密性,不要将作业放在Git等渠道上面
校招题目
用计算机生成迷宫是一个很有趣的任务。我们可以用 ​道路网格(Road Grid) ​ ​来表示迷宫的道路,那么 3 x 3
的 ​道路网格 ​( ​图-1 左 ​)可以对应一个 7 x 7 的 ​渲染网格(Render Grid) ​ —— ​图-1 右 ​ 的方式(迷宫的墙是灰
色的,道路是白色的):

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

连通 ​道路网格 ​ 有如下的约束条件:
● 每一个 ​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。
● 第二行是迷宫 ​道路网格 ​ 的连通性定义。如果 ​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 ​. 

代码链接:https://github.com/AndyShen105/TW2019_pre_homework

*可以的话,帮忙点个赞哦

猜你喜欢

转载自blog.csdn.net/u011926899/article/details/81476619
今日推荐