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)); }
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); });
public void SetUp() { _solver = new Day22Solver(); _input = new Day22Input(); }