equal
  deleted
  inserted
  replaced
  
    
    
|      7  |      7  | 
|      8 // - recursion |      8 // - recursion | 
|      9 // - Sudoku |      9 // - Sudoku | 
|     10 // - string interpolations |     10 // - string interpolations | 
|     11 // - Pattern-Matching |     11 // - Pattern-Matching | 
|         |     12  | 
|         |     13 def fact(n: BigInt) : BigInt = { | 
|         |     14   if (n == 0) 1  | 
|         |     15   else n * fact(n - 1) | 
|         |     16 } | 
|         |     17  | 
|         |     18 def fib(n: BigInt) : BigInt = { | 
|         |     19   if (n == 0) 1 | 
|         |     20   else if (n == 1) 1  | 
|         |     21   else fib(n - 1) + fib(n - 2) | 
|         |     22 } | 
|         |     23  | 
|         |     24  | 
|         |     25  | 
|         |     26  | 
|         |     27  | 
|         |     28 def inc(n: Int) : Int = n + 1 | 
|         |     29  | 
|         |     30 for (n <- List(1,2,3,4)) yield inc(n) | 
|         |     31  | 
|         |     32 List().map(inc) | 
|         |     33  | 
|         |     34  | 
|         |     35  | 
|         |     36 my_map(inc, List(1,2,3,4)) | 
|         |     37  | 
|         |     38  | 
|         |     39  | 
|         |     40  | 
|         |     41  | 
|     12  |     42  | 
|     13 // A Recursive Web Crawler / Email Harvester |     43 // A Recursive Web Crawler / Email Harvester | 
|     14 //=========================================== |     44 //=========================================== | 
|     15 // |     45 // | 
|     16 // the idea is to look for links using the |     46 // the idea is to look for links using the | 
|     77  |    107  | 
|     78 // THE POINT OF THIS CODE IS NOT TO BE SUPER |    108 // THE POINT OF THIS CODE IS NOT TO BE SUPER | 
|     79 // EFFICIENT AND FAST, just explaining exhaustive |    109 // EFFICIENT AND FAST, just explaining exhaustive | 
|     80 // depth-first search |    110 // depth-first search | 
|     81  |    111  | 
|         |    112 //> using dep org.scala-lang.modules::scala-parallel-collections:1.0.4 | 
|         |    113 import scala.collection.parallel.CollectionConverters.* | 
|         |    114  | 
|         |    115  | 
|         |    116 val s1 = "s\n" | 
|         |    117 val s2 = """s\n""" | 
|     82  |    118  | 
|     83 val game0 = """.14.6.3.. |    119 val game0 = """.14.6.3.. | 
|     84               |62...4..9 |    120               |62...4..9 | 
|     85               |.8..5.6.. |    121               |.8..5.6.. | 
|     86               |.6.2....3 |    122               |.6.2....3 | 
|    284 //       case pattern2 => expression2 |    320 //       case pattern2 => expression2 | 
|    285 //       ... |    321 //       ... | 
|    286 //       case patternN => expressionN |    322 //       case patternN => expressionN | 
|    287 //    } |    323 //    } | 
|    288  |    324  | 
|         |    325 def my_map(f: Int => Int, xs: List[Int]) : List[Int] =   | 
|         |    326   xs match { | 
|         |    327     case Nil => Nil  | 
|         |    328     case hd::tl => f(hd) ::  my_map(f, tl) | 
|         |    329   } | 
|         |    330  | 
|         |    331 my_map(x => x * x, List(1,2,3,4)) | 
|         |    332  | 
|    289  |    333  | 
|    290 // recall |    334 // recall | 
|    291 def len(xs: List[Int]) : Int = { |    335 def len(xs: List[Int]) : Int = { | 
|    292     if (xs == Nil) 0 |    336     if (xs == Nil) 0 | 
|    293     else 1 + len(xs.tail) |    337     else 1 + len(xs.tail) | 
|    348  println(fizz_buzz(n)) |    392  println(fizz_buzz(n)) | 
|    349  |    393  | 
|    350 // more interesting patterns for lists - calculate the deltas between  |    394 // more interesting patterns for lists - calculate the deltas between  | 
|    351 // elements |    395 // elements | 
|    352  |    396  | 
|         |    397 List(4,3,2,1) -> List(1,1,.. ) | 
|         |    398  | 
|    353 def delta(xs: List[Int]) : List[Int] = xs match { |    399 def delta(xs: List[Int]) : List[Int] = xs match { | 
|    354   case Nil => Nil |    400   case Nil => Nil | 
|    355   case x::Nil => x::Nil |    401   case x::Nil => x::Nil | 
|    356   case x::y::xs => (x - y)::delta(y::xs) |    402   case x::y::xs => (x - y)::delta(y::xs) | 
|    357 } |    403 } | 
|    383 case class Leaf(x: Int) extends Tree |    429 case class Leaf(x: Int) extends Tree | 
|    384 case class Node(s: String, left: Tree, right: Tree) extends Tree  |    430 case class Node(s: String, left: Tree, right: Tree) extends Tree  | 
|    385  |    431  | 
|    386 val lf = Leaf(20) |    432 val lf = Leaf(20) | 
|    387 val tr = Node("foo", Leaf(10), Leaf(23)) |    433 val tr = Node("foo", Leaf(10), Leaf(23)) | 
|         |    434  | 
|         |    435 def sizet(t: Tree) : Int = t match { | 
|         |    436   case Leaf(_) => 1 | 
|         |    437   case Node(_, left , right) => 1 + sizet(left) + sizet(right) | 
|         |    438 } | 
|         |    439  | 
|         |    440 sizet(tr) | 
|    388  |    441  | 
|    389 val lst : List[Tree] = List(lf, tr) |    442 val lst : List[Tree] = List(lf, tr) | 
|    390  |    443  | 
|    391  |    444  | 
|    392 abstract class Colour |    445 abstract class Colour |