templates3-bak/knight3.scala
changeset 486 9c03b5e89a2a
parent 485 19b75e899d37
child 487 efad9725dfd8
equal deleted inserted replaced
485:19b75e899d37 486:9c03b5e89a2a
     1 // Part 3 about finding a single tour using the Warnsdorf Rule
       
     2 //=============================================================
       
     3 
       
     4 // copy any function you need from files knight1.scala and
       
     5 // knight2.scala
       
     6 
       
     7 object CW7c {
       
     8 
       
     9 type Pos = (Int, Int)    // a position on a chessboard 
       
    10 type Path = List[Pos]    // a path...a list of positions
       
    11 
       
    12 //(3a) Complete the function that calculates a list of onward
       
    13 //     moves like in (1b) but orders them according to Warnsdorf’s 
       
    14 //     rule. That means moves with the fewest legal onward moves 
       
    15 //     should come first.
       
    16 
       
    17 //def ordered_moves(dim: Int, path: Path, x: Pos) : List[Pos] = ..
       
    18 
       
    19 
       
    20 //(3b) Complete the function that searches for a single *closed* 
       
    21 //     tour using the ordered moves function.
       
    22 
       
    23 //def first_closed_tour_heuristic(dim: Int, path: Path) : Option[Path] = ...
       
    24 
       
    25 
       
    26 //(3c) Same as (3b) but searches for *non-closed* tours. However, 
       
    27 //     you have to be careful to write a tail-recursive version as this 
       
    28 //     function will be called with dimensions of up to 40 * 40.
       
    29 
       
    30 //def first_tour_heuristic(dim: Int, path: Path) : Option[Path] = ...
       
    31 
       
    32 
       
    33 }