給定一個數字字串,請依這些子字串出現的順序,輸出該字串中所有長度為n的連續子字串。
例如,字串「49142」有以下這些 3 位數的數列:
以及以下這些 4 位數的數列:
如果你向一個 5 位數的字串要求 6 位數的數列,那不管得到什麼,都怨不得別人。
請注意,這些數列只需要佔據輸入中_相鄰的位置_;這些數字不需要在_數值上連續_。
要完成這個練習,你需要實作slices函式,它會接收一段文字,並回傳指定長度的數字子序列:
如果這是你第一次解這個練習,建議你先沿用提供的簽章:
slices :: Int -> String -> [[Int]]
之後,不妨再回來看看這個問題,試試其他的資料型態和函式庫:
ByteString,來自 bytestring 套件。Sequence,來自 containers 套件。Text,來自 text 套件。Vector,來自 vector 套件。測試套件刻意設計成能接受幾乎任何合理的型別簽章,所以鼓勵你找出你認為最好的那一種。