Untitled

 avatar
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