2011-03-18 2 views
0

이 텍스트는 자연수로 왼쪽으로 회전하고 음수를 입력하면 오른쪽으로 회전해야합니다. 그래서 :개별 단어 만 전체 텍스트를 회전시키지 않도록 haskell에서 텍스트를 회전시키는 방법은 무엇입니까?

rotate 1 "foo bar baz" = "ofo rba zba" 
rotate (-1) "foo bar baz" = "oof arb azb" 

또한 텍스트를 줄 바꿈 문자로 나눌 수 있습니다. 단어를 추가하면 모든 줄, 줄 바꿈, 단어, 암호를 알 수 있습니다. 텍스트를 왼쪽이나 오른쪽으로 움직이는 것에 대한 정의에 문제가 있습니다. 헤드 기능을 사용해야합니까?

+3

보인다. – 9000

+0

안녕하세요, 저는 여러분이 의미하는 것을 분명히하기위한 예제를 추가했습니다 (예 : 이미지 에서처럼 회전하지 않음). 이것이 당신이 의미하는 바가 아니었다면, 나를 교정하고 더 명확히하십시오. – luqui

+0

오케이. 마지막 팁. 'bar barbar'는'bar barbarbarbar ... '를 주며''bar''의 회전 된 버전을 포함하고 있으며''head''와''tail''을 사용하여 추출합니다. – fuz

답변

7

원하는 기능을 구현하기 위해 몇 가지 벽돌을 제공합니다. 조립 지침은 포함되지 :

  • 기능 wordsunwords는 단어 목록에 문자열을 분할하고 그 반대의 경우도 마찬가지
  • cycle는 또 다시
  • take을 목록을 추가하여 입력에서 무한 목록을 만듭니다 목록에서 고정 된 양의 요소를 취함
  • drop 목록에서 고정 된 양의 요소를 삭제합니다.
  • map은 모든 요소에 대해 함수를 적용합니다. 목록

(hoogle을 통해 발견 문서 링크) 숙제는 단어로 텍스트를 분할 시작 :)처럼

+1

+1 스푼 피드가없는 탁월한 지침 – luqui

+0

[지도] (http://hackage.haskell.org/packages/archive/base/latest/doc/html/Prelude.html#v:map)도이 기능에 유용합니다. 나는 믿는다. –

+0

@ Dan 고맙습니다.'map'이 추가되었습니다. – fuz

관련 문제