Untitled
unknown
plain_text
5 months ago
4.3 kB
4
Indexable
public static string Input => File.ReadAllText(@"Input.txt"); static void Main(string[] args) { var sections = Input.Split("\r\n\r\n"); var rules = sections.First().Split(new[] { "\r\n", "," }, StringSplitOptions.None) .Select(x => x.Split('|')) .Select(x => new { First = int.Parse(x[0]), Last = int.Parse(x[1]) }) .ToList(); var updates = sections.Last().Split(new[] { "\r\n" }, StringSplitOptions.None) .Select(x => x.Split(',').Select(int.Parse).ToList()) .ToList(); ; var modeUpdes = new List<List<int>>(); foreach (var updateRow in updates) { var isValid = true; var modRow = updateRow; foreach (var rule in rules) { if (modRow.Contains(rule.First) && modRow.Contains(rule.Last)) { if (modRow.IndexOf(rule.First) > modRow.IndexOf(rule.Last)) { var indexFirst = modRow.IndexOf(rule.First); var indexLast = modRow.IndexOf(rule.Last); var tempFirst = modRow[indexFirst]; var tempLast = modRow[indexLast]; modRow[indexFirst] = tempLast; modRow[indexLast] = tempFirst; isValid = false; } } }; if(!isValid) { modeUpdes.Add(modRow); } } var modMiddleNumbers = modeUpdes.Select(update => update[update.Count / 2]).ToList(); var modSafeUpdateSum = modMiddleNumbers.Sum(); Console.WriteLine(modSafeUpdateSum); //DEL 1 //var sections = Input.Split("\r\n\r\n"); //var rules = sections.First().Split(new[] { "\r\n", "," }, StringSplitOptions.None) // .Select(x => x.Split('|')) // .Select(x => new { First = int.Parse(x[0]), Last = int.Parse(x[1]) }) // .ToList(); //var updates = sections.Last().Split(new[] { "\r\n" }, StringSplitOptions.None) // .Select(x => x.Split(',').Select(int.Parse).ToList()) // .ToList(); ; //var safeUpdates = new List<List<int>>(); //var modeUpdes = new List<List<int>>(); //foreach (var updateRow in updates) //{ // var isValid = true; // var modRow = updateRow; // foreach (var rule in rules) // { // if (modRow.Contains(rule.First) && modRow.Contains(rule.Last)) // { // if (modRow.IndexOf(rule.First) > modRow.IndexOf(rule.Last)) // { // var indexFirst = modRow.IndexOf(rule.First); // var indexLast = modRow.IndexOf(rule.Last); // var tempFirst = modRow[indexFirst]; // var tempLast = modRow[indexLast]; // modRow[indexFirst] = tempLast; // modRow[indexLast] = tempFirst; // isValid = false; // } // } // } // if (isValid) // { // safeUpdates.Add(updateRow); // } // else // { // modeUpdes.Add(modRow); // } //} //var middleNumbers = safeUpdates.Select(update => update[update.Count / 2]).ToList(); //var safeUpdateSum = middleNumbers.Sum(); //Console.WriteLine(safeUpdateSum); //var modMiddleNumbers = modeUpdes.Select(update => update[update.Count / 2]).ToList(); //var modSafeUpdateSum = modMiddleNumbers.Sum(); //Console.WriteLine(modSafeUpdateSum); }
Editor is loading...
Leave a Comment