public static void Day16SolutionB() { string pathdata = "Adventday16.txt"; Day16Dancing sut = new Day16Dancing(); string state0 = "abcdefghijklmnop"; Dictionary <string, string> transforms = new Dictionary <string, string>(); var rows = DataTools.ReadAllLines(pathdata); var cmds0 = rows[0].Split(new char[] { ',' }); List <Command> cmds = new List <Command>(); foreach (var cmd0 in cmds0) { cmds.Add(Command.CreateCmd(cmd0)); } var chars = state0.ToCharArray(); string key; string stateEnd; for (int i = 0; i < 1000000000; i++) { key = string.Join(string.Empty, chars); if (transforms.ContainsKey(key)) { chars = transforms[key].ToCharArray(); } else { foreach (var cmd in cmds) { chars = sut.ProcessCmd(chars, 16, cmd); } stateEnd = string.Join(string.Empty, chars); transforms.Add(key, stateEnd); } if (i % 100000 == 0) { stateEnd = string.Join(string.Empty, chars); Console.WriteLine($"S: {stateEnd}, iter: {i}"); } } string state1 = string.Join(string.Empty, chars); Console.WriteLine($"S: {state1}, iter: end"); }
public void Day16_TestRun06() { string state0 = "abcde"; List <string> cmds = new List <string>(); cmds.Add("s1"); cmds.Add("x3/4"); cmds.Add("pe/b"); var chars = state0.ToCharArray(); foreach (var cmd in cmds) { chars = sut.ProcessCmd(chars, 5, cmd); } string state1 = string.Join(string.Empty, chars); Assert.AreEqual("baedc", state1); }