From 396e9f2d45acf65e2dd8dbde30a77a6aa0ef227a Mon Sep 17 00:00:00 2001 From: Steven Date: Mon, 1 Apr 2024 15:59:18 +0100 Subject: add solutions week 263 in python --- challenge-263/steven-wilson/python/ch-1.py | 21 +++++++++++++++++++++ challenge-263/steven-wilson/python/ch-2.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 challenge-263/steven-wilson/python/ch-1.py create mode 100644 challenge-263/steven-wilson/python/ch-2.py (limited to 'challenge-263') diff --git a/challenge-263/steven-wilson/python/ch-1.py b/challenge-263/steven-wilson/python/ch-1.py new file mode 100644 index 0000000000..c5812d1069 --- /dev/null +++ b/challenge-263/steven-wilson/python/ch-1.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 + + +def target_index(*elements, target): + ''' Given an array of integers and a target element, return the list of + indices in the sorted array where the element is same as the given target + element. + >>> target_index(1, 5, 3, 2, 4, 2, target=2) + [1, 2] + >>> target_index(1, 2, 4, 3, 5, target = 6) + [] + >>> target_index(5, 3, 2, 4, 2, 1, target = 4) + [4] + ''' + return [i for i, elem in enumerate(sorted(elements)) if elem == target] + + +if __name__ == "__main__": + import doctest + + doctest.testmod() diff --git a/challenge-263/steven-wilson/python/ch-2.py b/challenge-263/steven-wilson/python/ch-2.py new file mode 100644 index 0000000000..40895fcd98 --- /dev/null +++ b/challenge-263/steven-wilson/python/ch-2.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python3 + +from collections import Counter + + +def merge_items(items1, items2): + ''' Given two 2-D array of positive integers, items1 and items2 where + element is pair of (item_id, item_quantity), return the merged items. + >>> merge_items([ [1,1], [2,1], [3,2] ], [ [2,2], [1,3] ]) + [[1, 4], [2, 3], [3, 2]] + >>> merge_items([[1, 2], [2, 3], [1, 3], [3, 2]], [[3, 1], [1, 3]]) + [[1, 8], [2, 3], [3, 3]] + >>> merge_items([[1, 1], [2, 2], [3, 3]], [[2, 3], [2, 4]]) + [[1, 1], [2, 9], [3, 3]] + ''' + counter = Counter() + all_items = items1 + items2 + + for item in all_items: + counter[item[0]] += item[1] + + return [[item_id, counter[item_id]] for item_id in sorted(counter.keys())] + + +if __name__ == "__main__": + import doctest + + doctest.testmod() -- cgit