templates2/knight2.scala
author Christian Urban <urbanc@in.tum.de>
Fri, 17 Nov 2017 14:11:58 +0000
changeset 151 a1518a92469f
parent 147 3e5d8657302f
permissions -rw-r--r--
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
146
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     1
// Part 2 about finding a single tour for a board
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     2
//================================================
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     3
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     4
// copy any function you need from file knight1.scala
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     5
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     6
object CW7b {
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     7
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     8
type Pos = (Int, Int)    // a position on a chessboard 
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     9
type Path = List[Pos]    // a path...a list of positions
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    10
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    11
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    12
//(2a) Implement a first-function that finds the first 
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    13
//     element, say x, in the list xs where f is not None. 
147
3e5d8657302f updated
Christian Urban <urbanc@in.tum.de>
parents: 146
diff changeset
    14
//     In that case Return f(x), otherwise None. If possible,
146
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    15
//     calculate f(x) only once.
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    16
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    17
//def first(xs: List[Pos], f: Pos => Option[Path]) : Option[Path] = ...
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    18
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    19
//(2b) Implement a function that uses the first-function for
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    20
//     trying out onward moves, and searches recursively for a
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    21
//     knight tour on a dim * dim-board.
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    22
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    23
//def first_tour(dim: Int, path: Path) : Option[Path] = ...
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    24
 
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    25
ed68f7239293 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    26
}