From 204693e9ecff8f799dbcf84e3085d68f8537c0ff Mon Sep 17 00:00:00 2001 From: Simon Green Date: Sun, 29 Jun 2025 22:41:39 +1000 Subject: sgreen solutions to challenge 327 --- challenge-327/sgreen/python/ch-1.py | 27 +++++++++++++++++++++++++++ challenge-327/sgreen/python/ch-2.py | 37 +++++++++++++++++++++++++++++++++++++ challenge-327/sgreen/python/test.py | 21 +++++++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100755 challenge-327/sgreen/python/ch-1.py create mode 100755 challenge-327/sgreen/python/ch-2.py create mode 100755 challenge-327/sgreen/python/test.py (limited to 'challenge-327/sgreen/python') diff --git a/challenge-327/sgreen/python/ch-1.py b/challenge-327/sgreen/python/ch-1.py new file mode 100755 index 0000000000..6c52c9dc2f --- /dev/null +++ b/challenge-327/sgreen/python/ch-1.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python3 + +import sys + + +def missing_integers(ints: list) -> list[int]: + """Find missing integers in a sequence. + + Args: + ints (list): List of integers. + + Returns: + list[int]: List of missing integers in the sequence. + """ + + return [i for i in range(1, len(ints) + 1) if i not in ints] + + +def main(): + # Convert input into integers + array = [int(n) for n in sys.argv[1:]] + result = missing_integers(array) + print(result) + + +if __name__ == '__main__': + main() diff --git a/challenge-327/sgreen/python/ch-2.py b/challenge-327/sgreen/python/ch-2.py new file mode 100755 index 0000000000..02a0964aaf --- /dev/null +++ b/challenge-327/sgreen/python/ch-2.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 + +import sys + + +def mad(ints: list) -> list[list[int]]: + """Find pairs of integers with the minimum absolute difference. + + Args: + ints (list): List of integers. + + Returns: + list[list[int]]: List of pairs of integers with the minimum absolute difference. + """ + + ints = sorted(ints) + min_diff = None + min_diff_pairs = [] + for i in range(len(ints) - 1): + diff = ints[i + 1] - ints[i] + if min_diff is None or diff < min_diff: + min_diff = diff + min_diff_pairs = [] + if diff == min_diff: + min_diff_pairs.append([ints[i], ints[i + 1]]) + + return min_diff_pairs + +def main(): + # Convert input into integers + array = [int(n) for n in sys.argv[1:]] + result = mad(array) + print(result) + + +if __name__ == '__main__': + main() diff --git a/challenge-327/sgreen/python/test.py b/challenge-327/sgreen/python/test.py new file mode 100755 index 0000000000..816ecc6abb --- /dev/null +++ b/challenge-327/sgreen/python/test.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 + +import unittest +ch_1 = __import__('ch-1') +ch_2 = __import__('ch-2') + + +class TestClass(unittest.TestCase): + def test_ch_1(self): + self.assertEqual(ch_1.missing_integers([1, 2, 1, 3, 2, 5]), [4, 6]) + self.assertEqual(ch_1.missing_integers([1, 1, 1]), [2, 3]) + self.assertEqual(ch_1.missing_integers([2, 2, 1]), [3]) + + def test_ch_2(self): + self.assertEqual(ch_2.mad([4, 1, 2, 3]), [[1,2], [2,3], [3,4]]) + self.assertEqual(ch_2.mad([1, 3, 7, 11, 15]), [[1,3]]) + self.assertEqual(ch_2.mad([1, 5, 3, 8]), [[1,3], [3,5]]) + + +if __name__ == '__main__': + unittest.main() -- cgit