Guest User

Untitled

a guest
Aug 25th, 2023
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 1.26 KB | Source Code | 0 0
  1. object Obg {
  2.   var checks = List(
  3.     ("elvte",11), ("tolvte",12), ("ottende",8), ("niende",9),
  4.     ("tiende",10), ("tredie",3), ("anden",2), ("syvende",7),
  5.     ("sjette",6), ("fjerde",4), ("femte",5), ("første",1))
  6.    
  7.   // returnere falsk hvis det kan bevises at "løsning" ikke er mulig
  8.   def check(løsning: Map[Char,Int]): Boolean = {
  9.     for ((str, expectedSum) <- checks) {
  10.       if (str.forall(ch => løsning.contains(ch))) {
  11.         val currentSum = str.map(ch => løsning(ch)).sum
  12.         if (currentSum != expectedSum) return false
  13.       }
  14.     }
  15.     return true
  16.   }
  17.  
  18.   def check2(løsning: Map[Char,Int], bogstaver: String): Vector[Map[Char,Int]] = {
  19.     if (bogstaver.isEmpty) return Vector(løsning)
  20.     val bogstav = bogstaver.head
  21.     val tail = bogstaver.tail
  22.     val brugte = løsning.values.toSet
  23.     val result = (-9 to 9).filter(
  24.       v => !brugte.contains(v) && check(løsning + (bogstav -> v))
  25.     ).map(v => check2(løsning + (bogstav -> v),tail))
  26.     return result.toVector.flatten
  27.   }
  28.  
  29.   def run() = {
  30.     // shuffle for at tjekke køretid hvis checks randomiseres. Er hurtigere uden.
  31.     checks = scala.util.Random.shuffle(checks)
  32.     val result = check2(Map(),checks.map(_._1).mkString("").distinct)
  33.     println(result)
  34.   }
  35. }
  36.  
Advertisement
Add Comment
Please, Sign In to add comment