挑战
您可以通过任何合理的方法为您提供平面上字符的ASCII艺术表示形式。它仅包含:
[a-z]
表示可移动字符。每个字母最多会出现在板上一次。#
代表不动的墙壁.
代表空白
例如:
abcdef.gh#..
.......ij.#.
#..#.......#
...#.#...###
.#.......#q#
.........###
您还会得到一个表示重力变化的字符串。它仅包含:
>
代表向右引力的变化<
代表向左引力的变化^
代表向上重力的变化v
代表向下重力的变化
例如:
v>^
您的程序必须依次模拟重力的每个变化,直到所有角色停止移动(他们撞到墙壁或另一个角色)为止。“掉落在地图边缘”的字符将被永久删除,并且字符可以“堆叠”在彼此之上。
在这个例子中,在开始时有向下重力(v
),因此c
,e
,g
,h
,i
,和j
脱落的地图的底部。所有其他字符都向下滑动,直到碰到墙,这样留下地图:
.........#..
a..d......#.
#..#.f.....#
.b.#.#...###
.#.......#q#
.........###
然后,我们继续向右移动重力(>
),这使我们有了:注意a
旁边的堆栈如何d
。
.........#..
........ad#.
#..#......f#
..b#.#...###
.#.......#q#
.........###
最后,我们模拟了向上的重力(^
),在此期间a
和b
跌落了地图。
.........#..
.........d#.
#..#......f#
...#.#...###
.#.......#q#
.........###
您的任务是在重力转移后输出其余字符。它们可以以任何顺序给出。对于此示例,您可以输出的任何排列dfq
。
测试用例
对于以下地图:
abcde
.....
##.##
v = abde
v> = <nothing>
对于以下地图:
######
#....#
abcdef
#.gh..
######
> = <nothing>
< = gh
^> = bcde
v< = bghef
如何提供输入?字符串列表?函数参数?STDIN?
—
Leaky Nun
@KennyLau所有这些选项都很好。输入和输出可以是适合您的语言的任何内容。
—
jrich 2016年