【问题标题】:How to generate rules from a string values in scala?如何从scala中的字符串值生成规则?
【发布时间】:2014-12-02 21:36:22
【问题描述】:

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

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

【问题讨论】:

    标签: string scala dictionary scala-collections


    【解决方案1】:
    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)
    

    【讨论】:

    • 如何在(B, CE)之间放“->”,即(B -> CE)
    • 非常感谢先生......还有1个疑问......实际上它是一个规则类型,我们如何单独获取每个项目。即,c - > b,我想要单独的c和b。 .这是下一个目的所需要的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 2023-03-11
    • 2014-10-23
    • 1970-01-01
    相关资源
    最近更新 更多