--- a/main_templates4/knight1.scala Sat Oct 08 00:30:51 2022 +0100
+++ b/main_templates4/knight1.scala Tue Nov 01 15:03:48 2022 +0000
@@ -9,22 +9,19 @@
// templates below. Also have a look whether the functions
// at the end of the file are of any help.
-
-
type Pos = (Int, Int) // a position on a chessboard
type Path = List[Pos] // a path...a list of positions
-//(1) Complete the function that tests whether the position x
-// is inside the board and not yet element in the path.
+// ADD YOUR CODE BELOW
+//======================
+
+
+//(1)
def is_legal(dim: Int, path: Path, x: Pos) : Boolean = ???
-
-//(2) Complete the function that calculates for a position x
-// all legal onward moves that are not already in the path.
-// The moves should be ordered in a "clockwise" manner.
-
+//(2)
def legal_moves(dim: Int, path: Path, x: Pos) : List[Pos] = ???
@@ -38,21 +35,12 @@
//assert(legal_moves(8, List((6,6)), (7,7)) == List((6,5), (5,6)))
-//(3) Complete the two recursive functions below.
-// They exhaustively search for knight's tours starting from the
-// given path. The first function counts all possible tours,
-// and the second collects all tours in a list of paths.
-
+// (3)
def count_tours(dim: Int, path: Path) : Int = ???
def enum_tours(dim: Int, path: Path) : List[Path] = ???
-
-//(4) Implement a first-function that finds the first
-// element, say x, in the list xs where f is not None.
-// In that case Return f(x), otherwise None. If possible,
-// calculate f(x) only once.
-
+// (4)
def first(xs: List[Pos], f: Pos => Option[Path]) : Option[Path] = ???
@@ -64,10 +52,7 @@
//first(List((1, 0),(2, 0),(3, 0)), foo) // None
-//(5) Implement a function that uses the first-function from (4) for
-// trying out onward moves, and searches recursively for a
-// knight tour on a dim * dim-board.
-
+//(5)
def first_tour(dim: Int, path: Path) : Option[Path] = ???