From 8bca7f8b7d2f39e634aba151e6bd5e96ea3b720b Mon Sep 17 00:00:00 2001 From: Abigail Date: Sun, 8 Aug 2021 13:54:16 +0200 Subject: Perl and Python solutions for week 124, part 2 --- challenge-124/abigail/python/ch-2.py | 49 ++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 challenge-124/abigail/python/ch-2.py (limited to 'challenge-124/abigail/python') diff --git a/challenge-124/abigail/python/ch-2.py b/challenge-124/abigail/python/ch-2.py new file mode 100644 index 0000000000..613634f80b --- /dev/null +++ b/challenge-124/abigail/python/ch-2.py @@ -0,0 +1,49 @@ +#!/opt/local/bin/python + +# +# See ../README.md +# + +# +# Run as: python ch-2.py < input-file +# + + +def init (): + global best_diff + best_diff = -1 + +def check_sets (set1, set2): + global best_diff + global best_set1 + global best_set2 + diff = abs (sum (set1) - sum (set2)) + if best_diff < 0 or diff < best_diff: + best_diff = diff + best_set1 = set1 + best_set2 = set2 + +def report (): + global best_set1 + global best_set2 + print (" " . join (map (lambda x: str (x), best_set1)) + "; " + + " " . join (map (lambda x: str (x), best_set2))) + + +def split_set (set, set1, set2): + n = len (set) + len (set1) + len (set2) + if len (set1) == n // 2: + check_sets (set1, set2 + set) + elif len (set2) == (n + 1) // 2: + check_sets (set1 + set, set2) + else: + split_set (set [1:], set1 + [set [0]], set2) + split_set (set [1:], set1, set2 + [set [0]]) + +import fileinput + +for line in fileinput . input (): + init () + set = list (map (lambda x: int (x), line . strip () . split ())) + split_set (set, [], []) + report () -- cgit