仅从 1 个元素创建一个递归流?
我已经使用递归为 格雷码 创建了一个流,如下所示:
val gray: Stream[List[String]] = {
List("") #:: List("0", "1") #:: gray.tail.map {gnext}
}
例如
val gnext = (i:List[String]) => i.map {"0" + _} ::: i.reverse.map {"1" + _}
,
scala> gray(2)
res17: List[String] = List(00, 01, 11, 10)
我定义中并不真正需要 List("0", "1"),因为它可以从元素 0 生成:
scala> gnext(List(""))
res18: List[java.lang.String] = List(0, 1)
那么有没有一种方法/模式可以用于仅从第一个元素生成 Stream?
I've made a Stream for Gray Codes using recursion as follows:
val gray: Stream[List[String]] = {
List("") #:: List("0", "1") #:: gray.tail.map {gnext}
}
where
val gnext = (i:List[String]) => i.map {"0" + _} ::: i.reverse.map {"1" + _}
so that, for example
scala> gray(2)
res17: List[String] = List(00, 01, 11, 10)
I don't really need the List("0", "1") in the definition, because it can be produced from element 0:
scala> gnext(List(""))
res18: List[java.lang.String] = List(0, 1)
So is there a way / pattern that can be used to produce a Stream from just the first element?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
或者,或者,
Or, alternatively,