aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2024-02-05 19:09:12 +0000
committerGitHub <noreply@github.com>2024-02-05 19:09:12 +0000
commit49fc732634fff3eb699b27aa218bbfbe7177d90b (patch)
tree33efe033c29e02f4f5e1d0a1564413a3ca5687df
parent8c0d9ffcf62a0ba36060e46acba5e302604a8179 (diff)
parent2b4cdf73bee3f5cf609522f16acae2dfe1e50a5e (diff)
downloadperlweeklychallenge-club-49fc732634fff3eb699b27aa218bbfbe7177d90b.tar.gz
perlweeklychallenge-club-49fc732634fff3eb699b27aa218bbfbe7177d90b.tar.bz2
perlweeklychallenge-club-49fc732634fff3eb699b27aa218bbfbe7177d90b.zip
Merge pull request #9526 from oWnOIzRi/week255
add solutions week 255 in python
-rw-r--r--challenge-255/steven-wilson/python/ch-01.py34
-rw-r--r--challenge-255/steven-wilson/python/ch-02.py37
2 files changed, 71 insertions, 0 deletions
diff --git a/challenge-255/steven-wilson/python/ch-01.py b/challenge-255/steven-wilson/python/ch-01.py
new file mode 100644
index 0000000000..dac2d858ab
--- /dev/null
+++ b/challenge-255/steven-wilson/python/ch-01.py
@@ -0,0 +1,34 @@
+#!/usr/bin/env python3
+
+from collections import Counter
+
+
+def odd_character(original, shuffled):
+ ''' Given two strings, the second string generated using the shuffled
+ characters of the first string with an additional character. Function
+ returns the additional character.
+ >>> odd_character("Perl", "Preel")
+ 'e'
+ >>> odd_character("Weekly", "Weeakly")
+ 'a'
+ >>> odd_character("Box", "Boxy")
+ 'y'
+ '''
+ if not original or not shuffled:
+ raise ValueError("Both strings must be non-empty.")
+
+ original_counter = Counter(x.casefold() for x in original)
+ shuffled_counter = Counter(x.casefold() for x in shuffled)
+
+ difference_counter = shuffled_counter - original_counter
+
+ if not difference_counter or sum(difference_counter.values()) > 1:
+ raise ValueError("No unique additional character found.")
+
+ return next(difference_counter.elements())
+
+
+if __name__ == "__main__":
+ import doctest
+
+ doctest.testmod()
diff --git a/challenge-255/steven-wilson/python/ch-02.py b/challenge-255/steven-wilson/python/ch-02.py
new file mode 100644
index 0000000000..2d5fc3ab9c
--- /dev/null
+++ b/challenge-255/steven-wilson/python/ch-02.py
@@ -0,0 +1,37 @@
+#!/usr/bin/env python3
+
+from collections import Counter
+import string
+
+
+def most_frequent_word(paragraph, banned):
+ '''Given a paragraph and a banned word. Return the most frequent word that
+ is not banned
+ >>> most_frequent_word(
+ ... "Joe hit a ball, the hit ball flew far after it was hit.", "hit")
+ 'ball'
+ >>> most_frequent_word(
+ ... "Perl and Raku belong to the same family. "
+ ... "Perl is the most popular language in the weekly challenge.", "the")
+ 'Perl'
+ '''
+ if not paragraph or not banned:
+ raise ValueError("Both strings must be non-empty.")
+
+ paragraph_no_punctuation = paragraph.translate(
+ str.maketrans("", "", string.punctuation))
+ paragraph_counter = Counter(paragraph_no_punctuation.split())
+
+ if banned in paragraph_counter:
+ del paragraph_counter[banned]
+
+ if not paragraph_counter:
+ raise ValueError("No words found in the paragraph after removing punctuation and banned word.")
+
+ return paragraph_counter.most_common()[0][0]
+
+
+if __name__ == "__main__":
+ import doctest
+
+ doctest.testmod()