private long Part2Returner(CardDeck deck, DeckCommandArray commands) { // This takes literal millenia to execute; I cannot figure out what to do so here goes // F**k math and Project Euler integrations in AoC // This will never be changed; as this is how far AoC should go const long cardCount = 119315717514047; const long repetitions = 101741582076661; const long desiredPosition = 2020; long uniqueIterations = 0; long currentPosition = 2020; do { currentPosition = commands.FindStartingPosition(currentPosition, cardCount); uniqueIterations++; }while (desiredPosition != currentPosition); long remainingIterations = repetitions % uniqueIterations; for (int i = 0; i < remainingIterations; i++) { currentPosition = commands.FindStartingPosition(currentPosition, cardCount); } return(currentPosition); }
private T General <T>(Returner <T> returner) { const int cardCount = 10007; var deck = new CardDeck(cardCount); var lines = FileLines; var commands = new DeckCommandArray(lines.Select(l => DeckCommand.Parse(l)).ToArray()); return(returner(deck, commands)); }
private int Part1Returner(CardDeck deck, DeckCommandArray commands) { commands.ApplyAll(deck); return(deck.PositionOfCard(2019)); }