diff -r 7a5a29a32568 -r ab77f6006f1f progs/trade.scala --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/progs/trade.scala Sat Nov 05 17:11:47 2016 +0000 @@ -0,0 +1,66 @@ + + +val trades = List(28.0, 18.0, 20.0, 26.0, 24.0) + +def trade_times(xs: List[Double]): (Int, Int) = { + val low = xs.min + val low_index = xs.indexOf(low) + val rest = xs.drop(low_index) + val high = rest.max + val high_index = rest.indexOf(high) + (low_index, low_index + high_index) +} + + +trade_times(trades) + +assert(trade_times(List(10.0, 8.0, 7.0, 6.0)) == (3, 3), "the first test fails") + + + +import io.Source +import scala.util._ + +def get_page(url: String): List[String] = { + Try(Source.fromURL(url)("ISO-8859-1").getLines.toList). + getOrElse { println(s" Problem with: $url"); List() } +} + +def process_page(url: String): List[(String, Double)] = { + get_page(url).drop(1).map(_.split(",").toList).map((xs) => (xs(0), xs(6).toDouble)) +} + +def query_comp(name: String): (Int, Int) = { + val list = process_page("""http://ichart.yahoo.com/table.csv?s=""" + name) + trade_times(list.reverse.map(_._2)) +} + + +val indices = List("GOOG", "AAPL", "MSFT", "IBM", "FB", "YHOO", "AMZN", "BIDU") + +indices.map(query_comp(_)) + +val appl_page = get_page("""http://ichart.yahoo.com/table.csv?s=GOOG""") +val goog_page = get_page("""http://ichart.yahoo.com/table.csv?s=GOOG""") +goog_page.length + +val pairs = goog_page.drop(1).map(_.split(",").toList).map((xs:List[String]) => (xs(0), xs(6).toDouble)) + +pairs.map(_._2) + +trade_times(pairs.reverse.map(_._2)) + +pairs(3067) +pairs(11) + + +/* +scala trade.scala 2> /dev/null || echo "command1 borked it" + +command1 +if [ $? -ne 0 ]; then + echo "command1 borked it" +fi +*/ + +