Beispiel #1
0
    public override void PartOne()
    {
        var gap     = InputLine.AsInt();
        var buf     = new LinkedList <int>();
        var current = buf.AddLast(0);

        foreach (var i in Enumerable.Range(1, 2017))
        {
            current = current.Repeat(ListExtensions.NextCircular, gap);
            current = buf.AddAfter(current, i);
        }
        WriteLn(current.NextCircular().Value);
    }
Beispiel #2
0
    public override void PartTwo()
    {
        var gap      = InputLine.AsInt();
        var index    = 1;
        var neighbor = 1;
        var size     = 2;

        foreach (var i in Enumerable.Range(2, 50_000_000 - 1))
        {
            index = (index + gap) % size + 1;
            if (index == 1)
            {
                neighbor = i;
            }
            size++;
        }
        WriteLn(neighbor);
    }
Beispiel #3
0
            public List <int> AsInts()
            {
                StringReader stringReader = new StringReader(InputLines);
                List <int>   parsedInts   = new List <int>();

                while (true)
                {
                    string line = stringReader.ReadLine();

                    if (line != null)
                    {
                        InputLine inputLine = new InputLine(line);
                        parsedInts.Add(inputLine.AsInt());
                    }
                    else
                    {
                        break;
                    }
                }

                return(parsedInts);
            }
Beispiel #4
0
 public Day11()
 {
     Serial = InputLine.AsInt();
     Part   = 2;
 }