|
1 |
|
2 |
|
3 val trades = List(28.0, 18.0, 20.0, 26.0, 24.0) |
|
4 |
|
5 def trade_times(xs: List[Double]): (Int, Int) = { |
|
6 val low = xs.min |
|
7 val low_index = xs.indexOf(low) |
|
8 val rest = xs.drop(low_index) |
|
9 val high = rest.max |
|
10 val high_index = rest.indexOf(high) |
|
11 (low_index, low_index + high_index) |
|
12 } |
|
13 |
|
14 |
|
15 trade_times(trades) |
|
16 |
|
17 assert(trade_times(List(10.0, 8.0, 7.0, 6.0)) == (3, 3), "the first test fails") |
|
18 |
|
19 |
|
20 |
|
21 import io.Source |
|
22 import scala.util._ |
|
23 |
|
24 def get_page(url: String): List[String] = { |
|
25 Try(Source.fromURL(url)("ISO-8859-1").getLines.toList). |
|
26 getOrElse { println(s" Problem with: $url"); List() } |
|
27 } |
|
28 |
|
29 def process_page(url: String): List[(String, Double)] = { |
|
30 get_page(url).drop(1).map(_.split(",").toList).map((xs) => (xs(0), xs(6).toDouble)) |
|
31 } |
|
32 |
|
33 def query_comp(name: String): (Int, Int) = { |
|
34 val list = process_page("""http://ichart.yahoo.com/table.csv?s=""" + name) |
|
35 trade_times(list.reverse.map(_._2)) |
|
36 } |
|
37 |
|
38 |
|
39 val indices = List("GOOG", "AAPL", "MSFT", "IBM", "FB", "YHOO", "AMZN", "BIDU") |
|
40 |
|
41 indices.map(query_comp(_)) |
|
42 |
|
43 val appl_page = get_page("""http://ichart.yahoo.com/table.csv?s=GOOG""") |
|
44 val goog_page = get_page("""http://ichart.yahoo.com/table.csv?s=GOOG""") |
|
45 goog_page.length |
|
46 |
|
47 val pairs = goog_page.drop(1).map(_.split(",").toList).map((xs:List[String]) => (xs(0), xs(6).toDouble)) |
|
48 |
|
49 pairs.map(_._2) |
|
50 |
|
51 trade_times(pairs.reverse.map(_._2)) |
|
52 |
|
53 pairs(3067) |
|
54 pairs(11) |
|
55 |
|
56 |
|
57 /* |
|
58 scala trade.scala 2> /dev/null || echo "command1 borked it" |
|
59 |
|
60 command1 |
|
61 if [ $? -ne 0 ]; then |
|
62 echo "command1 borked it" |
|
63 fi |
|
64 */ |
|
65 |
|
66 |