public List <Step> Solve(string raw, Expression e) { sequence = Utils.Sequences.ParseSequence(raw); Expression seconddifference = Utils.Sequences.GetDifference(Utils.Sequences.GetDifference(sequence)).Last(); List <List <Expression> > branches = new List <List <Expression> >(); branches.Add(sequence); branches.Add(Utils.Sequences.GetDifference(sequence)); branches.Add(Utils.Sequences.GetDifference(Utils.Sequences.GetDifference(sequence))); StepData.BranchData bd = new StepData.BranchData(branches); steps.Add(new Step(seconddifference, "get the second difference (" + Infix.Print(seconddifference) + ")", new StepData.BranchData(branches))); t_n = t_n * t_n; steps.Add(new Step(t_n, "must be n^2 in quadratic sequence", t_n)); t_n = t_n * ((seconddifference / 2)); steps.Add(new Step(t_n, "Half the second difference and multiply n^2 with it", t_n)); // Console.WriteLine(Infix.Print(FindOffset(1))); t_n += FindOffset(1); steps.Add(new Step(FindOffset(1), "work out the offset with our current expression and the given sequence", FindOffset(1))); steps.Add(new Step(t_n, "add the offset to our expression", t_n)); int na = 1; StringBuilder sb = new StringBuilder(); while (na != 10) { sb.Append(Infix.Print(Utils.Sequences.GetValueInSequence(t_n, t_n, na)) + ", "); na++; } steps.Add(new Step(null, "Double check: " + sb.ToString())); steps.Add(new Step(t_n, "final answer", t_n)); return(steps); }
public Branch(StepData.BranchData data) { InitializeComponent(); branches = data.branches; Font = data.gd.font; ForeColor = data.gd.fore; BackColor = data.gd.back; }