수열

수열

보통

지침

숫자로 이루어진 문자열이 주어지면, 그 문자열에서 길이가 n인 모든 연속 부분 문자열을 나타나는 순서대로 출력해요.

예를 들어, 문자열 "49142"에는 다음과 같은 3자리 연속열이 있어요:

  • "491"
  • "914"
  • "142"

그리고 다음과 같은 4자리 연속열도 있어요:

  • "4914"
  • "9142"

5자리 문자열에서 6자리 연속열을 달라고 하면, 어떤 결과가 나오든 감수해야 해요.

이 연속열은 입력에서 _서로 인접한 위치_를 차지하기만 하면 되고, 숫자가 _수적으로 연속_일 필요는 없다는 점에 유의해요.

힌트

이 연습 문제를 완료하려면 text를 받아 지정한 크기의 숫자 부분 수열을 반환하는 slices 함수를 구현해야 해요:

이 연습 문제를 처음 푼다면, 제시된 시그니처를 그대로 따르는 걸 추천해요:

slices :: Int -> String -> [[Int]]

나중에 이 문제를 다시 풀어 보면서 다른 데이터 타입과 라이브러리를 가지고 놀아 보는 것도 좋아요:

  • bytestring 패키지의 ByteString
  • containers 패키지의 Sequence
  • text 패키지의 Text
  • vector 패키지의 Vector

테스트 스위트는 의미가 통하는 거의 모든 타입 시그니처를 허용하도록 의도적으로 설계되었으니, 가장 좋다고 생각하는 시그니처를 찾아보세요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Haskell Exercism

수열 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Haskell 트랙을 연습 문제 107개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.