Skip to content

Chain parser #768

Closed
Closed
@kyoyama-kazusa

Description

@kyoyama-kazusa

Implement ChainFormatInfo.ParseCore method.

Test code:

using System;
using Sudoku.Analytics.Construction.Components;
using Sudoku.Concepts.Coordinates.Formatting;

var str1 = "r4c4(6) == r4c1(6) -- r4c1(8) == r4c9(8) -- r9c9(8) == r9c4(8)";
var str2 = "(6)r4c4=(6-8)r4c1=(8)r4c9-(8)r9c9=(8)r9c4";
var str3 = "6r4c4=(6-8)r4c1=8r4c9-8r9c9=8r9c4";
var str4 = "r3c3(1) == r3c3(2) -- r3c4(2) == r3c4(3) -- r4c4(3) == r4c4(4) -- r4c3(4) == r4c3(1) -- r3c3(1)";
var str5 = "(1=2)r3c3-(2=3)r3c4-(3=4)r4c4-(4=1)r4c3-1r3c3";
var chain1 = Chain.Parse(str1, ChainFormatInfo.Standard);
var chain2 = Chain.Parse(str2, ChainFormatInfo.Eureka);
var chain3 = Chain.Parse(str3, ChainFormatInfo.Eureka);
var chain4 = Chain.Parse(str4, ChainFormatInfo.Eureka);
var chain5 = Chain.Parse(str5, ChainFormatInfo.Eureka);
Console.WriteLine(chain1.GetType().Name); // AlternatingInferenceChain
Console.WriteLine(chain2.GetType().Name); // AlternatingInferenceChain
Console.WriteLine(chain3.GetType().Name); // AlternatingInferenceChain
Console.WriteLine(chain4.GetType().Name); // ContinuousNiceLoop
Console.WriteLine(chain5.GetType().Name); // ContinuousNiceLoop
Console.WriteLine(chain1.ToString(ChainFormatInfo.Eureka)); // 6r4c4=(6-8)r4c1-8r4c9=8r9c9-8r9c4
Console.WriteLine(chain2.ToString(ChainFormatInfo.Eureka)); // 6r4c4=(6-8)r4c1-8r4c9=8r9c9-8r9c4
Console.WriteLine(chain3.ToString(ChainFormatInfo.Eureka)); // 6r4c4=(6-8)r4c1-8r4c9=8r9c9-8r9c4
Console.WriteLine(chain4.ToString(ChainFormatInfo.Eureka)); // (4-1)r4c3=(1-2)r3c3=(2-3)r3c4=(3-4)r4c4=4r4c3
Console.WriteLine(chain5.ToString(ChainFormatInfo.Eureka)); // (4-1)r4c3=(1-2)r3c3=(2-3)r3c4=(3-4)r4c4=4r4c3

To-do list:

  • Basic format: a == b -- c == d
  • Eureka format
    • aA=bB-cC=dD
    • aA=(b-c)B=dC-(e-f)D
  • Continuous nice loop aA-bB=cC-dD

Metadata

Metadata

Labels

Area-APIThe issue is bound with APIs.Kind-featureThe new feature to support it!

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions