数列

数列

中等

说明

给定一个数字字符串,按它们出现的顺序输出该字符串中所有长度为 n 的连续子串。

例如,字符串“49142”包含以下 3 位数的序列:

  • “491”
  • “914”
  • “142”

以及以下 4 位数的序列:

  • “4914”
  • “9142”

如果你从一个 5 位数的字符串里要一个 6 位数的序列,那不管得到什么,都是你自找的。

注意,这些序列只要求在输入中占据_相邻的位置_,数字本身不必_在数值上连续_。

提示

要完成这个练习,你需要实现 slices 函数:它接收一段文本,返回指定长度的数字子序列。

如果这是你第一次做这个练习,建议你先沿用给出的签名:

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

之后,你可以回过头来重新看看这个问题,试着用一用其他的数据类型和库:

  • ByteString,来自 bytestring 包。
  • Sequence,来自 containers 包。
  • Text,来自 text 包。
  • Vector,来自 vector 包。

测试套件特意设计成能接受几乎所有合理的类型签名,所以我们鼓励你找出自己认为最好的那一种。

通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Haskell Exercism

准备好开始 数列 了吗?

注册 Exercism,借助 107 个练习 和真人导师指导,学习并掌握 Haskell,全部免费。