146
|
1 |
// Part 2 about finding a single tour for a board
|
|
2 |
//================================================
|
|
3 |
|
|
4 |
// copy any function you need from file knight1.scala
|
|
5 |
|
|
6 |
object CW7b {
|
|
7 |
|
|
8 |
type Pos = (Int, Int) // a position on a chessboard
|
|
9 |
type Path = List[Pos] // a path...a list of positions
|
|
10 |
|
|
11 |
|
|
12 |
//(2a) Implement a first-function that finds the first
|
|
13 |
// element, say x, in the list xs where f is not None.
|
147
|
14 |
// In that case Return f(x), otherwise None. If possible,
|
146
|
15 |
// calculate f(x) only once.
|
|
16 |
|
|
17 |
//def first(xs: List[Pos], f: Pos => Option[Path]) : Option[Path] = ...
|
|
18 |
|
|
19 |
//(2b) Implement a function that uses the first-function for
|
|
20 |
// trying out onward moves, and searches recursively for a
|
|
21 |
// knight tour on a dim * dim-board.
|
|
22 |
|
|
23 |
//def first_tour(dim: Int, path: Path) : Option[Path] = ...
|
|
24 |
|
|
25 |
|
|
26 |
}
|