Le défi d'aujourd'hui était assez simple :
Partie 1 :
Pour résoudre le problème, nous avons dû
Facile, c'est vrai.
Partie 2 :
C'était un peu plus délicat mais le concept principal de ma solution était :
créez un dictionnaire où la clé est le numéro dans la listeA, la valeur a utilisé la méthode Count() pour compter tous les nombres de la listeB qui étaient identiques à la clé (numéro au même index que la listeA).
il s'agit alors simplement de multiplier les clés par les valeurs et d'additionner les totaux.
var input = File.ReadAllLines("./input_1.txt") .Select(s => s.Split([' '], StringSplitOptions.RemoveEmptyEntries)).ToList(); var lists = ProcessLines(input); Part1(lists.list1, lists.list2); Part2(lists.list1, lists.list2); return; void Part1(List<int> list1, List<int> list2) { var ordered1 = list1.OrderBy(x => x).ToList(); var ordered2 = list2.OrderBy(x => x).ToList(); var totals = ordered1 .Select((t, i) => Math.Abs(t - ordered2[i])) .Select(difference => (long)difference) .ToList(); Console.WriteLine("Sum of differences: " + totals.Sum()); } void Part2(List<int> list1, List<int> list2) { var counts = list1.ToDictionary( number => number, number => list2.Count(x => x == number) ); var sum = counts.Sum(x => x.Value * x.Key); Console.WriteLine("Sum of counts: " + sum); } (List<int> list1, List<int> list2) ProcessLines(List<string[]> rows) { var list1 = new List<int>(); var list2 = new List<int>(); foreach (var row in rows) { list1.Add(int.Parse(row[0])); list2.Add(int.Parse(row[1])); } return (list1, list2); }
Partie 1 - Python
Même concept syntaxe différente - beaucoup
Plus concis grâce à la fonction zip intégrée et à la fonctionnalité de compréhension de liste.
def get_steps(list1, list2): totals = [abs(value - partner_item) for value, partner_item in zip(list1, list2)] print("Sum Total:", sum(totals)) def read_input(file_name): list1, list2 = zip(*((int(num1), int(num2)) for num1, num2 in (line.split() for line in open(file_name)))) return sorted(list1), sorted(list2) list1, list2 = read_input("input.txt") get_steps(list1, list2)
Partie 2 - En cours (il se faisait tard)⏰
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!