diff options
| author | Thomas Köhler <jean-luc@picard.franken.de> | 2024-02-05 14:45:15 +0100 |
|---|---|---|
| committer | Thomas Köhler <jean-luc@picard.franken.de> | 2024-02-05 14:45:15 +0100 |
| commit | 42b3de759cb5a10aa49c486d32bcbdbae2bc38fa (patch) | |
| tree | 8cd46bfffe290dd79157ccf9ec606fde4165ad1f /challenge-255/jeanluc2020/python | |
| parent | d58258463850d2949fe13a4097a83a5d17951548 (diff) | |
| download | perlweeklychallenge-club-42b3de759cb5a10aa49c486d32bcbdbae2bc38fa.tar.gz perlweeklychallenge-club-42b3de759cb5a10aa49c486d32bcbdbae2bc38fa.tar.bz2 perlweeklychallenge-club-42b3de759cb5a10aa49c486d32bcbdbae2bc38fa.zip | |
Add solution 255.
Signed-off-by: Thomas Köhler <jean-luc@picard.franken.de>
Diffstat (limited to 'challenge-255/jeanluc2020/python')
| -rwxr-xr-x | challenge-255/jeanluc2020/python/ch-1.py | 62 | ||||
| -rwxr-xr-x | challenge-255/jeanluc2020/python/ch-2.py | 60 |
2 files changed, 122 insertions, 0 deletions
diff --git a/challenge-255/jeanluc2020/python/ch-1.py b/challenge-255/jeanluc2020/python/ch-1.py new file mode 100755 index 0000000000..728f307d69 --- /dev/null +++ b/challenge-255/jeanluc2020/python/ch-1.py @@ -0,0 +1,62 @@ +#!/usr/bin/python3 +# https://theweeklychallenge.org/blog/perl-weekly-challenge-255/#TASK1 +# +# Task 1: Odd Character +# ===================== +# +# You are given two strings, $s and $t. The string $t is generated using the +# shuffled characters of the string $s with an additional character. +# +# Write a script to find the additional character in the string $t.. +# +## Example 1 +## +## Input: $s = "Perl" $t = "Preel" +## Output: "e" +# +## Example 2 +## +## Input: $s = "Weekly" $t = "Weeakly" +## Output: "a" +# +## Example 3 +## +## Input: $s = "Box" $t = "Boxy" +## Output: "y" +# +############################################################ +## +## discussion +## +############################################################ +# +# Split the word into its character, store them in a hash table, then +# count the result for each character in both the table for the original +# word and for the new word. + +def odd_character(s: str, t: str) -> None: + print(f"Input: '{s}', '{t}'") + s_hash = {} + t_hash = {} + for char in list(s): + if char in s_hash: + s_hash[char] += 1 + else: + s_hash[char] = 1 + for char in list(t): + if char in t_hash: + t_hash[char] += 1 + else: + t_hash[char] = 1 + for found in t_hash.keys(): + old = 0 + if found in s_hash: + old = s_hash[found] + if t_hash[found] > old: + print(f"Output: {found}") + return + + +odd_character("Perl", "Preel"); +odd_character("Weekly", "Weeakly"); +odd_character("Box", "Boxy"); diff --git a/challenge-255/jeanluc2020/python/ch-2.py b/challenge-255/jeanluc2020/python/ch-2.py new file mode 100755 index 0000000000..ebc9f1edce --- /dev/null +++ b/challenge-255/jeanluc2020/python/ch-2.py @@ -0,0 +1,60 @@ +#!/usr/bin/python3 +# https://theweeklychallenge.org/blog/perl-weekly-challenge-255/#TASK2 +# +# Task 2: Most Frequent Word +# ========================== +# +# You are given a paragraph $p and a banned word $w. +# +# Write a script to return the most frequent word that is not banned. +# +## Example 1 +## +## Input: $p = "Joe hit a ball, the hit ball flew far after it was hit." +## $w = "hit" +## Output: "ball" +## +## The banned word "hit" occurs 3 times. +## The other word "ball" occurs 2 times. +# +## Example 2 +## +## Input: $p = "Perl and Raku belong to the same family. Perl is the most +## popular language in the weekly challenge." +## $w = "the" +## Output: "Perl" +## +## The banned word "the" occurs 3 times. +## The other word "Perl" occurs 2 times. +# +############################################################ +## +## discussion +## +############################################################ +# +# Split the sentence into its words, then count all the words != $w + +import re +from operator import itemgetter + +def most_frequent_word(p: str, w: str) -> None: + print(f"Input: '{p}', '{w}'") + found = {} + for word in re.split('\W+', p): + if word != w: + if word in found: + found[word] += 1 + else: + found[word] = 1 + most = [] + for key in found.keys(): + most.append( (key, found[key]) ) + most.sort(key=itemgetter(1)) + print(most) + print(f"Found the most frequent word to be '{most[-1][0]}'") + +most_frequent_word("Joe hit a ball, the hit ball flew far after it was hit.", "hit"); +most_frequent_word("Perl and Raku belong to the same family. Perl is the most" + + " popular language in the weekly challenge.", "the"); + |
