Created
January 10, 2017 14:14
-
-
Save musicm122/e996bb1ca5b6f4affc128748b0c9cf20 to your computer and use it in GitHub Desktop.
FSharpKoansStock_In_CSharp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//https://github.com/ChrisMarinos/FSharpKoans/blob/fsharp/FSharpKoans/AboutTheStockExample.fs#L34 | |
void Main() | |
{ | |
var result1 = Sol1(stockData); | |
var result2 = Sol2(stockData.Skip(1).ToArray()); | |
result1.Dump(); | |
result2.Dump(); | |
} | |
public class Row | |
{ | |
public string DOE { get; set; } | |
public float Open { get; set; } | |
public float High { get; set; } | |
public float Low { get; set; } | |
public float Close { get; set; } | |
public float Volume { get; set; } | |
public float AdjClose { get; set; } | |
public float Change() | |
{ | |
return Math.Abs(Open - Close); | |
} | |
} | |
public static string Sol1(string[] stockData) | |
{ | |
var rows = new List<Row>(); | |
for (int i = 1; i < stockData.Length; i++) | |
{ | |
rows.Add(createRowFromCSV(stockData[i])); | |
} | |
float greatestChange = 0; | |
string greatestChangeDoe = string.Empty; | |
for (int i = 0; i < rows.Count(); i++) | |
{ | |
if (rows[i].Change() > greatestChange) | |
{ | |
greatestChange = rows[i].Change(); | |
greatestChangeDoe = rows[i].DOE; | |
} | |
} | |
return greatestChangeDoe; | |
} | |
public static string Sol2(string[] stockData) | |
{ | |
var rows = stockData.Select(x => createRowFromCSV(x)); | |
var diff = rows.Max(r => r.Change()); | |
return rows.Single(x => x.Change() == diff).DOE; | |
} | |
public static Row createRowFromCSV(string csvLine) | |
{ | |
var rowData = csvLine.Split(','); | |
return new Row | |
{ | |
DOE = rowData[0], | |
Open = float.Parse(rowData[1]), | |
High = float.Parse(rowData[2]), | |
Low = float.Parse(rowData[3]), | |
Close = float.Parse(rowData[4]), | |
Volume = float.Parse(rowData[5]), | |
AdjClose = float.Parse(rowData[6]) | |
}; | |
} | |
static string[] stockData = new string[]{ | |
"Date,Open,High,Low,Close,Volume,Adj Close" , | |
"2012-03-30,32.40,32.41,32.04,32.26,31749400,32.26" , | |
"2012-03-29,32.06,32.19,31.81,32.12,37038500,32.12" , | |
"2012-03-28,32.52,32.70,32.04,32.19,41344800,32.19" , | |
"2012-03-27,32.65,32.70,32.40,32.52,36274900,32.52" , | |
"2012-03-26,32.19,32.61,32.15,32.59,36758300,32.59" , | |
"2012-03-23,32.10,32.11,31.72,32.01,35912200,32.01" , | |
"2012-03-22,31.81,32.09,31.79,32.00,31749500,32.00" , | |
"2012-03-21,31.96,32.15,31.82,31.91,37928600,31.91" , | |
"2012-03-20,32.10,32.15,31.74,31.99,41566800,31.99" , | |
"2012-03-19,32.54,32.61,32.15,32.20,44789200,32.20" , | |
"2012-03-16,32.91,32.95,32.50,32.60,65626400,32.60" , | |
"2012-03-15,32.79,32.94,32.58,32.85,49068300,32.85" , | |
"2012-03-14,32.53,32.88,32.49,32.77,41986900,32.77" , | |
"2012-03-13,32.24,32.69,32.15,32.67,48951700,32.67" , | |
"2012-03-12,31.97,32.20,31.82,32.04,34073600,32.04" , | |
"2012-03-09,32.10,32.16,31.92,31.99,34628400,31.99" , | |
"2012-03-08,32.04,32.21,31.90,32.01,36747400,32.01" , | |
"2012-03-07,31.67,31.92,31.53,31.84,34340400,31.84" , | |
"2012-03-06,31.54,31.98,31.49,31.56,51932900,31.56" , | |
"2012-03-05,32.01,32.05,31.62,31.80,45240000,31.80" , | |
"2012-03-02,32.31,32.44,32.00,32.08,47314200,32.08" , | |
"2012-03-01,31.93,32.39,31.85,32.29,77344100,32.29" , | |
"2012-02-29,31.89,32.00,31.61,31.74,59323600,31.74" | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment