门把手非常好,但是当您打开一扇门时,它总是会使周围的墙壁凹陷。我需要您输入房间的ASCII艺术作品,如下所示:
+---------+--X --X --+-----+
| \ \ |\ | \ |
| \ \ | \ | \|
| X | \ | X
| / | | \ X
| / | \ /
| / | \ / |
+---X --+-------X------+-----+
并输出带有门挡的房间,如下所示:
+---------+--X --X --+-----+
| \ . \ |\ | \.|
| \ \ | \ .| \|
| X | \ | X
| / | |. \ X
| / .| \ /
|. / | .\ / |
+---X --+-------X------+-----+
规格:
- ASCII码室(输入)将包括
+,-,和|。这些角色纯粹是化妆品。它们都可能是+s,但这看起来太可怕了。它还将包含铰链(X)和门(/或\)。 - 门由
/或组成\。从“铰链”字符(即)开始X,它们将直接沿对角线(1英寸x和1英寸的变化y)移动2个或更多单位(字符)。 要找到放置门挡的位置(每个门始终只有一个门挡),请找到该门的门道。门口将始终从一个铰链开始,并从那里向上,向下,向左或向右移动与门的长度相同的空间。在那之后的下一个空间将永远是一堵墙。例如,在此门中,门口标有
Ds:\ \ ---DDX-----找到一扇门,找出要顺时针还是逆时针才能到达门。例如,在上面的示例门中,您必须顺时针旋转,而在这一扇门中,您必须逆时针旋转:
\ <- \ ) -----X ---一旦知道要走的路,就继续走那条路(忽略门),直到碰到墙为止。
这是上面示例门的可视化效果:

蓝色是门口,橙色是您必须顺时针旋转,红色是顺时针旋转,直到到达墙为止。
到达墙壁后,从
X墙壁上的铰链()移开(门的长度)空间,将墙壁向墙壁移开一个空间(这样就不会将门挡直接放在墙壁上),然后插入.那里。这是同样的示例门,显示了门挡的放置方式:\ \ . ---DDX12---对每个门重复一次,然后输出结果!使用本文顶部的示例输入作为测试案例,以检查您的程序是否有效。
请注意,您不必处理不适合墙壁的门,例如:
| / | / | / | / +-X --要么:
/ / / +-X -- | |- 这是code-golf,因此以字节为单位的最短代码将获胜。
门口有什么规则?它们必须正交,长度与门相同,并在一侧被一堵墙包围,而在另一侧被一扇铰链(用于右门)包围?
—
John Dvorak 2014年
@JanDvorak好,为澄清而编辑
—
Doorknob
我们是否可以假定以铰链为起点的墙的长度至少与门的长度相同,并且没有其他壁(不是以铰链为起点的墙)不会干扰该特定门?
—
2014年
@霍华德,我不确定你在说什么。您是在问是否可以假设与门口相对的墙的长度与门口的长度相同?如果是这样,则否,因为门只能像测试案例中的第二个一样旋转90度(通过从左上角开始的铰链放置来计算)。
—
门把手
??门是对角的。所有这些字符串都是6个字符宽,因此没有中间的列。
—
彼得·泰勒