protected bool Matches(DiceRoll roll, int length) { // Remove duplicates by going through set var values = roll.AsSet().ToList(); values.Sort(); var last = -1; var count = 0; foreach (var val in values) { if (val - last == 1) { count++; if (count == length - 1) { return(true); } } else { count = 0; } last = val; } return(false); }
public void Assign(DiceRoll roll) { if (assigned.Value) { throw new ArgumentException(); } else { score.Value = category.Score(roll); assigned.Value = true; } }
public override int Score(DiceRoll roll) { return(Matches(roll) ? roll.AsList().Sum() : 0); }
protected bool Matches(DiceRoll roll) { return(roll.AsFrequencyTable().Frequencies.Any(f => f >= n)); }
public override int Score(DiceRoll roll) { return(roll.AsFrequencyTable()[n] * n); }
public override int Score(DiceRoll roll) { return(roll.AsList().Sum()); }
public override int Score(DiceRoll roll) { return(Matches(roll, 5) ? 40 : 0); }
public abstract int Score(DiceRoll roll);
private bool Matches(DiceRoll roll) { var freqs = new HashSet <int>(roll.AsFrequencyTable().Frequencies); return((freqs.Contains(2) && freqs.Contains(3)) || freqs.Contains(5)); }