相关疑难解决方法(0)

笛卡尔积的两个列表

给定一个数字与多个字符相关联的地图

scala> val conversion = Map("0" -> List("A", "B"), "1" -> List("C", "D"))
conversion: scala.collection.immutable.Map[java.lang.String,List[java.lang.String]] =
  Map(0 -> List(A, B), 1 -> List(C, D))
Run Code Online (Sandbox Code Playgroud)

我想基于一系列数字生成所有可能的字符序列.例子:

"00" -> List("AA", "AB", "BA", "BB")
"01" -> List("AC", "AD", "BC", "BD")
Run Code Online (Sandbox Code Playgroud)

我可以用这些来理解

scala> val number = "011"
number: java.lang.String = 011
Run Code Online (Sandbox Code Playgroud)

为每个索引创建一系列可能的字符

scala> val values = number map { case c => conversion(c.toString) }
values: scala.collection.immutable.IndexedSeq[List[java.lang.String]] =
  Vector(List(A, B), List(C, D), List(C, D))
Run Code Online (Sandbox Code Playgroud)

生成所有可能的字符序列

scala> for {
     | a <- values(0)
     | b <- …
Run Code Online (Sandbox Code Playgroud)

scala for-comprehension

17
推荐指数
2
解决办法
1万
查看次数

标签 统计

for-comprehension ×1

scala ×1