Làm cho một con rắn lấp đầy bất kỳ mê cung (cho đến khi nó bị mắc kẹt).
Con rắn
Con rắn bắt đầu tại một điểm bắt đầu nhất định, chỉ EAST . Nó di chuyển bằng cách luôn luôn có một bức tường hoặc một phần cơ thể của nó ngay lập tức vào TRÁI đầu (" người theo dõi quy tắc bên trái "), cho đến khi nó bị kẹt vì cả bốn hướng xung quanh đầu đều bị chiếm giữ. (Lưu ý: một con rắn bị mắc kẹt có thể không thể lấp đầy tất cả không gian có thể tiếp cận, nhưng đó không phải là mục tiêu!)
Các thách thức
Viết chương trình hoặc chức năng chấp nhận mê cung làm đầu vào dưới dạng văn bản 2D:
- Đầu vào có thể ở bất kỳ định dạng hợp lý nào: ví dụ: danh sách các chuỗi, một chuỗi có dòng mới, tệp.
- Mê cung có tường ("
#
"), khoảng trống ("") và chính xác một điểm bắt đầu ("
o
"). Bạn có thể chọn
- hoặc giả định rằng hàng đầu tiên và cuối cùng và cột hoàn toàn là các bức tường;
- hoặc giả định rằng mọi đầu vào được coi là có một lớp tường bên ngoài ngầm
Bạn có thể giả sử rằng điểm bắt đầu có một bức tường (hoặc một bức tường ẩn) ngay phía trên nó (BẮC) và con rắn có thể thực hiện một bước di chuyển hợp lệ theo hướng EAST hoặc SOUTH.
- Bạn có thể cho rằng không có ký tự nào khác xuất hiện trong văn bản (ngoại trừ dòng mới nếu đầu vào của bạn cần chúng).
- Bạn có thể giả định rằng tất cả các dòng có cùng độ dài.
và in / trả về một "mê cung đầy" như đầu ra, với một ảnh chụp nhanh của con rắn tại thời điểm nó bị mắc kẹt :
- Cơ thể của con rắn được đại diện bởi các nhân vật
>v<^
chỉ vào nơi phân đoạn tiếp theo của nó - Điểm bắt đầu của con rắn là hướng của nó khi bắt đầu ("
>
" trừ khi nó phải quay ngay lập tức) hoặc mộto
nhân vật (không cần phải nhất quán) - Điểm cuối của con rắn là một
o
nhân vật
Chấm điểm
Mã golf thông thường: mã ngắn nhất sẽ thắng
Thí dụ
in:
#################################
# o #
# #
# ## ### ## #
# ## ## ## ## #
# ## ## ## ## #
# ## ## ## ## #
# ## ## ## ## #
# ## ### ## #
# ## ##### ## #
# ## ##### ## #
# ## ### ## #
# ## ## #
# #
# #
#################################
out:
#################################
#>>>>>>>>>>>>>>>>>>>v>>>>>>>>>>v#
#^>>>>>>>>>>>>>>>>>v>>>>>>>>>>vv#
#^^ ##>>>>>>v###o>>>>>v## vv#
#^^ ##>^ ##>>>>^## >v## vv#
#^^ ##^ ## ## v## vv#
#^^ ##^ ## ## v## vv#
#^^ ##>^ ## ## >v## vv#
#^^ ##^< ### v<## vv#
#^^ ##^ ##### v## vv#
#^^ ##^ ##### v## vv#
#^^ ##^< ### v<## vv#
#^^ ##^<<<<<<<<<<<<<<<<## vv#
#^^<<<<<<<<<<<<<<<<<<<<<<<<<<<<v#
#^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<#
#################################
Hoạt hình (cho mục đích minh họa):
Chỉnh sửa: lưu ý rằng, khi nghi ngờ, con rắn nên "giữ tay trái" trên tường nó đã ở trên, theo các góc, không nhảy vào tường cách đó 1 khối.
Cảm ơn Jonathan Allan đã đưa nó lên, và Draco18s cho ảnh chụp nhanh giải thích ở trên.
Những ví dụ khác
in:
####################
# o# #
# ###
# #
# ## #
# ###
####################
out:
####################
#>>>>>>>>>>>>>>vv# #
#^>>>>>>>>>>>>vvv###
#^^ v<<<o<<<<v>>v#
#^^<<<<##^<<<<<<v<<#
#^<<<<<<<<<<<<<<<###
####################
in:
####################
# o #####
# #####
# #
# ##
####################
out:
####################
# >>>>v#####
# v#####
# >>>>o#
# ##
####################
in:
################
#o #
# ########## #
# # # #
# # # #
# # # #
# # # # #
# # # #
# # # #
# # # #
# ############ #
# #
################
out:
################
#>>>>>>>>>>>>>v#
#>>v##########v#
#^#>>>>>>>>>v#v#
#^#>>>>>>>>vv#v#
#^#^>>>>>>vvv#v#
#^#^^# vvv#v#
#^#^^o<<<<<vv#v#
#^#^^<<<<<<<v#v#
#^#^<<<<<<<<<#v#
#^############v#
#^<<<<<<<<<<<<<#
################