당신의 비참한 카누 타기 후에 , 당신은 강 급류의 끝에 폭포에서 떨어지게되었다. 카누는 폭발했지만 폭발 후에도 살아 남았습니다. 그러나 당신의 강 여행은지도에서 완전히 벗어났습니다. 당신은 이제 숲 한가운데서 길을 잃었습니다. 운 좋게도 여전히 프로그래밍 기술을 보유하고 있으므로 프로그램을 나무 옆면에 새겨서 숲을 통과하는 길을 찾을 수 있습니다. 그러나 트리에는 표면적이 많지 않으므로 프로그램을 최대한 짧게 만들어야합니다.
숲은 n 로 n( n > 5단지 소문자 문자로 구성됩니다 문자) 광장 a-z. 예제 숲 :
anehcienwlndm
baneiryeivown
bnabncmxlriru
anhahirrnrauc
riwuafuvocvnc
riwnbaueibnxz
hyirorairener
ruwiiwuauawoe
qnnvcizdaiehr
iefyioeorauvi
quoeuroenraib
cuivoaisdfuae
efoiebnxmcsua
이 포리스트에는 a왼쪽 위 모서리에서 오른쪽 아래 모서리 까지이 문자를 가로 지르는 대각선 문자가 있음을 알 수 있습니다. 이것은 숲을 통과하는 "경로"입니다. 당신의 임무는 단일 경로를 찾을 수있는 프로그램을 작성하는 것입니다. 이제이 과제에서 "경로"를 의미하는 것을 더 구체적으로 설명하겠습니다.
이 도전에서 "경로"는 다음과 같이 생성되었을 수있는 것과 비슷한 선으로 정의됩니다. Bresenham 알고리즘 되지만 다음과 같은 추가 요구 사항이 있습니다.
- 줄은 6 자 이상이어야합니다
- 줄의 각 공선 (완전히 인접한) 문자 그룹 길이는 같아야합니다 .
- 숲의 한쪽 가장자리에서 시작하여 반대쪽 가장자리에서 끝납니다 (참조 여기 내 의견을 )
두 번째 요구 사항을보다 명확하게 설명하려면 다음 줄을 고려하십시오.
aaa
aaa
aaa
aaa
aaa
이 줄은 동일 선상 문자 "세그먼트"로 구성되며 각 문자는 정확히 3 자입니다. 경로로 규정됩니다. 이제이 줄을 고려하십시오.
a
aa
a
aa
a
aa
이 줄은 정확히 같은 길이의 문자가 아닌 동일 선상 "세그먼트"로 구성됩니다 (일부 문자는 1 자 길이이고 일부는 2 자임). 따라서 이것은 경로로 적합하지 않습니다.
포리스트 맵이 제공된 프로그램에서 경로에 사용 된 문자를 식별합니다. 입력은 편리한 것이 무엇이든됩니다 (예 : 명령 행 인수, STDIN prompt(), 등). 변수로 사전 초기화 할 수 없습니다. 입력의 첫 번째 부분은 n포리스트의 크기를 나타내는 단일 정수 입니다 (포리스트는 항상 정사각형 임). 그 후에는 공백이 있고 전체 문자열이 단일 문자열입니다. 예를 들어 예제 포리스트는 다음과 같이 입력으로 표시됩니다.
13 anehcienwlndmbaneiryeivownbnabncmxlriruanhahirrnraucriwuafuvocvncriwnbaueibnxzhyirorairenerruwiiwuauawoeqnnvcizdaiehriefyioeorauviquoeuroenraibcuivoaisdfuaeefoiebnxmcsua
이에 대한 출력은 다음과 같습니다.
a
경로는 문자를 사용하여 형성되기 때문 a입니다. 포리스트에는 경로가 하나만 있습니다. 이것은 코드 골프이므로 문자 수가 가장 적습니다. 궁금한 점이 있으면 의견을 물어보십시오.