aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Voss <thomasvoss@live.com> 2021-12-02 09:48:12 +0100
committerThomas Voss <thomasvoss@live.com> 2021-12-02 09:48:12 +0100
commit641aa833290fb4ba76db692aa7346e6b136e8e34 (patch)
treeee709d987bc4f0f14264e56199f4db0bc57f65d5
parent5f1cec7004dc0e4ef58662358d48635462362422 (diff)
Take functional python to the next level
-rwxr-xr-x2015/17/puzzle-1.py19
-rwxr-xr-x2015/17/puzzle-2.py29
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__":