diff options
author | Thomas Voss <thomasvoss@live.com> | 2021-12-02 09:48:12 +0100 |
---|---|---|
committer | Thomas Voss <thomasvoss@live.com> | 2021-12-02 09:48:12 +0100 |
commit | 641aa833290fb4ba76db692aa7346e6b136e8e34 (patch) | |
tree | ee709d987bc4f0f14264e56199f4db0bc57f65d5 /2015 | |
parent | 5f1cec7004dc0e4ef58662358d48635462362422 (diff) |
Take functional python to the next level
Diffstat (limited to '2015')
-rwxr-xr-x | 2015/17/puzzle-1.py | 19 | ||||
-rwxr-xr-x | 2015/17/puzzle-2.py | 29 |
2 files changed, 36 insertions, 12 deletions
diff --git a/2015/17/puzzle-1.py b/2015/17/puzzle-1.py index b201e5b..184d8dc 100755 --- a/2015/17/puzzle-1.py +++ b/2015/17/puzzle-1.py @@ -7,11 +7,20 @@ def main() -> None: with open("input", "r", encoding="utf-8") as f: nums = list(map(int, f.readlines())) - combs: list[tuple[int, ...]] = [] - for n in range(len(nums) + 1): - combs += list(itertools.combinations(nums, n)) - - print(len(list(filter(lambda x: sum(x) == 150, combs)))) + print( + len( + list( + filter( + lambda x: sum(x) == 150, + list( + itertools.chain( + *[list(itertools.combinations(nums, n)) for n in range(len(nums) + 1)] + ) + ), + ) + ) + ) + ) if __name__ == "__main__": diff --git a/2015/17/puzzle-2.py b/2015/17/puzzle-2.py index 43f8922..50a70f9 100755 --- a/2015/17/puzzle-2.py +++ b/2015/17/puzzle-2.py @@ -7,13 +7,28 @@ def main() -> None: with open("input", "r", encoding="utf-8") as f: nums = list(map(int, f.readlines())) - combs: list[tuple[int, ...]] = [] - for n in range(len(nums) + 1): - combs += list(itertools.combinations(nums, n)) - - combs = list(filter(lambda x: sum(x) == 150, combs)) - conts = min(map(len, combs)) - print(len(list(filter(lambda x: len(x) == conts, combs)))) + print( + len( + list( + filter( + lambda x: len(x) == min(map(len, combs)), + ( + combs := list( + filter( + lambda x: sum(x) == 150, + itertools.chain( + *[ + list(itertools.combinations(nums, n)) + for n in range(len(nums) + 1) + ] + ), + ) + ) + ), + ) + ) + ) + ) if __name__ == "__main__": |