using D21._1; using static D21._1.Program; using System; using System.IO; using System.Linq; namespace D21._2 { class Program { static void Main(string[] args) { var scrambling = "fbgdceah".ToCharArray(); using (var f = new R(File.OpenText(args[0]).BaseStream)) { var file = f.ReadToEnd().Split(new [] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries).Reverse(); foreach (string line in file) { if (line.StartsWith("swap position ")) { var i = int.Parse(line.Split(" ")[2]); var j = int.Parse(line.Split(" ")[5]); scrambling = Swap(scrambling, i, j); } else if (line.StartsWith("swap letter ")) { var i = line.Split(" ")[2][0]; var j = line.Split(" ")[5][0]; scrambling = Swap(scrambling, i, j); } else if (line.StartsWith("rotate right ")) { var i = int.Parse(line.Split(" ")[2]); scrambling = RotateLeft(scrambling, i); } else if (line.StartsWith("rotate left ")) { var i = int.Parse(line.Split(" ")[2]); scrambling = RotateRight(scrambling, i); } else if (line.StartsWith("rotate based on position of letter ")) { var index = IndexOf(scrambling, line.Last()); if (index == -1) throw new Exception(); var scramblingS = scrambling.Clone() as char[]; while (Rotate(scrambling, line.Last()).SequenceEqual(scramblingS) == false) scrambling = RotateLeft(scrambling, 1); } else if (line.StartsWith("reverse positions ")) { var i = int.Parse(line.Split(" ")[2]); var j = int.Parse(line.Split(" ")[4]); scrambling = Reverse(scrambling, i, j); } else if (line.StartsWith("move position ")) { var i = int.Parse(line.Split(" ")[2]); var j = int.Parse(line.Split(" ")[5]); scrambling = Move(scrambling, j, i); } } } Console.WriteLine(scrambling); } } }