보기! ASCII 미로입니다! 쿨자, 아마 즈볼 등.
+-+-----+---+
| | | |
| | ++ | |
| | ++ +-+ |
| | |
+-------+ | |
| | |
+---------+-+
하지만 미로의 모든 부분이 어떤 방향으로 가고 있는지 알아내는 것은 고통스러운 일입니다. 나는 단지 레이아웃을 그리고 싶고 미로는 스스로 많은 시간을 낭비하지 않습니다.
내가 이것을 그릴 수 있다면 어떨까요?
#############
# # # #
# # ## # #
# # ## ### #
# # #
######### # #
# # #
#############
너무 달콤합니다!
규칙 (규칙이 시원하기 때문에) :
- 문자열을 ASCII 미로로 변환하고 결과를 출력하는 코드를 작성하십시오.
- 공백이 아닌 문자는 벽으로 읽습니다.
- 벽의 각 문자는 이웃을 기반으로 할 캐릭터를 결정합니다 (북쪽, 남쪽, 동쪽 및 서쪽 방향으로 만).
- 문자에 공백이 아닌 이웃이 없으면 더하기 부호 (+)가됩니다.
- 문자에 세로 (남쪽) 및 가로 (동서) 방향으로 이웃이 있으면 더하기 부호 (+)가됩니다.
- 문자가 세로 (남-남) 방향으로 만 이웃을 갖는 경우 파이프 기호 (|)가됩니다.
- 문자에 가로 (동서) 방향으로 만 이웃이 있으면 빼기 부호 (-)가됩니다.
- 입력은 단일 문자열 일 수 있습니다 (줄 바꿈 문자로 구분 된 행 또는 문자열 배열).
- 모든 입력 문자는 인쇄 가능한 ASCII 문자이므로 확장 문자 집합을 다룰 필요가 없습니다.
- 원하는 오래된 언어를 사용하십시오.
- 줄 앞에 공백이 있으면 각 줄의 양이 같아야합니다. 각 출력 줄 뒤에 공백이 있으면됩니다.
- 가장 적은 수의 바이트로 해결하려고 시도하십시오.
테스트 사례 :
1 : 프레임
입력:
##########
# #
# #
# #
##########
산출:
+--------+
| |
| |
| |
+--------+
2 : 클래식 미로
입력:
#################
# #
# ##### # ##### #
# # # # # #
# # # # ##### # #
# # # # #
### # ####### # #
# # # # # #
# ### # ## # ##
# # ## #
#################
산출:
--------+-------+
| |
| --+-+ | ----+ |
| | | | | |
| + | | +---- | |
| | | | |
+-- | +----+- | |
| | | | | |
| --+ | ++ | -+
| | ++ |
+-----+-++----+--
3 : 녹색 계란.
입력:
I do not like green eggs and ham.
I do not like them, sam I am.
Would you like them here or there?
I would not like them anywhere!
산출:
| ++ +++ ++++ +++++ +++- -++ ----
| ++ +++ ++++ +++++ +++ + +++
+-+++ +++ ++++ ++++ ++++ ++ +++---
| +++-+ +++ ++++ ++-+ +++++++++
4 : 차가워 요
입력:
Word Icicle!
Word Icicle
Word cicle
ord cicle
ord icle
ord i le
or i le
or i l
or l
or
r
산출:
++++ ++++++-
++++ ++++++
++++ +++++
+++ +++++
+++ ++++
+++ | ++
++ | ++
++ | |
++ |
++
|
-
또는 왜 고전 미로가 +
맨 아래 줄에 4를 가지고 있지 않은지 확실 하지 않습니다 .
smallest number of characters
바이트가 아닌을 의미 합니까?
+
첫 번째 줄의 중간에 !
있어야한다고 생각합니다 -
. 이것들을 다시 확인해 주시겠습니까?
whitespace
, 당신은 단지 공간을 의미합니까? 나는 탭을 지원하고 싶지 않으며 아마 줄 바꿈을 바꾸고 싶지 않을 것입니다.
---
?