Untitled
unknown
csharp
2 years ago
2.8 kB
5
Indexable
var test1 = Part1("test01.txt"); var part1 = Part1("01.txt"); var test2 = Part2("test02.txt"); var part2 = Part2("01.txt"); Console.WriteLine(test1); Console.WriteLine(part1); Console.WriteLine(test2); Console.WriteLine(part2); Console.ReadKey(); static int Part1(string fileName) { var lines = File.ReadAllLines(fileName); var total = 0; foreach (var line in lines) { var curr = 0; for (int i = 0; i < line.Length; i++) { if (char.IsDigit(line[i])) { curr *= 10; curr += line[i] - '0'; break; } } for (int i = line.Length - 1; i >= 0; i--) { if (char.IsDigit(line[i])) { curr *= 10; curr += line[i] - '0'; break; } } total += curr; } return total; } static int Part2(string fileName) { var lines = File.ReadAllLines(fileName); var total = 0; var nums = new Dictionary<string, int> { { "one", 1 }, { "two", 2 }, { "six", 6 }, { "four", 4 }, { "five", 5 }, { "nine", 9 }, { "three", 3 }, { "seven", 7 }, { "eight", 8 } }; foreach (var line in lines) { var three = ""; var four = ""; var five = ""; var first = -1; var last = -1; for (int i = 0; i < line.Length; i++) { var c = line[i]; three += c; four += c; five += c; if (three.Length > 3) three = three.Remove(0, 1); if (four.Length > 4) four = four.Remove(0, 1); if (five.Length > 5) five = five.Remove(0, 1); if (char.IsDigit(c)) { if (first == -1) first = c - '0'; last = c - '0'; } if (nums.ContainsKey(three)) { if (first == -1) first = nums[three]; last = nums[three]; } if (nums.ContainsKey(four)) { if (first == -1) first = nums[four]; last = nums[four]; } if (nums.ContainsKey(five)) { if (first == -1) first = nums[five]; last = nums[five]; } } var tmp = Convert.ToInt32(first.ToString() + last.ToString()); total += tmp; } return total; }
Editor is loading...
Leave a Comment