main_templates4/knight4.scala
author Christian Urban <christian.urban@kcl.ac.uk>
Fri, 02 Dec 2022 07:48:03 +0000
changeset 446 30b8f14b2655
parent 429 440836d805e3
permissions -rw-r--r--
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
427
2a0ddb392d2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     1
// Part 4 about finding a single tour on "mutilated" chessboards
2a0ddb392d2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     2
//==============================================================
2a0ddb392d2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     3
429
440836d805e3 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 427
diff changeset
     4
object M4d { 
440836d805e3 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 427
diff changeset
     5
440836d805e3 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 427
diff changeset
     6
// !!! Copy any function you need from file knight1.scala !!!
440836d805e3 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 427
diff changeset
     7
// !!! or knight2.scala or knight3.scala                  !!! 
440836d805e3 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 427
diff changeset
     8
//
440836d805e3 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 427
diff changeset
     9
// If you need any auxiliary function, feel free to 
440836d805e3 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 427
diff changeset
    10
// implement it, but do not make any changes to the
440836d805e3 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 427
diff changeset
    11
// templates below.
427
2a0ddb392d2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    12
2a0ddb392d2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    13
type Pos = (Int, Int)
2a0ddb392d2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    14
type Path = List[Pos]
2a0ddb392d2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    15
2a0ddb392d2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    16
def print_board(dim: Int, path: Path): Unit = {
2a0ddb392d2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    17
  println()
2a0ddb392d2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    18
  for (i <- 0 until dim) {
2a0ddb392d2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    19
    for (j <- 0 until dim) {
2a0ddb392d2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    20
      print(f"${path.reverse.indexOf((i, j))}%4.0f ")
2a0ddb392d2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    21
    }
2a0ddb392d2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    22
    println()
2a0ddb392d2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    23
  } 
2a0ddb392d2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    24
}
2a0ddb392d2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    25
429
440836d805e3 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 427
diff changeset
    26
// ADD YOUR CODE BELOW
440836d805e3 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 427
diff changeset
    27
//======================
427
2a0ddb392d2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    28
429
440836d805e3 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 427
diff changeset
    29
// (10)
440836d805e3 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 427
diff changeset
    30
def one_tour_pred(dim: Int, path: Path, n: Int, pred: Pos => Boolean): Option[Path] = ???
427
2a0ddb392d2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    31
2a0ddb392d2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    32
2a0ddb392d2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    33
}