Wyzwanie
Otrzymujesz reprezentację ASCII-art znaków na płaszczyźnie jako dane wejściowe dowolną rozsądną metodą. Będzie to zawierać tylko:
[a-z]reprezentujących ruchome postacie. Każda litera pojawi się na planszy maksymalnie raz.#reprezentujące nieruchome ściany.reprezentujący pustą przestrzeń
Na przykład:
abcdef.gh#..
.......ij.#.
#..#.......#
...#.#...###
.#.......#q#
.........###
Otrzymujesz również ciąg reprezentujący zmiany grawitacji. Będzie to zawierać tylko:
>reprezentujący zmianę grawitacji w prawo<reprezentujący zmianę grawitacji w lewo^reprezentujący zmianę grawitacji w góręvreprezentujący zmianę grawitacji w dół
Na przykład:
v>^
Twój program musi symulować kolejno każdą zmianę grawitacji, aż wszystkie postacie przestaną się poruszać (uderzą w ścianę lub inną postać). Postacie, które „spadają z krawędzi mapy” są trwale usuwane, a postacie mogą „ustawiać się” jeden na drugim.
W tym przykładzie, na początku jest grawitacyjnie do dołu (w v), tak, c, e, g, h, i, i jspadają do dolnej części mapy. Wszystkie pozostałe postacie przesuwają się w dół, aż uderzą w ścianę, pozostawiając mapę w ten sposób:
.........#..
a..d......#.
#..#.f.....#
.b.#.#...###
.#.......#q#
.........###
Następnie przechodzimy do grawitacji w prawo ( >), która pozostawia nam to: Zwróć uwagę na astosy obok d.
.........#..
........ad#.
#..#......f#
..b#.#...###
.#.......#q#
.........###
Wreszcie możemy symulować grawitację w górę ( ^), w którym aa bodpadać mapie.
.........#..
.........d#.
#..#......f#
...#.#...###
.#.......#q#
.........###
Twoim zadaniem jest wyprowadzenie pozostałych postaci po przesunięciu grawitacyjnym. Można je podać w dowolnej kolejności. W tym przykładzie można wyprowadzić dowolną permutacjędfq .
Przypadki testowe
Dla następującej mapy:
abcde
.....
##.##
v = abde
v> = <nothing>
Dla następującej mapy:
######
#....#
abcdef
#.gh..
######
> = <nothing>
< = gh
^> = bcde
v< = bghef