equal
  deleted
  inserted
  replaced
  
    
    
|      1 // Scala Lecture 3 |      1 // Scala Lecture 3 | 
|      2 //================= |      2 //================= | 
|      3  |      3  | 
|         |      4 // - Higher-Order functions | 
|      4 // - maps (behind for-comprehensions) |      5 // - maps (behind for-comprehensions) | 
|         |      6  | 
|      5 // - Pattern-Matching |      7 // - Pattern-Matching | 
|         |      8  | 
|         |      9 def fib(n: Int) : Int = n match { | 
|         |     10   case 0 => 1 | 
|         |     11   case 1 =>  1 | 
|         |     12   case n => fib(n - 1) + fib(n - 2) | 
|         |     13 } | 
|         |     14  | 
|      6  |     15  | 
|      7 abstract class Rexp |     16 abstract class Rexp | 
|      8 case object ZERO extends Rexp                      // matches nothing |     17 case object ZERO extends Rexp                      // matches nothing | 
|      9 case object ONE extends Rexp                       // matches the empty string |     18 case object ONE extends Rexp                       // matches the empty string | 
|     10 case class CHAR(c: Char) extends Rexp              // matches a character c |     19 case class CHAR(c: Char) extends Rexp              // matches a character c | 
|    308  |    317  | 
|    309  |    318  | 
|    310 // Sudoku |    319 // Sudoku | 
|    311 //======== |    320 //======== | 
|    312  |    321  | 
|         |    322 // uses Strings for games | 
|    313  |    323  | 
|    314 type Pos = (Int, Int) |    324 type Pos = (Int, Int) | 
|    315 val emptyValue = '.' |    325 val emptyValue = '.' | 
|    316 val maxValue = 9 |    326 val maxValue = 9 | 
|    317  |    327  | 
|    347   allValues.diff(toAvoid(game, pos)) |    357   allValues.diff(toAvoid(game, pos)) | 
|    348  |    358  | 
|    349 def search(game: String): List[String] = { |    359 def search(game: String): List[String] = { | 
|    350   if (isDone(game)) List(game) |    360   if (isDone(game)) List(game) | 
|    351   else  |    361   else  | 
|    352     candidates(game, emptyPosition(game)).par. |    362     candidates(game, emptyPosition(game)). | 
|    353       map(c => search(update(game, empty(game), c))).toList.flatten |    363       map(c => search(update(game, empty(game), c))).flatten | 
|    354 } |    364 } | 
|    355  |    365  | 
|    356  |    366  | 
|    357 def search1T(games: List[String]): Option[String] = games match { |    367 def search1T(games: List[String]): Option[String] = games match { | 
|    358   case Nil => None |    368   case Nil => None |