Exemplo n.º 1
0
        public object Part2(IParsedFile file)
        {
            var adapters = file.ToList <int>();

            adapters.Add(0);
            adapters.Sort();
            adapters.Add(adapters[^ 1] + 3);
Exemplo n.º 2
0
        public object Part1(IParsedFile file)
        {
            var numbers = file.ToList <int>();
            var match   = numbers.First(number => numbers.IndexOf(2020 - number) != -1);

            return(match * (2020 - match));
        }
Exemplo n.º 3
0
        public object Part2(IParsedFile file)
        {
            const ulong invalid = 375054920UL;
            var         numbers = file.ToList <string>().Select(ulong.Parse).ToArray();
            var         prefix  = new BigInteger[numbers.Length];

            prefix[0] = numbers[0];
            for (int i = 1; i < numbers.Length; i++)
            {
                prefix[i] = prefix[i - 1] + numbers[i];
            }
            for (int i = 0; i < numbers.Length; i++)
            {
                for (int j = i + 1; j < numbers.Length; j++)
                {
                    if (prefix[j] - prefix[i] == invalid)
                    {
                        var segment = numbers.Skip(i + 1).Take(j - i);
                        Debug.Assert(segment.Aggregate(0UL, (a, c) => a + c) == invalid);
                        return(segment.Min() + segment.Max());
                    }
                }
            }

            return(null);
        }
Exemplo n.º 4
0
        public object Part1(IParsedFile file)
        {
            var adapters = file.ToList <int>();

            adapters.Add(adapters.Max() + 3);
            adapters.Add(0);
            adapters.Sort();
            var enumer = adapters.Zip(adapters.Skip(1)).Select((x) => x.Second - x.First);

            return(enumer.Count(x => x == 1) * enumer.Count(x => x == 3));
        }
Exemplo n.º 5
0
        public object Part1(IParsedFile file)
        {
            var numbers = file.ToList <string>().Select(ulong.Parse).ToArray();

            for (int i = 25; i < numbers.Length; i++)
            {
                var seg = new ArraySegment <ulong>(numbers, i - 25, 25);
                if (GetSums(seg).All(x => x != numbers[i]))
                {
                    return(numbers[i]);
                }
            }
            throw new Exception();
        }
Exemplo n.º 6
0
        public object Part2(IParsedFile file)
        {
            var numbers = file.ToList <int>();

            for (int x = 0; x < numbers.Count; x++)
            {
                for (int y = x + 1; y < numbers.Count; y++)
                {
                    for (int z = y + 1; z < numbers.Count; z++)
                    {
                        if (numbers[x] + numbers[y] + numbers[z] == 2020)
                        {
                            return(numbers[x] * numbers[y] * numbers[z]);
                        }
                    }
                }
            }

            throw new Exception();
        }
Exemplo n.º 7
0
        public object Part1(IParsedFile file)
        {
            string[] rows = file.ToList <string>().ToArray();
            int      x = 0, y = 0;
            var      count = 0;

            while (y < rows.Length)
            {
                if (rows[y][x] == '#')
                {
                    count++;
                }
                x += 3;
                if (x >= rows[y].Length)
                {
                    x %= rows[y].Length;
                }
                y++;
            }

            return(count);
        }