Thử thách
Bạn được cung cấp một biểu diễn nghệ thuật ASCII của các ký tự trên một mặt phẳng làm đầu vào theo bất kỳ phương thức hợp lý nào. Điều này sẽ chỉ chứa:
[a-z]đại diện cho các nhân vật di chuyển. Mỗi chữ cái sẽ xuất hiện trên bảng nhiều nhất một lần.#đại diện cho những bức tường bất động.đại diện cho không gian trống
Ví dụ:
abcdef.gh#..
.......ij.#.
#..#.......#
...#.#...###
.#.......#q#
.........###
Bạn cũng được cung cấp một chuỗi đại diện cho những thay đổi trong trọng lực. Điều này sẽ chỉ chứa:
>đại diện cho một sự thay đổi đối với trọng lực phải<đại diện cho một sự thay đổi đối với trọng lực bên trái^đại diện cho một sự thay đổi để trọng lực đi lênvđại diện cho một sự thay đổi để trọng lực đi xuống
Ví dụ:
v>^
Chương trình của bạn phải mô phỏng từng thay đổi về trọng lực cho đến khi tất cả các nhân vật ngừng di chuyển (họ va vào tường hoặc nhân vật khác). Các ký tự "rơi ra khỏi rìa bản đồ" sẽ bị xóa vĩnh viễn và các ký tự có thể "xếp chồng" lên nhau.
Trong ví dụ này, khi bắt đầu có lực hấp dẫn giảm ( v), vì vậy c, e, g, h, i, và jrơi ra khỏi đáy của bản đồ. Tất cả các nhân vật khác trượt xuống dưới cho đến khi va vào tường, rời khỏi bản đồ như thế này:
.........#..
a..d......#.
#..#.f.....#
.b.#.#...###
.#.......#q#
.........###
Sau đó, chúng ta chuyển sang trọng lực phải ( >), điều này cho chúng ta điều này: Lưu ý cách các angăn xếp bên cạnh d.
.........#..
........ad#.
#..#......f#
..b#.#...###
.#.......#q#
.........###
Cuối cùng, chúng tôi mô phỏng trọng lực hướng lên ( ^), trong đó avà brơi ra khỏi bản đồ.
.........#..
.........d#.
#..#......f#
...#.#...###
.#.......#q#
.........###
Nhiệm vụ của bạn là xuất các ký tự còn lại sau khi dịch chuyển trọng lực. Họ có thể được đưa ra theo thứ tự bất kỳ. Trong ví dụ này, bạn có thể xuất bất kỳ hoán vị nào dfq.
Tủ thử
Đối với bản đồ sau:
abcde
.....
##.##
v = abde
v> = <nothing>
Đối với bản đồ sau:
######
#....#
abcdef
#.gh..
######
> = <nothing>
< = gh
^> = bcde
v< = bghef