public IEnumerable <IShuffleAction> MergeWithBelow(IShuffleAction below, BigInteger deckSize) { if (below is DealIntoNewStack) { return new List <IShuffleAction> { below.Copy(), new Cut(MathHelper.Mod(-CutFrom, deckSize)) } } ; if (below is Cut cut) { return new List <IShuffleAction> { new Cut(MathHelper.Mod(CutFrom + cut.CutFrom, deckSize)) } } ; if (below is DealWithIncrement dwi) { return new List <IShuffleAction> { below.Copy(), new Cut(MathHelper.Mod(dwi.Increment * CutFrom, deckSize)) } } ; throw new NotImplementedException(); }
public IEnumerable <IShuffleAction> MergeWithBelow(IShuffleAction below, BigInteger deckSize) { if (below is DealIntoNewStack) { return new List <IShuffleAction> { new DealWithIncrement(MathHelper.Mod(-Increment, deckSize)), new Cut(1) } } ; if (below is DealWithIncrement dwi) { return new List <IShuffleAction> { new DealWithIncrement(MathHelper.Mod(Increment * dwi.Increment, deckSize)) } } ; if (below is Cut cut) { throw new NotImplementedException("not implemented for Cut below, shouldn't be necessary though"); } throw new NotImplementedException(); }