aboutsummaryrefslogtreecommitdiff
path: root/challenge-291/jtimothyking/csharp/ch-1.cs
blob: f4e495201596a36f2d635503e206c01498cbe29f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
namespace ch_1;

public static class Ch1
{
    public static void Main(string[] args)
    {
        var ints = args.Select(int.Parse).ToArray();
        var middleIndex = ints.LeftRightSums()
            .Select((sums, idx) => (sums, idx))
            .FirstOrDefault(x => x.sums.leftSum == x.sums.rightSum,
                defaultValue: (sums: (leftSum: 0, rightSum: 0), idx: -1))
            .idx;
        Console.WriteLine(middleIndex);
    }

    private static IEnumerable<(int leftSum, int rightSum)> LeftRightSums(this int[] ints)
    {
        var totalSum = ints.Sum();
        var leftSum = 0;
        foreach (var item in ints)
        {
            var rightSum = totalSum - leftSum - item;
            yield return (leftSum, rightSum);
            leftSum += item;
        }
    }
}