鑽石 kata 的輸入是一個字母,輸出則是鑽石形狀。 給定一個字母,它會印出一個以 'A' 開頭、並讓傳入的字母落在最寬處的鑽石。
在以下範例中,空白以·字元表示。
字母 'A' 的鑽石:
A
字母 'C' 的鑽石:
··A··
·B·B·
C···C
·B·B·
··A··
字母 'E' 的鑽石:
····A····
···B·B···
··C···C··
·D·····D·
E·······E
·D·····D·
··C···C··
···B·B···
····A····
你需要實作diamond函式,它會印出一個菱形,這個菱形從A開始,並在最寬處使用指定的字元。如果你不確定型別,可以使用提供的簽名,但別讓它限制了你的創意:
diamond :: Char -> Maybe [String]
這個練習處理的是文字資料。基於歷史因素,Haskell 的String型別與[Char]同義,也就是字元陣列。若要更有效率地處理文字資料,可以使用Text型別。
作為這個練習的選用延伸,你可以
import qualified Data.Text as T
import Data.Text (Text)
diamond :: Char -> Maybe [Text],並用例如T.pack來取用Data.Text的組合子,Data.Text的文件,String的出現位置替換成Text:diamond :: Char -> Maybe [Text]
這部分完全是選用的喔。