뱀이 미로를 가득 채운다.
뱀
뱀은 주어진 시작점에서 시작하여 EAST를 가리 킵니다 . 머리 주위의 네 방향이 모두 점령되어 붙어 붙을 때까지 항상 벽이나 신체 일부를 머리 의 왼쪽 ( " 왼쪽 규칙 벽 추종자 ")으로 즉시 이동시킵니다 . (참고 : 붙어있는 뱀은 도달 가능한 모든 공간을 채울 수는 없지만 목표는 아닙니다!)
도전
미로를 2D 텍스트 형식으로 입력으로 받아들이는 프로그램이나 함수를 작성하십시오.
- 입력은 문자열 형식, 줄 바꿈이있는 단일 문자열, 파일과 같은 합리적인 형식 일 수 있습니다.
- 미로는 벽 ( "
#
"), 빈 공간 ( "") 및 정확히 하나의 시작점 ( " ")을 갖습니다
o
. 당신은 선택할 수 있습니다
- 첫 번째 행과 마지막 행과 열이 모두 벽이라고 가정합니다.
- 또는 모든 입력이 암시적인 외부 벽 층 을 갖는 것으로 간주됩니다
시작점 바로 위에 벽 (또는 암시 적 벽)이 있고 뱀이 EAST 또는 SOUTH 방향으로 유효한 시작 이동을 할 수 있다고 가정 할 수 있습니다.
- 텍스트에 다른 문자가 없다고 가정 할 수 있습니다 (입력에 필요한 경우 줄 바꿈 제외).
- 모든 줄의 길이가 같다고 가정 할 수 있습니다.
그리고 채워진 순간에 뱀의 스냅 샷 과 함께 "채워진 미로"를 출력으로 출력 / 반환합니다 :
- 뱀의 몸은 다음 세그먼트가
>v<^
있는 곳을 가리키는 문자로 표현됩니다. - 뱀의 시작점은 시작시 방향 ( "
>
"바로 회전하지 않는 한 ") 또는o
캐릭터 (일관 될 필요는 없음)입니다. - 뱀의 종말은
o
캐릭터
채점
일반적인 코드 골프 : 가장 짧은 코드가 승리
예
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#
#^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<#
#################################
애니메이션 (예시 목적으로) :
편집 : 의심 스러울 때 뱀은 코너를 따라 1 블록 떨어진 곳으로 점프하지 말고 이미있는 벽에 "왼손을 유지"해야합니다.
이를 설명해 준 Jonathan Allan과 위의 설명을 위해 Draco18s에게 감사드립니다.
다른 예
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#
#^<<<<<<<<<<<<<#
################