繁体   English   中英

如何从Scala中的字符串值生成规则?

[英]How to generate rules from a string values in scala?

我想根据字符串制定规则。 例如,我的字符串是:

Ball Cat Egg
Cat Egg
Apple Cat
Ball Egg
Ball Cat

我想要规则,

Ball -> Cat Egg
Cat -> Ball Egg
Egg -> Ball Cat
Ball Cat -> Egg
Cat Egg -> Ball
Ball Egg -> Cat
Cat -> Egg
Egg -> Cat
Apple -> Cat
Cat -> Apple
Ball -> Egg
Egg -> Ball
Ball -> Cat
Cat -> Ball
scala> val strs = Seq("BCE", "CE", "AC", "BE", "BC")
strs: Seq[String] = List(BCE, CE, AC, BE, BC)

scala> val rules = for(s <- strs;i <- 1 to s.size-1;p <- s combinations i) yield p -> s.diff(p)
rules: Seq[(String, String)] = 
List((B,CE), 
     (C,BE), 
     (E,BC), 
     (BC,E), 
     (BE,C), 
     (CE,B), 
     (C,E), 
     (E,C), 
     (A,C), 
     (C,A), 
     (B,E), 
     (E,B), 
     (B,C), 
     (C,B))

编辑这是新问题的代码:

scala> case class Rule(src: Seq[String], dst: Seq[String]) {
     |   override def toString = s"${src.mkString(" ")} -> ${dst.mkString(" ")}"
     | }
defined class Rule

scala> val strs = Seq("Ball Cat Egg", "Cat Egg", "Apple Cat", "Ball Egg", "Ball Cat")
strs: Seq[String] = List(Ball Cat Egg, Cat Egg, Apple Cat, Ball Egg, Ball Cat)

scala> val rules = for(s <- strs;l = s.split(" ");i <- 1 to l.size-1;p <- l combinations i) 
                     yield Rule(p, l diff p)
rules: Seq[Rule] = List(Ball -> Cat Egg, Cat -> Ball Egg, Egg -> Ball Cat, 
                        Ball Cat -> Egg, Ball Egg -> Cat, Cat Egg -> Ball, 
                        Cat -> Egg, Egg -> Cat, Apple -> Cat, Cat -> Apple, 
                        Ball -> Egg, Egg -> Ball, Ball -> Cat, Cat -> Ball)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM