소개
주어진 규칙에 따라 유명한 팬 그램의 발신 나선을 출력하는 프로그램을 작성하십시오.
도전
팬 그램은 한 번에 적어도 주어진 알파벳의 모든 문자를 사용 문장입니다. 가장 유명한 팬 그램 중 하나는 Windows 글꼴 뷰어에서 광범위하게 사용되는 것입니다. 즉, " 빠른 갈색 여우가 게으른 개 위로 뛰어 넘습니다 ." 이 텍스트를 기반으로 나선형을 출력하는 것이 문제입니다.
당신의 작업은 다음과 같은 정확한 텍스트를 출력합니다 :
heeeeellllllllllllazzzzzzzzzzz
hummmmmmmmmmmmmppppppppppppppy
hubrrrrrrrrrrrrrrrrrrooooooosy
hukyddddoooooooooooooooggggwsy
hukyveeeeerrrrrrrrrrrrrrrrtwsy
hukyvxjjjjjjjjjjuuuuuuuuuttwsy
hukyvxkbbrrrrrrrrrrrrrrrmttwsy
hukyvxkogggggggttttttttomttwsy
tukyvokoellllllllllllahomttwsy
tukyvokoeovvvvvvvvvvvzhomttwsy
tukyvocoeoummmmmmmmmezhomttwsy
tukyvocoeoufooooooopezhomttwsy
tukyvocohoufroooooxpezhomttwsy
tukyvoiohoufrquuuwxpezhomttwsy
tucyvoiohoufbqttiwxpezhomttwsy
tucyvoiohoufbeehiwxprzhomttwsy
tucyvoiohoufkccciwxprzeomttwsy
tjiyvoidhounnnnnnwxprzeomttwsy
tjiyvoidhojjjjjjjjxprzeomttwsy
tjiyvoidhssssssssssprzeopttwsy
tjiyvoidttttttttttttrzeopttwsy
tjiyvoiyyyyyyyyyyyyyyzqopttwoy
tjiyvouuuuuuuuuuuuuuuuqwpttwoy
tjiyvffffnnnnnnnnnnnnnnwpttwoy
tjiyossssssssssssssssssspthwoy
tjizzzzalllllllllllleeeeehhwoy
tjuuqqqqqqqqqqqqqqqqqeeeeehnod
txxxxxoooooooooooooooffffffnod
reeeeevvvvvvvvvvvvvvvvvvvvvvod
gggggggoooooooooooooood
생성 방법은 다음과 같습니다.
- 팬 그램을 즐기는 열성적인 여우가있었습니다. "빠른 갈색 여우가 게으른 개 위로 뛰어 넘습니다." 어느 날 그는 나선의 중심에 있었고 그 안으로 뛰어 들기로 결심했습니다.
- 그는 처음부터 끝까지 팬 그램을 살펴보고 싶습니다. 알파벳의 n 번째 문자 인 경우 n 번 페인트하고 싶습니다.
- 그러나 여우는 모퉁이를 돌리는 데별로 좋지 않았으므로 각 모퉁이에 도달하면 멈추고 다음 글자로 전환해야했습니다.
- 그는 또한 것을 강조하기 위해 팬 그램의 세 번을 반복하기로 결정 빠른 갈색 여우.
- 당신의 임무는 여우가 그 문자들을 모두 그린 후에 나선이 어떻게 보일지를 보여주는 것입니다.
(이야기가없는 일반 판)
유명한 팬 그램 "빠른 갈색 여우가 게으른 개를 뛰어 넘다"는 공백을 제거하고 모든 문자를 소문자로 3 번 반복하여 생성합니다.
thequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydog
나선은 중심에서 시작하여 문자 "t"로 시작하며 오른쪽으로 이동하여 시작하여 시계 방향으로 바깥쪽으로갑니다. 현재 문자가 알파벳의 n 번째 문자이면 다음 문자로 전환합니다.
- 나선이 모서리에 도달하거나
- 현재 문자는 정확히 n 번 인쇄됩니다.
더 잘 설명하기 위해 처음 세 단어 "thequickbrown"과 관련된 나선형이 어떻게 생성되는지 설명하겠습니다.
rooooo
rquuuw
bqttiw
beehiw
kccciw
nnnnnnw
여우는 "t"에서 시작하여 오른쪽으로 이동하여 첫 번째 코너에 도달하여 "t"로 칠한 다음 "h" 로 전환 한 다음 내려 가서 두 번째 코너에 도달하여 "e"로 전환하여 왼쪽으로 이동하여 세 번째 코너, "q"로 전환, 상승, 네 번째 코너, "u"로 전환, 우회전, 코너, "i"로 전환, 하향, 코너 도달 및 "c"로 전환 왼쪽, 다음 코너에 도달하기 전에 3 개의 "c"를 페인트하고 , "k"로 전환 하고 왼쪽으로 간다. 바로 코너에 도달하고, "b"로 전환하여 올라가고, 2 "b"를 페인트 하기 전에 페인트한다. 다음 코너는 "r"로 전환됩니다위로 올라가서 모퉁이에 도달하여 "o"로 전환 한 다음 오른쪽으로 이동 한 다음 "w", 아래로, "n", 왼쪽으로갑니다.
명세서
표준 형식 의 문자열 을 포함하는 선택적 입력을 취할 수 있습니다.
thequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydog
출력은 문자열로 형식화되어야하며 파일 또는 STDERR 대신 STDOUT으로 이동해야하며 줄 바꿈이 올바르게 배치됩니다. 빈 줄의 제목과 끝은 중요하지 않습니다. 각 줄의 머리말과 뒷줄은 허용되지만 일관성이 있어야합니다. 따라서 주어진 텍스트의 한 줄 앞에 5 개의 공백을 추가하면 나선이 동일하게 보이도록 각 행 앞에 정확히 5 개의 공백을 추가해야합니다.
이것은 가장 적은 바이트 수의이기는 code-golf 입니다.
평소와 같이 기본 허점 이 여기에 적용됩니다.
필요하지는 않지만 설명은 환영합니다.
caird coinheringaahing에 의해 댓글 당 팬 그램이되도록 제목이 편집되었습니다.
게으른 개가 이야기에 나타나기에는 너무 게으르다.
좌표의 간단한 함수로 출력 할 문자를 계산할 수없는 문자열 챌린지를 만드는 것을 목표로합니다.