Skip to content

Instantly share code, notes, and snippets.

@namin
Created September 18, 2019 18:34
Show Gist options
  • Save namin/5521a62380273045c516fb9cfb054b3e to your computer and use it in GitHub Desktop.
Save namin/5521a62380273045c516fb9cfb054b3e to your computer and use it in GitHub Desktop.
FlashFill Command Line
using System;
using System.Collections.Generic;
using Microsoft.ProgramSynthesis.Transformation.Text;
using Microsoft.ProgramSynthesis.Transformation.Text.Semantics;
using Microsoft.ProgramSynthesis.Wrangling.Constraints;
namespace FlashFillCmdLine
{
class FlashFillCmdLine
{
static void Main(string[] args)
{
List<Constraint<IRow, object>> constraints = new List<Constraint<IRow, object>>();
string line;
Program program = null;
while ((line = readLine("from: ")) != null)
{
string expected = readLine("to : ");
if (program != null) {
string output = program.Run(new InputRow(line)) as string;
if (expected==output)
{
Console.WriteLine("Done learning!");
break;
} else
{
Console.WriteLine("Predicted wrong: " + output);
Console.WriteLine("Continue learning!");
}
}
constraints.Add(new Example(new InputRow(line), expected));
program = Learner.Instance.Learn(constraints);
}
List<string> outputs = new List<string>();
while ((line = readLine("from: ")) != null)
{
string output = program.Run(new InputRow(line)) as string;
Console.WriteLine("to : "+output);
outputs.Add(output);
}
Console.WriteLine("");
Console.WriteLine("# All Outputs #");
foreach (string output in outputs)
{
Console.WriteLine(output);
}
}
private static string readLine(string msg)
{
Console.Write(msg);
return Console.ReadLine();
}
private static bool yes()
{
string line = readLine("ok? [y/N] ");
return line != null && line.StartsWith("y", StringComparison.CurrentCulture);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment