50
|
1 |
// Part 3 about finding a single tour using the Warnsdorf Rule
|
|
2 |
//=============================================================
|
45
|
3 |
|
50
|
4 |
// copy any function you need from files knight1.scala and
|
|
5 |
// knight2.scala
|
45
|
6 |
|
50
|
7 |
type Pos = (Int, Int) // a position on a chessboard
|
|
8 |
type Path = List[Pos] // a path...a list of positions
|
45
|
9 |
|
50
|
10 |
//(3a) Complete the function that calculates a list of onward
|
|
11 |
// moves like in (1b) but orders them according to the Warnsdorf’s
|
|
12 |
// rule. That means moves with the fewest legal onward moves
|
|
13 |
// should come first.
|
45
|
14 |
|
50
|
15 |
def ordered_moves(dim: Int, path: Path, x: Pos): List[Pos] = ..
|
45
|
16 |
|
50
|
17 |
//(3b) Complete the function that searches for a single *closed*
|
|
18 |
// tour using the ordered moves function.
|
45
|
19 |
|
50
|
20 |
def first_closed_tour_heuristic(dim: Int, path: Path): Option[Path] = ...
|
45
|
21 |
|
50
|
22 |
//(3c) Sama as (3b) but searches for *open* tours.
|
|
23 |
|
|
24 |
def first_tour_heuristic(dim: Int, path: Path): Option[Path] = ...
|