[2022] Utils update
This commit is contained in:
parent
cff59d5939
commit
6f4c1c0685
|
@ -1,4 +1,4 @@
|
|||
namespace AdventOfCode.Utils;
|
||||
namespace AdventOfCode.Utils.Extensions;
|
||||
|
||||
public static class LinqExtensions
|
||||
{
|
||||
|
@ -9,9 +9,11 @@ public static class LinqExtensions
|
|||
/// <param name="startIndex">The first index of the slice</param>
|
||||
/// <param name="endIndex">The index after the last index of the slice</param>
|
||||
/// <returns></returns>
|
||||
public static List<T> Sublist<T>(this List<T> list, int startIndex, int endIndex)
|
||||
public static List<T> Sublist<T>(this List<T> list, int startIndex, int endIndex = default)
|
||||
{
|
||||
List<T> result = new List<T>();
|
||||
if (endIndex == default)
|
||||
endIndex = list.Count;
|
||||
for (int i = startIndex; i < endIndex; i++)
|
||||
result.Add(list[i]);
|
||||
return result;
|
|
@ -0,0 +1,58 @@
|
|||
namespace AdventOfCode.Utils.Extensions;
|
||||
|
||||
public static class MathExtensions
|
||||
{
|
||||
public static int Signal(this int x)
|
||||
{
|
||||
return x switch
|
||||
{
|
||||
< 0 => -1,
|
||||
> 0 => 1,
|
||||
_ => 0
|
||||
};
|
||||
}
|
||||
|
||||
public static bool IsDigit(this string s)
|
||||
{
|
||||
try
|
||||
{
|
||||
Convert.ToInt32(s);
|
||||
}
|
||||
catch (FormatException ignored)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static ulong ProductOfMax(this List<ulong> list, int maxCount)
|
||||
{
|
||||
List<ulong> maxList = new List<ulong>(maxCount);
|
||||
|
||||
foreach (ulong number in list)
|
||||
{
|
||||
if (maxList.Count < maxList.Capacity)
|
||||
maxList.Add(number);
|
||||
else
|
||||
if (number > maxList.Min())
|
||||
{
|
||||
maxList.RemoveAt(0);
|
||||
maxList.Add(number);
|
||||
}
|
||||
maxList.Sort();
|
||||
}
|
||||
|
||||
ulong product = 1;
|
||||
maxList.ForEach(n => product*=n);
|
||||
return product;
|
||||
}
|
||||
|
||||
public static int LeastCommonMultiplier(this List<int> list)
|
||||
{
|
||||
int lcm = 1;
|
||||
foreach (int i in list)
|
||||
lcm *= i / MathTools.GreatCommonDivider(lcm, i);
|
||||
return lcm;
|
||||
}
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
namespace AdventOfCode.Utils;
|
||||
|
||||
public static class MathExtensions
|
||||
{
|
||||
public static int Signal(this int x)
|
||||
{
|
||||
return x switch
|
||||
{
|
||||
< 0 => -1,
|
||||
> 0 => 1,
|
||||
_ => 0
|
||||
};
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
namespace AdventOfCode.Utils;
|
||||
|
||||
public static class MathTools
|
||||
{
|
||||
public static int GreatCommonDivider(int x, int y)
|
||||
{
|
||||
if (x % y == 0)
|
||||
return y;
|
||||
return GreatCommonDivider(y, x % y);
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
using AdventOfCode.Utils;
|
||||
using AdventOfCode.Utils.Extensions;
|
||||
|
||||
namespace AdventOfCode.Year2022;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
using AdventOfCode.Utils;
|
||||
using AdventOfCode.Utils.Extensions;
|
||||
|
||||
namespace AdventOfCode.Year2022;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
using AdventOfCode.Utils;
|
||||
using AdventOfCode.Utils.Extensions;
|
||||
|
||||
namespace AdventOfCode.Year2022;
|
||||
|
||||
|
|
Loading…
Reference in New Issue