//---------------CUSTOM_TESTS-------------------- class SimpleSolution(x: Double, y: List[Solution]) extends Solution { def quality: Double = x def neighbors: List[Solution] = y } @Test(timeout = 4000) def customTest_findBest: Unit = { val s1 = new SimpleSolution(1, Nil) val s2 = new SimpleSolution(2, Nil) val s3 = new SimpleSolution(3, Nil) val s4 = new SimpleSolution(4, Nil) val s5 = new SimpleSolution(5, Nil) val s6 = new SimpleSolution(6, Nil) val s7 = new SimpleSolution(7, Nil) val s8 = new SimpleSolution(8, Nil) val s9 = new SimpleSolution(9, Nil) val n1 = List(s2, s3, s4, s5, s6, s7, s8, s9) val s10 = new SimpleSolution(4, n1) val s11 = new SimpleSolution(8, n1) val s12 = new SimpleSolution(9, n1) val s13 = new SimpleSolution(10, n1) val s14 = new SimpleSolution(0, n1) val s15 = new SimpleSolution(-300, n1) assert(HillClimbing.findBest(s1).quality == 1) assert(HillClimbing.findBest(s10).quality == 9) assert(HillClimbing.findBest(s11).quality == 9) assert(HillClimbing.findBest(s12).quality == 9 && HillClimbing.findBest(s12) == s12) assert(HillClimbing.findBest(s13).quality == 10 && HillClimbing.findBest(s13) == s13) assert(HillClimbing.findBest(s14).quality == 9 && HillClimbing.findBest(s9) == s9) assert(HillClimbing.findBest(s15).quality == 9 && HillClimbing.findBest(s15) == s9) } @Test(timeout = 4000) def customTest_HillClimbing: Unit = { val high = new SimpleSolution(42, Nil) val s9 = new SimpleSolution(9, List(high)) val s8 = new SimpleSolution(8, List(s9)) val s7 = new SimpleSolution(7, List(s8)) val s6 = new SimpleSolution(6, List(s7)) val s5 = new SimpleSolution(5, List(s6)) val s4 = new SimpleSolution(4, List(s5)) val s3 = new SimpleSolution(3, List(s4)) val s2 = new SimpleSolution(2, List(s3)) val s1 = new SimpleSolution(1, List(s2)) val deep = new SimpleSolution(0, List(s1)) val n1 = List(s2, s3, s4, s5, s6, s7, s8, s9) val s10 = new SimpleSolution(4, n1) assert(HillClimbing.hillClimbing(s10)(1).quality == 9) assert(HillClimbing.hillClimbing(deep)(0) == deep) assert(HillClimbing.hillClimbing(deep)(1) == s1) assert(HillClimbing.hillClimbing(deep)(2) == s2) assert(HillClimbing.hillClimbing(deep)(3) == s3) assert(HillClimbing.hillClimbing(deep)(4) == s4) assert(HillClimbing.hillClimbing(deep)(10) == high) assert(HillClimbing.hillClimbing(deep)(11) == high) assert(HillClimbing.hillClimbing(deep)(220) == high) assert(HillClimbing.hillClimbing(deep)(228) == high) } @Test(timeout = 4000) def customTest_Optimum: Unit = { val high = new SimpleSolution(42, Nil) val s9 = new SimpleSolution(9, List(high)) val s8 = new SimpleSolution(8, List(s9)) val s7 = new SimpleSolution(7, List(s8)) val s6 = new SimpleSolution(6, List(s7)) val s5 = new SimpleSolution(5, List(s6)) val s4 = new SimpleSolution(4, List(s5)) val s3 = new SimpleSolution(3, List(s4)) val s2 = new SimpleSolution(2, List(s3)) val s1 = new SimpleSolution(1, List(s2)) val deep = new SimpleSolution(0, List(s1)) val n1 = List(s2, s3, s4, s5, s6, s7, s8, s9) val s10 = new SimpleSolution(4, n1) assert(HillClimbing.optimum(HillClimbing.hillClimbing(s1)) == high) assert(HillClimbing.optimum(HillClimbing.hillClimbing(s2)) == high) assert(HillClimbing.optimum(HillClimbing.hillClimbing(s3)) == high) assert(HillClimbing.optimum(HillClimbing.hillClimbing(s4)) == high) assert(HillClimbing.optimum(HillClimbing.hillClimbing(s5)) == high) assert(HillClimbing.optimum(HillClimbing.hillClimbing(high)) == high) assert(HillClimbing.optimum(HillClimbing.hillClimbing(new SimpleSolution(666, Nil))).quality == 666) assert(HillClimbing.optimum(HillClimbing.hillClimbing(new SimpleSolution(666, n1))).quality == 666) } @Test(timeout = 4000) def customTest_SwapNeighbors: Unit = { assert(swapNeighbors(List(1, 2, 3)).toSet == List(List(2, 1, 3), List(3, 2, 1), List(1, 3, 2)).toSet) assert(swapNeighbors(List(1, 2, 3, 4)).toSet == List(List(2, 1, 3, 4), List(3, 2, 1, 4), List(4, 2, 3, 1), List(1, 3, 2, 4), List(1, 4, 3, 2), List(1, 2, 4, 3)).toSet) assert(swapNeighbors(List(1, 2, 3, 4, 5)).toSet == List(List(2, 1, 3, 4, 5), List(3, 2, 1, 4, 5), List(4, 2, 3, 1, 5), List(5, 2, 3, 4, 1), List(1, 3, 2, 4, 5), List(1, 4, 3, 2, 5), List(1, 5, 3, 4, 2), List(1, 2, 4, 3, 5), List(1, 2, 5, 4, 3), List(1, 2, 3, 5, 4)).toSet) assert(swapNeighbors(List(1, 2, 3, 4, 5, 6)).toSet == List(List(2, 1, 3, 4, 5, 6), List(3, 2, 1, 4, 5, 6), List(4, 2, 3, 1, 5, 6), List(5, 2, 3, 4, 1, 6), List(6, 2, 3, 4, 5, 1), List(1, 3, 2, 4, 5, 6), List(1, 4, 3, 2, 5, 6), List(1, 5, 3, 4, 2, 6), List(1, 6, 3, 4, 5, 2), List(1, 2, 4, 3, 5, 6), List(1, 2, 5, 4, 3, 6), List(1, 2, 6, 4, 5, 3), List(1, 2, 3, 5, 4, 6), List(1, 2, 3, 6, 5, 4), List(1, 2, 3, 4, 6, 5)).toSet) assert(swapNeighbors(List(1, 2, 3, 4, 5, 6, 7)).toSet == List(List(2, 1, 3, 4, 5, 6, 7), List(3, 2, 1, 4, 5, 6, 7), List(4, 2, 3, 1, 5, 6, 7), List(5, 2, 3, 4, 1, 6, 7), List(6, 2, 3, 4, 5, 1, 7), List(7, 2, 3, 4, 5, 6, 1), List(1, 3, 2, 4, 5, 6, 7), List(1, 4, 3, 2, 5, 6, 7), List(1, 5, 3, 4, 2, 6, 7), List(1, 6, 3, 4, 5, 2, 7), List(1, 7, 3, 4, 5, 6, 2), List(1, 2, 4, 3, 5, 6, 7), List(1, 2, 5, 4, 3, 6, 7), List(1, 2, 6, 4, 5, 3, 7), List(1, 2, 7, 4, 5, 6, 3), List(1, 2, 3, 5, 4, 6, 7), List(1, 2, 3, 6, 5, 4, 7), List(1, 2, 3, 7, 5, 6, 4), List(1, 2, 3, 4, 6, 5, 7), List(1, 2, 3, 4, 7, 6, 5), List(1, 2, 3, 4, 5, 7, 6)).toSet) assert(swapNeighbors(List(1, 2, 3, 4, 5, 6, 7, 8)).toSet == List(List(2, 1, 3, 4, 5, 6, 7, 8), List(3, 2, 1, 4, 5, 6, 7, 8), List(4, 2, 3, 1, 5, 6, 7, 8), List(5, 2, 3, 4, 1, 6, 7, 8), List(6, 2, 3, 4, 5, 1, 7, 8), List(7, 2, 3, 4, 5, 6, 1, 8), List(8, 2, 3, 4, 5, 6, 7, 1), List(1, 3, 2, 4, 5, 6, 7, 8), List(1, 4, 3, 2, 5, 6, 7, 8), List(1, 5, 3, 4, 2, 6, 7, 8), List(1, 6, 3, 4, 5, 2, 7, 8), List(1, 7, 3, 4, 5, 6, 2, 8), List(1, 8, 3, 4, 5, 6, 7, 2), List(1, 2, 4, 3, 5, 6, 7, 8), List(1, 2, 5, 4, 3, 6, 7, 8), List(1, 2, 6, 4, 5, 3, 7, 8), List(1, 2, 7, 4, 5, 6, 3, 8), List(1, 2, 8, 4, 5, 6, 7, 3), List(1, 2, 3, 5, 4, 6, 7, 8), List(1, 2, 3, 6, 5, 4, 7, 8), List(1, 2, 3, 7, 5, 6, 4, 8), List(1, 2, 3, 8, 5, 6, 7, 4), List(1, 2, 3, 4, 6, 5, 7, 8), List(1, 2, 3, 4, 7, 6, 5, 8), List(1, 2, 3, 4, 8, 6, 7, 5), List(1, 2, 3, 4, 5, 7, 6, 8), List(1, 2, 3, 4, 5, 8, 7, 6), List(1, 2, 3, 4, 5, 6, 8, 7)).toSet) assert(swapNeighbors(List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444)).toSet == List(List(212, 41, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(323, 212, 41, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(9999, 212, 323, 41, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(0, 212, 323, 9999, 41, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(-1, 212, 323, 9999, 0, 41, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(33, 212, 323, 9999, 0, -1, 41, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(4444, 212, 323, 9999, 0, -1, 33, 41, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(331, 212, 323, 9999, 0, -1, 33, 4444, 41, 22, 1, 33, 1, 1, 2, 33, 444), List(22, 212, 323, 9999, 0, -1, 33, 4444, 331, 41, 1, 33, 1, 1, 2, 33, 444), List(1, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 41, 33, 1, 1, 2, 33, 444), List(33, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 41, 1, 1, 2, 33, 444), List(1, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 41, 1, 2, 33, 444), List(1, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 41, 2, 33, 444), List(2, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 41, 33, 444), List(33, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 41, 444), List(444, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 41), List(41, 323, 212, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 9999, 323, 212, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 0, 323, 9999, 212, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, -1, 323, 9999, 0, 212, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 33, 323, 9999, 0, -1, 212, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 4444, 323, 9999, 0, -1, 33, 212, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 331, 323, 9999, 0, -1, 33, 4444, 212, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 22, 323, 9999, 0, -1, 33, 4444, 331, 212, 1, 33, 1, 1, 2, 33, 444), List(41, 1, 323, 9999, 0, -1, 33, 4444, 331, 22, 212, 33, 1, 1, 2, 33, 444), List(41, 33, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 212, 1, 1, 2, 33, 444), List(41, 1, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 212, 1, 2, 33, 444), List(41, 1, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 212, 2, 33, 444), List(41, 2, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 212, 33, 444), List(41, 33, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 212, 444), List(41, 444, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 212), List(41, 212, 9999, 323, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 0, 9999, 323, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, -1, 9999, 0, 323, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 33, 9999, 0, -1, 323, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 4444, 9999, 0, -1, 33, 323, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 331, 9999, 0, -1, 33, 4444, 323, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 22, 9999, 0, -1, 33, 4444, 331, 323, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 1, 9999, 0, -1, 33, 4444, 331, 22, 323, 33, 1, 1, 2, 33, 444), List(41, 212, 33, 9999, 0, -1, 33, 4444, 331, 22, 1, 323, 1, 1, 2, 33, 444), List(41, 212, 1, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 323, 1, 2, 33, 444), List(41, 212, 1, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 323, 2, 33, 444), List(41, 212, 2, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 323, 33, 444), List(41, 212, 33, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 323, 444), List(41, 212, 444, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 323), List(41, 212, 323, 0, 9999, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, -1, 0, 9999, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 33, 0, -1, 9999, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 4444, 0, -1, 33, 9999, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 331, 0, -1, 33, 4444, 9999, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 22, 0, -1, 33, 4444, 331, 9999, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 1, 0, -1, 33, 4444, 331, 22, 9999, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 33, 0, -1, 33, 4444, 331, 22, 1, 9999, 1, 1, 2, 33, 444), List(41, 212, 323, 1, 0, -1, 33, 4444, 331, 22, 1, 33, 9999, 1, 2, 33, 444), List(41, 212, 323, 1, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 9999, 2, 33, 444), List(41, 212, 323, 2, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 9999, 33, 444), List(41, 212, 323, 33, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 9999, 444), List(41, 212, 323, 444, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 9999), List(41, 212, 323, 9999, -1, 0, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 33, -1, 0, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 4444, -1, 33, 0, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 331, -1, 33, 4444, 0, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 22, -1, 33, 4444, 331, 0, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 1, -1, 33, 4444, 331, 22, 0, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 33, -1, 33, 4444, 331, 22, 1, 0, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 1, -1, 33, 4444, 331, 22, 1, 33, 0, 1, 2, 33, 444), List(41, 212, 323, 9999, 1, -1, 33, 4444, 331, 22, 1, 33, 1, 0, 2, 33, 444), List(41, 212, 323, 9999, 2, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 0, 33, 444), List(41, 212, 323, 9999, 33, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 0, 444), List(41, 212, 323, 9999, 444, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 0), List(41, 212, 323, 9999, 0, 33, -1, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, 4444, 33, -1, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, 331, 33, 4444, -1, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, 22, 33, 4444, 331, -1, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, 1, 33, 4444, 331, 22, -1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, 33, 33, 4444, 331, 22, 1, -1, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, 1, 33, 4444, 331, 22, 1, 33, -1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, 1, 33, 4444, 331, 22, 1, 33, 1, -1, 2, 33, 444), List(41, 212, 323, 9999, 0, 2, 33, 4444, 331, 22, 1, 33, 1, 1, -1, 33, 444), List(41, 212, 323, 9999, 0, 33, 33, 4444, 331, 22, 1, 33, 1, 1, 2, -1, 444), List(41, 212, 323, 9999, 0, 444, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, -1), List(41, 212, 323, 9999, 0, -1, 4444, 33, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 331, 4444, 33, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 22, 4444, 331, 33, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 1, 4444, 331, 22, 33, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 1, 4444, 331, 22, 1, 33, 33, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 1, 4444, 331, 22, 1, 33, 1, 33, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 2, 4444, 331, 22, 1, 33, 1, 1, 33, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 444, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 33), List(41, 212, 323, 9999, 0, -1, 33, 331, 4444, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 22, 331, 4444, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 1, 331, 22, 4444, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 33, 331, 22, 1, 4444, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 1, 331, 22, 1, 33, 4444, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 1, 331, 22, 1, 33, 1, 4444, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 2, 331, 22, 1, 33, 1, 1, 4444, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 33, 331, 22, 1, 33, 1, 1, 2, 4444, 444), List(41, 212, 323, 9999, 0, -1, 33, 444, 331, 22, 1, 33, 1, 1, 2, 33, 4444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 22, 331, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 1, 22, 331, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 33, 22, 1, 331, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 1, 22, 1, 33, 331, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 1, 22, 1, 33, 1, 331, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 2, 22, 1, 33, 1, 1, 331, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 33, 22, 1, 33, 1, 1, 2, 331, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 444, 22, 1, 33, 1, 1, 2, 33, 331), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 1, 22, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 33, 1, 22, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 1, 1, 33, 22, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 1, 1, 33, 1, 22, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 2, 1, 33, 1, 1, 22, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 33, 1, 33, 1, 1, 2, 22, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 444, 1, 33, 1, 1, 2, 33, 22), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 33, 1, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 2, 33, 1, 1, 1, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 33, 33, 1, 1, 2, 1, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 444, 33, 1, 1, 2, 33, 1), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 1, 33, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 1, 1, 33, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 2, 1, 1, 33, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 444, 1, 1, 2, 33, 33), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 2, 1, 1, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 33, 1, 2, 1, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 444, 1, 2, 33, 1), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 2, 1, 33, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 33, 2, 1, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 444, 2, 33, 1), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 33, 2, 444), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 444, 33, 2), List(41, 212, 323, 9999, 0, -1, 33, 4444, 331, 22, 1, 33, 1, 1, 2, 444, 33)).toSet) assert(swapNeighbors(Nil) == Nil) assert(swapNeighbors(List(1)) == Nil) assert(swapNeighbors(List(2)) == Nil) assert(swapNeighbors(List(0)) == Nil) assert(swapNeighbors(List(-1)) == Nil) assert(swapNeighbors(List(666, 333)).toSet == List(List(333, 666)).toSet) } @Test(timeout = 4000) def wiesojetztgenaugleis4_satan: Unit = { val neunDreiViertel = 9.75 def zahlUmdrehen: Int => Int = a => if (a == 6) 9 else if (a == 9) 6 else a def zahlDreiMalNehmen: Int => Int = a => a + a * 10 + a * 100 assert(zahlDreiMalNehmen(zahlUmdrehen(neunDreiViertel.toInt)) == 666) }