Я создал поток для Серых кодов , используя рекурсию следующим образом:
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)
Мне действительно не нужен список ("0", "1") в определении, потому что он может быть создан из элемента 0:
scala> gnext(List(""))
res18: List[java.lang.String] = List(0, 1)
Так есть ли способ / шаблон, который можно использовать для создания потока только из первого элемента?