Advertisement
Equd

AdventOfCode2017-Day08

Dec 8th, 2017
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.92 KB | None | 0 0
  1. class Program
  2. {        
  3.         static void Main(string[] args)
  4.         {  
  5.             var reg = new Register();
  6.  
  7.             bool perform = false;
  8.  
  9.             foreach(var line in Properties.Resources.TextFile1.Split('\n'))
  10.             {
  11.                 var tabs = line.Trim().Split(' ');
  12.                 switch (tabs[5])
  13.                 {
  14.                     case "<=": perform = reg[tabs[4]] <= int.Parse(tabs[6]); break;
  15.                     case ">=": perform = reg[tabs[4]] >= int.Parse(tabs[6]); break;
  16.                     case "==": perform = reg[tabs[4]] == int.Parse(tabs[6]); break;
  17.                     case "<":  perform = reg[tabs[4]] <  int.Parse(tabs[6]); break;
  18.                     case ">":  perform = reg[tabs[4]] >  int.Parse(tabs[6]); break;                    
  19.                     case "!=": perform = reg[tabs[4]] != int.Parse(tabs[6]); break;                    
  20.                     default: throw new NotImplementedException();
  21.                 }
  22.  
  23.                 if (perform && tabs[1] == "inc") reg[tabs[0]] += int.Parse(tabs[2]);
  24.                 else if (perform && tabs[1] == "dec") reg[tabs[0]] -= int.Parse(tabs[2]);
  25.             }
  26.  
  27.             var answerA = reg.answerA;
  28.             var answerB = reg.answerB;
  29.         }
  30.  
  31.  
  32.     public class Register
  33.     {
  34.         private Dictionary<string, int> dic = new Dictionary<string, int>();
  35.  
  36.         public int this[string index]
  37.         {
  38.             get
  39.             {
  40.                 if (!dic.ContainsKey(index))
  41.                     dic.Add(index, 0);
  42.                 return dic[index];
  43.             }
  44.             set
  45.             {
  46.                 if (!dic.ContainsKey(index))
  47.                     dic.Add(index, 0);
  48.                 this.dic[index] = value;
  49.  
  50.                 answerB = Math.Max(this.answerB, value);
  51.             }
  52.         }
  53.  
  54.         public int answerA => dic.Max(x => x.Value);
  55.         public int answerB { get; private set; }        
  56.     }
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement