Used IntegerRange from HelperClasses in solutions for day 02

This commit is contained in:
Buddhism8003 2025-12-14 14:57:31 +01:00
parent 33eb7322a8
commit 3888fd23a8
1 changed files with 11 additions and 20 deletions

View File

@ -1,5 +1,6 @@
using System.Text.RegularExpressions;
using AdvenOfCode.Contracts;
using AdventOfCode.HelperClasses;
namespace AoC_2025;
@ -47,8 +48,8 @@ public partial class Day02 : IPuzzleSolver<long>
private IEnumerable<long> FindInvalidIds(string range)
{
var (start, end) = Parse(range);
var halvableIds = FindHalvableIds(start, end);
var ids = Parse(range);
var halvableIds = FindHalvableIds(ids);
var invalidIds = GetInvalidIds(halvableIds);
return invalidIds;
}
@ -65,31 +66,30 @@ public partial class Day02 : IPuzzleSolver<long>
private IEnumerable<long> FindAllInvalidIds(string range, Regex regex)
{
var (start, end) = Parse(range);
var invalidIds = Range(start, end)
var ids = Parse(range);
var invalidIds = ids
.Where(id => regex.IsMatch(id.ToString()));
return invalidIds;
}
private IEnumerable<long> FindInvalidSegmentedIds(string range)
{
var (start, end) = Parse(range);
var idsAsAllSegments = GetIdAsAllSegments(start, end);
var ids = Parse(range);
var idsAsAllSegments = GetIdAsAllSegments(ids);
var invalidIdSegments = FindIdsWhereAllSegmentsAreEqual(idsAsAllSegments);
var invalidIds = MergeSegments(invalidIdSegments);
var invalidIdNumbers = invalidIds.Select(id => long.Parse(id));
return invalidIdNumbers;
}
private (long start, long end) Parse(string range)
private IntegerRange Parse(string range)
{
var parts = range.Split('-', StringSplitOptions.RemoveEmptyEntries);
return (long.Parse(parts[0]), long.Parse(parts[1]));
return new IntegerRange(long.Parse(parts[0]), long.Parse(parts[1]));
}
private IEnumerable<string> FindHalvableIds(long start, long end)
private IEnumerable<string> FindHalvableIds(IntegerRange ids)
{
var ids = Range(start, end);
var idStrings = ids.Select(id => id.ToString());
var halvableIds = idStrings.Where(id => (id.Length % 2) == 0);
return halvableIds;
@ -102,18 +102,9 @@ public partial class Day02 : IPuzzleSolver<long>
var invalidNumberedIds = invalidIds.Select(id => long.Parse(id.Item1 + id.Item2));
return invalidNumberedIds;
}
private IEnumerable<long> Range(long start, long end)
{
for (var i = start; i <= end; i++)
{
yield return i;
}
}
private IEnumerable<IEnumerable<IEnumerable<string>>> GetIdAsAllSegments(long start, long end)
private IEnumerable<IEnumerable<IEnumerable<string>>> GetIdAsAllSegments(IntegerRange ids)
{
var ids = Range(start, end);
var idStrings = ids.Select(id => id.ToString());
var idSegments = idStrings.Select(id => GetSegments(id));
return idSegments;