| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- namespace Day19;
- public class PartRange
- {
- private readonly IDictionary<string, Range> _dict;
-
- public PartRange()
- {
- _dict = new Dictionary<string, Range>
- {
- ["x"] = new Range(1, 4000),
- ["m"] = new Range(1, 4000),
- ["a"] = new Range(1, 4000),
- ["s"] = new Range(1, 4000),
- };
- }
-
- private PartRange(PartRange original)
- {
- _dict = new Dictionary<string, Range>(original._dict);
- }
- public Range Get(string property)
- {
- return _dict[property];
- }
- public PartRange Update(string property, Range range)
- {
- var copy = new PartRange(this);
- copy._dict[property] = range;
- return copy;
- }
- public long Total()
- {
- return Get("x").Size
- * Get("m").Size
- * Get("a").Size
- * Get("s").Size;
- }
- public override string ToString()
- {
- return $"x = {Get("x")}, m = {Get("m")}, a = {Get("a")}, s = {Get("s")}, ";
- }
- }
|