|     64 List(1,2,3,4).max |     68 List(1,2,3,4).max | 
|     65 List(1,2,3,4).min |     69 List(1,2,3,4).min | 
|     66 List(1,2,3,4).sum |     70 List(1,2,3,4).sum | 
|     67 List(1,2,3,4).take(2).sum |     71 List(1,2,3,4).take(2).sum | 
|     68 List(1,2,3,4).drop(2).sum |     72 List(1,2,3,4).drop(2).sum | 
|     69 List(1,2,3,4,3).indexOf(3) |     73 List(1,2,3,4,3)indexOf(3) | 
|     70  |     74  | 
|     71 "1,2,3,4,5".split(",").mkString("\n") |     75 "1,2,3,4,5".split(",").mkString("\n") | 
|     72 "1,2,3,4,5".split(",3,").mkString("\n") |     76 "1,2,3,4,5".split(",3,").mkString("\n") | 
|     73  |     77  | 
|     74 // Types |     78 // Types | 
|    188     if (n == 1) 1 else fib(n - 1) + fib(n - 2) |    194     if (n == 1) 1 else fib(n - 1) + fib(n - 2) | 
|    189  |    195  | 
|    190  |    196  | 
|    191 //gcd - Euclid's algorithm |    197 //gcd - Euclid's algorithm | 
|    192  |    198  | 
|    193 def gcd(a: Int, b: Int): Int = |    199 def gcd(a: Int, b: Int) : Int = | 
|    194   if (b == 0) a else gcd(b, a % b) |    200   if (b == 0) a else gcd(b, a % b) | 
|    195  |    201  | 
|    196 gcd(48, 18) |    202 gcd(48, 18) | 
|         |    203  | 
|         |    204  | 
|         |    205 def power(x: Int, n: Int) : Int = | 
|         |    206   if (n == 0) 1  else x * power(x, n - 1)  | 
|         |    207  | 
|         |    208 power(5, 5) | 
|    197  |    209  | 
|    198  |    210  | 
|    199 // String Interpolations |    211 // String Interpolations | 
|    200 //======================= |    212 //======================= | 
|    201  |    213  | 
|    283 //========== |    295 //========== | 
|    284  |    296  | 
|    285 import io.Source |    297 import io.Source | 
|    286  |    298  | 
|    287 // obtaining a webpage |    299 // obtaining a webpage | 
|    288 val url = """http://www.inf.kcl.ac.uk/staff/urbanc/"""  |    300 val url = """https://nms.kcl.ac.uk/christian.urban/"""  | 
|    289 Source.fromURL(url)("ISO-8859-1").mkString |    301 Source.fromURL(url)("ISO-8859-1").mkString | 
|    290  |    302  | 
|    291  |    303  | 
|    292 // function for looking up stockmarket data  |    304 // function for looking up stockmarket data  | 
|    293 def price_lookup(symbol: String): String = { |    305 def price_lookup(symbol: String): String = { | 
|    294   val url = "http://finance.yahoo.com/d/quotes.csv?s=" + symbol + "&f=snl1" |    306   val url = "https://download.finance.yahoo.com/d/quotes.csv?s=" + symbol + "&f=snl1" | 
|    295   Source.fromURL(url).mkString.drop(1).dropRight(2) |    307   Source.fromURL(url).mkString.drop(1).dropRight(2) | 
|    296 } |    308 } | 
|    297  |    309  | 
|    298 price_lookup("GOOG") |    310 price_lookup("GOOG") | 
|    299 price_lookup("AAPL") |    311 price_lookup("AAPL") | 
|    300  |    312  | 
|    301  |    313  | 
|    302 val companies =  |    314 val companies =  | 
|    303   List("GOOG", "AAPL", "MSFT", "IBM", "FB", "YHOO", "AMZN", "BIDU") |    315   List("GOOG", "AAPL", "MSFT", "IBM", "FB", "YHOO", "AMZN", "BIDU") | 
|    304  |    316  | 
|    305 for (s <- companies.par) println(price_lookup(s)) |    317 for (s <- companies) println(price_lookup(s)) | 
|    306  |    318  | 
|    307  |    319  | 
|    308 // A Web Crawler |    320 // A Web Crawler  | 
|    309 //=============== |    321 //=============== | 
|    310 // |    322 // | 
|    311 // the idea is to look for dead links |    323 // the idea is to look for dead links using the | 
|         |    324 // regular expression "https?://[^"]*" | 
|    312  |    325  | 
|    313 import io.Source |    326 import io.Source | 
|    314 import scala.util.matching.Regex |    327 import scala.util.matching.Regex | 
|    315 import scala.util._ |    328 import scala.util._ | 
|    316  |    329  | 
|    338     for (u <- get_all_URLs(get_page(url))) crawl(u, n - 1) |    351     for (u <- get_all_URLs(get_page(url))) crawl(u, n - 1) | 
|    339   } |    352   } | 
|    340 } |    353 } | 
|    341  |    354  | 
|    342 // some starting URLs for the crawler |    355 // some starting URLs for the crawler | 
|    343 val startURL = """http://www.inf.kcl.ac.uk/staff/urbanc""" |    356 val startURL = """https://nms.kcl.ac.uk/christian.urban/""" | 
|    344 //val startURL = """http://www.inf.kcl.ac.uk/staff/mcburney""" |    357 //val startURL = """http://www.inf.kcl.ac.uk/staff/mcburney""" | 
|    345  |    358  | 
|    346 crawl(startURL, 2) |    359 crawl(startURL, 2) | 
|    347  |    360  | 
|    348  |    361  | 
|    349  |    362  | 
|    350 // Further Information |    363 // Further Information | 
|    351 //===================== |    364 //===================== | 
|    352  |    365  | 
|    353 // Scala download |    366 // The Scala home page and general information is at | 
|    354 // |    367 // | 
|    355 //  http://www.scala-lang.org |    368 //  http://www.scala-lang.org | 
|    356  |    369 //	http://docs.scala-lang.org | 
|    357 // Eclipse for Scala |    370 // | 
|    358 // |    371 // | 
|    359 //  http://scala-ide.org/download/sdk.html |    372 // It should be fairly easy to install the Scala binary and | 
|    360  |    373 // run Scala on the commandline. There are also at least  | 
|    361  |    374 // four IDEs you can use with Scala: | 
|    362 // library docs |    375 // | 
|         |    376 //  (0) Some general information for setting up IDEs | 
|         |    377 //	    with Scala support can be found at | 
|         |    378 // | 
|         |    379 //         http://docs.scala-lang.org/getting-started.html  | 
|         |    380 // | 
|         |    381 //  (1) Eclipse for Scala (one big bundle) | 
|         |    382 // | 
|         |    383 //         http://scala-ide.org/download/sdk.html | 
|         |    384 //   | 
|         |    385 //  (2) IntelliJ (needs additional Plugins) | 
|         |    386 // | 
|         |    387 //         https://www.jetbrains.com/idea/ | 
|         |    388 //		   http://docs.scala-lang.org/getting-started-intellij-track/getting-started-with-scala-in-intellij.html	   | 
|         |    389 // | 
|         |    390 //  (3) Sublime (not free, but unlimited trial period;  | 
|         |    391 //	    needs SublimeREPL plugin) | 
|         |    392 // | 
|         |    393 //         https://www.sublimetext.com | 
|         |    394 // | 
|         |    395 //  (4) Emacs (old-fashioned, but reliable) | 
|         |    396 // | 
|         |    397 //         https://www.gnu.org/software/emacs/ | 
|         |    398 // | 
|         |    399 //      I use the old scala-tool support for Emacs distributed at | 
|         |    400 // | 
|         |    401 //         https://github.com/scala/scala-tool-support/tree/master/tool-support/emacs  | 
|         |    402 // | 
|         |    403 //      but there is also support for the newer Ensime Scala Mode | 
|         |    404 // | 
|         |    405 //         http://ensime.org/editors/emacs/scala-mode/    | 
|         |    406 //    | 
|         |    407 // There is also Scala support in the Atom editor, but my | 
|         |    408 // experience is mixed. People also use Scala with Vim and Jedit. | 
|         |    409 // | 
|         |    410 // All of the IDEs above support a REPL for Scala. Some of them have | 
|         |    411 // the very nifty feature of a Scala Worksheet -- you just save your | 
|         |    412 // file and it will be automatically evaluated and the result pasted | 
|         |    413 // into your file. However, this way of writing Scala code never worked | 
|         |    414 // for me. I just use the REPL. | 
|         |    415 // | 
|         |    416 // | 
|         |    417 // Scala Library Docs | 
|    363 // |    418 // | 
|    364 //  http://www.scala-lang.org/api/current/ |    419 //  http://www.scala-lang.org/api/current/ | 
|    365  |    420 // | 
|    366 // tutorials |    421 // Scala Tutorials | 
|    367 // |    422 // | 
|    368 //  http://docs.scala-lang.org/tutorials/ |    423 //  http://docs.scala-lang.org/tutorials/ | 
|         |    424 // | 
|         |    425 // There are also a massive number of Scala tutorials on youtube | 
|         |    426 // and there are tons of books and free material. | 
|         |    427 // | 
|         |    428  | 
|         |    429  |