Пример #1
0
 public bool Equals(Day22Input other)
 {
     return
         (Player1.Count == other.Player1.Count &&
          Player2.Count == other.Player2.Count &&
          Player1.Zip(other.Player1).All(it => it.First == it.Second) &&
          Player2.Zip(other.Player2).All(it => it.First == it.Second));
 }
Пример #2
0
        internal static long PlayCombat(Day22Input initialState)
        {
            var result = Produce.Forever(initialState,
                                         state =>
            {
                var z         = state.Player1.Zip(state.Player2).ToList();
                var nextState = z.Aggregate((player1: state.Player1.Skip(z.Count).ToList(), player2: state.Player2.Skip(z.Count).ToList()), (accumulator, current) =>
                {
                    current.First.Should().NotBe(current.Second);
                    if (current.First > current.Second)
                    {
                        accumulator.player1.AddRange(new [] { current.First, current.Second });
                    }
                    else
                    {
                        accumulator.player2.AddRange(new[] { current.Second, current.First });
                    }

                    return(accumulator);
                });
Пример #3
0
 public void SetUp()
 {
     _solver = new Day22Solver();
     _input  = new Day22Input();
 }