aboutsummaryrefslogtreecommitdiff
path: root/challenge-307/sgreen/python
diff options
context:
space:
mode:
authorrir <rirans@comcast.net>2025-02-09 23:21:34 +0000
committerGitHub <noreply@github.com>2025-02-09 23:21:34 +0000
commit6f080fc3c36c5dd16f6ffb1b6e643fac6babc84b (patch)
tree5b7d8fa04b96268238b7b6ce520a76649b4d8be2 /challenge-307/sgreen/python
parent9380fe143cc5ce16d97cd6fcc2f2f8d18151e4d3 (diff)
parent20203255d0f29f170a3c0cd55a737c0b2981597f (diff)
downloadperlweeklychallenge-club-6f080fc3c36c5dd16f6ffb1b6e643fac6babc84b.tar.gz
perlweeklychallenge-club-6f080fc3c36c5dd16f6ffb1b6e643fac6babc84b.tar.bz2
perlweeklychallenge-club-6f080fc3c36c5dd16f6ffb1b6e643fac6babc84b.zip
Merge branch 'manwar:master' into work
Diffstat (limited to 'challenge-307/sgreen/python')
-rwxr-xr-xchallenge-307/sgreen/python/ch-1.py29
-rwxr-xr-xchallenge-307/sgreen/python/ch-2.py26
-rwxr-xr-xchallenge-307/sgreen/python/test.py25
3 files changed, 80 insertions, 0 deletions
diff --git a/challenge-307/sgreen/python/ch-1.py b/challenge-307/sgreen/python/ch-1.py
new file mode 100755
index 0000000000..cc227d0d95
--- /dev/null
+++ b/challenge-307/sgreen/python/ch-1.py
@@ -0,0 +1,29 @@
+#!/usr/bin/env python3
+
+import sys
+
+
+def check_order(ints: list) -> str:
+ # Sort the lists numerically
+ sorted_ints = sorted(ints)
+ differences = []
+
+ for idx in range(len(ints)):
+ if ints[idx] != sorted_ints[idx]:
+ # If the value in the original list and sorted list at this
+ # position is different, add it to the differences list.
+ differences.append(idx)
+
+ # Return the list
+ return differences
+
+
+def main():
+ # Convert input into integers
+ array = [int(n) for n in sys.argv[1:]]
+ result = check_order(array)
+ print(result)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/challenge-307/sgreen/python/ch-2.py b/challenge-307/sgreen/python/ch-2.py
new file mode 100755
index 0000000000..14f80dc96e
--- /dev/null
+++ b/challenge-307/sgreen/python/ch-2.py
@@ -0,0 +1,26 @@
+#!/usr/bin/env python3
+
+import sys
+
+
+def find_anagrams(words: list) -> list:
+ # Sort each word alphabetically, ignoring case
+ sorted_words = [''.join(sorted(word.lower())) for word in words]
+ anagrams = 0
+
+ for idx in range(1, len(words)):
+ if sorted_words[idx-1] == sorted_words[idx]:
+ # The word at this position is an anagram of the previous word
+ anagrams += 1
+
+ # Return the number of words that aren't an anagram
+ return len(words) - anagrams
+
+
+def main():
+ result = find_anagrams(sys.argv[1:])
+ print(result)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/challenge-307/sgreen/python/test.py b/challenge-307/sgreen/python/test.py
new file mode 100755
index 0000000000..965631aecf
--- /dev/null
+++ b/challenge-307/sgreen/python/test.py
@@ -0,0 +1,25 @@
+#!/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.check_order([5, 2, 4, 3, 1]), [0, 2, 3, 4])
+ self.assertEqual(ch_1.check_order([1, 2, 1, 1, 3]), [1, 3])
+ self.assertEqual(ch_1.check_order([3, 1, 3, 2, 3]), [0, 1, 3])
+
+ def test_ch_2(self):
+ words_1 = ["acca", "dog", "god", "perl", "repl"]
+ words_2 = ["abba", "baba", "aabb", "ab", "ab"]
+ words_3 = ["abba", "baba", "ab", "ab", "aabb"]
+
+ self.assertEqual(ch_2.find_anagrams(words_1), 3)
+ self.assertEqual(ch_2.find_anagrams(words_2), 2)
+ self.assertEqual(ch_2.find_anagrams(words_3), 3)
+
+
+if __name__ == '__main__':
+ unittest.main()