
今天的挑战非常简单:
第 1 部分:
为了解决这个问题,我们必须
简单吧。
第 2 部分:
这有点棘手,但我的解决方案的主要概念是:
立即学习“Python免费学习笔记(深入)”;
创建一个字典,其中 key 是 lista 中的数字,value 使用 count() 方法统计 listb 中与 key 相同的数字(与 lista 索引相同的数字)。
那么这只是一个将键乘以值并对总数求和的简单情况。
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);
}
第 1 部分 - python
相同的概念不同的语法 - 很多
使用内置的 zip 函数和列表理解功能更加简洁。
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)
第 2 部分 - 进行中(已经晚了)⏰
以上就是AoC ‘- 日历史学家歇斯底里(C# 和 Python)#剧透的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号