add level 3 and backport textparser changes

This commit is contained in:
2024-12-04 12:47:10 +01:00
parent 377ef9afe8
commit 5b9ad5766b
10 changed files with 208 additions and 9 deletions

View File

@@ -0,0 +1,37 @@
namespace AoC24.Common;
using AoCLevelInputProvider;
using Parsing;
using Parsing.Schema;
using Parsing.Tokenization;
public abstract class FragmentLevelSolverBase
{
public abstract int LevelNumber { get; }
private int Year = 2024;
private LevelInputProvider inputProvider = new LevelInputProvider();
protected string GetLevelInput()
{
return inputProvider.WithYear(this.Year).WithLevel(this.LevelNumber).Provide();
}
public abstract string SolveFirstStar();
public abstract string SolveSecondStar();
protected abstract FragmentSchemaBuilder DefineInputSchema(FragmentSchemaBuilder schemaBuilder);
public TokenConverter GetData()
{
FragmentSchemaBuilder schemaBuilder = new FragmentSchemaBuilder();
var schema = this.DefineInputSchema(schemaBuilder).Build();
var parser = TextParser.Create(schema);
var data = parser
.SetInputText(this.GetLevelInput())
.Parse();
return data;
}
}

View File

@@ -5,7 +5,7 @@ using Parsing;
using Parsing.Schema;
using Parsing.Tokenization;
public abstract class LevelSolverBase
public abstract class FullTextLevelSolverBase
{
public abstract int LevelNumber { get; }
private int Year = 2024;
@@ -24,10 +24,10 @@ public abstract class LevelSolverBase
public TokenConverter GetData()
{
var schemaBuilder = new InputSchemaBuilder();
InputSchemaBuilder schemaBuilder = new InputSchemaBuilder();
var schema = this.DefineInputSchema(schemaBuilder).Build();
var parser = new TextParser(schema);
var parser = TextParser.Create(schema);
var data = parser
.SetInputText(this.GetLevelInput())
.Parse();