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