Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- val n = 16
- val kinder = (0 until n).toList
- def findeMöglichkeiten(plätze: Map[Int, Int], kinder: List[Int]): Set[Map[Int, Int]] = {
- if(kinder.isEmpty)
- Set(plätze) // Wenn keine kinder mehr zuzuordnen sind, dann gib die Platzzuordnung zurück.
- else {
- val kind = kinder.head
- val möglichkeiten = Seq((if(kind == 0) n - 1 else kind - 1), kind, (kind +1) % n)
- val neuePlätze = (Set[Map[Int, Int]]() /: möglichkeiten) {
- (menge, möglichkeit) =>
- if(plätze.contains(möglichkeit)) // Wenn Platz bereits belegt ist,
- menge // einfach bisherige Menge zurückgeben
- else // Sonst füge die neue Zuordnung (möglichkeit -> kind) hinzu.
- menge + (plätze + (möglichkeit -> kind))
- }
- neuePlätze.flatMap { // Kombiniere alle Möglichkeiten der Rekursiven Aufrufe
- findeMöglichkeiten(_, kinder.tail)
- }
- }
- }
- val alleMöglichkeiten = findeMöglichkeiten(Map(), kinder).map(_.swap)
- alleMöglichkeiten.size
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement