2011-03-18 29 views
0

此文本需要以自然數左旋並在輸入負數時向右旋轉。所以:如何旋轉Haskell中的文本,以便只有單個文字旋轉而不是整個文本?

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

還添加我可以打破文成線,然後的話,我知道所有的線,unlines,文字的是unwords。我在向左或向右移動文本的定義時遇到問題,我是否需要使用頭部功能?

+3

看起來像功課:)與分裂文成字開始。 – 9000 2011-03-18 16:10:45

+0

嗨,我已經添加了一個例子來說明你的意思(例如,不像圖像中那樣旋轉)。如果這不是你的意思,請糾正我並進一步澄清。 – luqui 2011-03-18 20:11:17

+0

好的。最後一個提示。 ''cycle'bar''給出''barbarbarbar ...',這個字符串包含所有'bar'的旋轉版本,使用'head'和'tail'來提取它們,不,這個代碼中沒有'head' – fuz 2011-03-19 12:38:37

回答

7

要建立你想要的功能,我爲你提供一些磚塊。不包括彙編指令:

  • 功能wordsunwords分割字符串插入的其詞的列表,並且反之亦然
  • cycle通過一次又一次追加列表
  • take創建從其輸入一個無限列表從列表中獲取固定數量的元素
  • drop從列表中刪除固定數量的元素
  • map將函數應用於所有元素名單

(通過hoogle找到文檔鏈接)

+1

+1沒有勺子餵食的極佳指導 – luqui 2011-03-18 20:11:57

+0

[map](http://hackage.haskell.org/packages/archive/base/latest/doc/html/Prelude.html#v:map)也會對此有用我相信。 – 2011-03-19 05:58:17

+0

@丹謝謝。增加了'map'。 – fuz 2011-03-19 11:05:20