コード2020の出現:日1パイソン解決


Pythonを学んでいる間、私は運動の冒険を得るためにより複雑な問題を学ぶことを探していました.チャレンジは既に完了していますが、私は友人から、この課題は、より高い問題を解決する方法を取ることを聞いた.
毎日解決するために2つの問題があり、各部分もストーリーがあります.
AdventOfCode
第1部
2020年に合計したファイルの2つの数字の積を見つける.私はコードの小さなブロックを書くことから始めました.そして、与えられたサンプルデータで私のコードをテストして、それがうまく働くならば、私は私の入力でそれをテストします.
データディレクトリを準備します.
data_dir = "Data/"
数字を見つけるために正規表現をインポートし、リストに配置します.
import re
day1 = open(data_dir+"day1_test.txt").read()
nums = [int(i) for i in re.findall(r"[0-9]+", day1)]
2020まで合計する2つの数字を見つけます.私は2つだけ番号があることは幸運です.
sol = []
for num in nums:
    if 2020-num in nums:
        sol.append((2020-num, num))
sol = sol[0]
print(f"Two numbers that sum to 2020 are {sol[0]} and {sol[1]}. Their product is {sol[0]*sol[1]}")

1の機能
def solve_day1_part1(filename="day1_test.txt", data_dir = "Data/"):
    day1 = open(data_dir+filename).read()
    nums = [int(i) for i in re.findall(r"[0-9]+", day1)]

    sol = []
    for num in nums:
        if 2020-num in nums:
            sol.append((2020-num, num))
    sol = sol[0]
    print(f"Two numbers that sum to 2020 are {sol[0]} and {sol[1]}. Their product is {sol[0]*sol[1]}")
solve_day1_part1(filename="day1.txt")

機能2
def solve_day1_part2(filename="day1_test.txt", data_dir = "Data/"):
    day1 = open(data_dir+filename).read()
    nums = [int(i) for i in re.findall(r"[0-9]+", day1)]

    sol = []
    for num1 in nums[:-2]:
        for num2 in nums[1:]:
            if 2020-num1-num2 in nums:
                sol.append([num1, num2, 2020-num1-num2])
    print(sol)
    sol=sol[0]
    print(f"Three numbers that sum to 2020 are {sol[0]}, {sol[1]} and {sol[2]}. Their product is {sol[0]*sol[1]*sol[2]}")
solve_day1_part2(filename="day1_test.txt")

私は、私が試みた各々の解決の後、 を更新しています.