Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- object Obg {
- var checks = List(
- ("elvte",11), ("tolvte",12), ("ottende",8), ("niende",9),
- ("tiende",10), ("tredie",3), ("anden",2), ("syvende",7),
- ("sjette",6), ("fjerde",4), ("femte",5), ("første",1))
- // returnere falsk hvis det kan bevises at "løsning" ikke er mulig
- def check(løsning: Map[Char,Int]): Boolean = {
- for ((str, expectedSum) <- checks) {
- if (str.forall(ch => løsning.contains(ch))) {
- val currentSum = str.map(ch => løsning(ch)).sum
- if (currentSum != expectedSum) return false
- }
- }
- return true
- }
- def check2(løsning: Map[Char,Int], bogstaver: String): Vector[Map[Char,Int]] = {
- if (bogstaver.isEmpty) return Vector(løsning)
- val bogstav = bogstaver.head
- val tail = bogstaver.tail
- val brugte = løsning.values.toSet
- val result = (-9 to 9).filter(
- v => !brugte.contains(v) && check(løsning + (bogstav -> v))
- ).map(v => check2(løsning + (bogstav -> v),tail))
- return result.toVector.flatten
- }
- def run() = {
- // shuffle for at tjekke køretid hvis checks randomiseres. Er hurtigere uden.
- checks = scala.util.Random.shuffle(checks)
- val result = check2(Map(),checks.map(_._1).mkString("").distinct)
- println(result)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment