Untitled
unknown
plain_text
a year ago
4.3 kB
5
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