Used IntegerRange from HelperClasses in solutions for day 02
This commit is contained in:
parent
33eb7322a8
commit
3888fd23a8
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue