Skip to content

Instantly share code, notes, and snippets.

View sudipto80's full-sized avatar
🎯
Focusing

Sudipta Mukherjee sudipto80

🎯
Focusing
View GitHub Profile
#r @"C:\Users\mukhsudi\Documents\GitHub\SquirrelLatest\ConsoleApplication2\bin\Debug\TableAPI.dll"
//type NameAndSex = {Name : string ; Sex : string}
type SurvivalStat = {PClass : string; Died : float; Survived :float}
let titanic = Squirrel.DataAcquisition.LoadCSV(@"C:\titanic.csv")
let classes = titanic.SplitOn("Pclass")
let result = new Squirrel.Table()
let pClasses = [|"1";"2";"3"|]
let persons = pClasses |> Array.map ( fun pClass ->
{
@sudipto80
sudipto80 / gist:5c53f9d53c5372cdb4c8
Created October 28, 2014 02:42
Squirrel Example : Live Stock Analytics
//Stock symbols of companies for which you want to run this
string[] symbols = { "AAPL", "GOOG", "MSFT" };
Dictionary<string, Table> stocks = new Dictionary<string, Table>();
string template = @"http://real-chart.finance.yahoo.com/table.csv?s=[Symbol]&d=8&e=4&f=2014&g=d&a=0&b=2&c=1962&ignore=.csv";
foreach (var symb in symbols)
{
WebClient wc = new WebClient();
wc.DownloadFile(template.Replace("[Symbol]", symb), "temp" + symb + ".csv");
stocks.Add(symb, DataAcquisition.LoadCSV("temp" + symb + ".csv").Top(30));
}
@sudipto80
sudipto80 / gist:98f6d3add50e9cfd3900
Created October 28, 2014 02:39
Squirrel Example : Finding Gender Ration in North America
Table births = DataAcquisition.LoadCSV(@"..\..\births.csv");
var splits = births.SplitOn("sex");
var boys = splits["boy"].Aggregate("state").Drop("year");
var girls = splits["girl"].Aggregate("state").Drop("year");
Table combined = new Table();
combined.AddColumn("State", boys["state"]);
combined.AddColumn("Boys", boys["births"]);
@sudipto80
sudipto80 / gist:f307ed836b57d9bdce3e
Created October 28, 2014 02:36
Squirrel Example : Iris dataset Aggregation
Table iris = DataAcquisition.LoadCSV(@"iris.csv");
StringBuilder builder = new StringBuilder();
builder.AppendLine("<html>");
builder.AppendLine("<h2>Range</h2>");
builder.AppendLine(iris.Aggregate("Name", AggregationMethod.Range).ToHTMLTable());
builder.AppendLine("<h2>Average</h2>");
builder.AppendLine(iris.Aggregate("Name", AggregationMethod.Average).ToHTMLTable());
@sudipto80
sudipto80 / gist:5e40eca9efac900314c6
Created October 28, 2014 02:01
Squirrel Example : Finding whether women are more generaous than men while paying tip
//Problem : Locate average percentage of Tip paid by men and women from tips.csv
//Done in 3 lines of C# code using Squirrel.NET
//Loading the data to Squirrel.NET Table is easy
Table tips = DataAcquisition.LoadCSV(@"..\..\tips.csv");
//Add a new column based on the formula
tips.AddColumn(columnName: "tip%", formula: "[tip]*100/[totbill]", decimalDigits: 3);
@sudipto80
sudipto80 / gist:1d96feab131cc03c7cb4
Created October 10, 2014 08:47
Peter Norvig's Spell Checker (using List Comprehension in LINQ)
//Peter Norvig's Spell Check
Dictionary<string,int> NWords = new Dictionary<string,int>();
public IEnumerable<string> Edits1(string word)
{
char[] alphabet = {'a','b','c','d','e','f','g','h','j','k','l','m','n','o',
'p','q','r','s','t','u','v','w','x','y','z'};
var splits = Enumerable.Range(1,word.Length).Select(i => new {First = new string(word.ToCharArray().Take(i).ToArray()),
Second = new string(word.ToCharArray().Skip(i).ToArray())});
var deletes = splits.Where (split => !string.IsNullOrEmpty(split.Second)).Select (split => split.First + split.Second.Substring(1));
@sudipto80
sudipto80 / gist:6194ecce24861d2b3474
Created October 10, 2014 08:46
Lazy Fibonacci and Friends
public static class SequenceEx
{
public static IEnumerable<T> StartWith<T>(params T[] seeds)
{
return new List<T>(seeds).AsEnumerable();
}
public static IEnumerable<T> ThenFollow<T>(this IEnumerable<T> thisSequence,
Func<T,T,T> rule) where T:IEquatable<T>
{
@sudipto80
sudipto80 / gist:ccb75622b3f83b33b3f1
Created October 10, 2014 08:44
Armstrong DSL ( You need Evaluant LINQ Compiler)
public static class IntEx
{
public static int Cube(this int number)
{
return number * number * number;
}
public static int Square(this int number)
{
return number * number;
}
@sudipto80
sudipto80 / gist:3c286e7167e99dc6a6bc
Created October 10, 2014 08:40
Meta Programming using Roslyn (Finding all Local Variables for all the methods)
SyntaxTree tree = SyntaxTree.ParseText(@"int fun(int x){ int y = 0; x++; return x+1;}
double funny(double x){ int s = 3; double t = 4; return x + s * t/2.13;}");
List<MethodDeclarationSyntax> methods = tree.GetRoot()
.DescendantNodes()
.Where(d => d.Kind == SyntaxKind.MethodDeclaration)
.Cast<MethodDeclarationSyntax>()
.ToList();
methods.Select(z => new { MethodName = z.Identifier.ValueText,
@sudipto80
sudipto80 / gist:824c84bac10a9e1e3780
Created October 10, 2014 08:39
Meta Programming using Roslyn (Finding LoC for all the methods)
SyntaxTree tree = SyntaxTree.ParseText(@"int fun(int x){ int y = 10; x++;
if(x>20) x -= y; return x+1;}
double funny(double x){ int s = 3; double t = 4;
return x + s * t/2.13;}");
List<MethodDeclarationSyntax> methods = tree.GetRoot()
.DescendantNodes()
.Where(d => d.Kind == SyntaxKind.MethodDeclaration)
.Cast<MethodDeclarationSyntax>().ToList();