diff options
| -rw-r--r-- | challenge-194/vamsi-meenavilli/python/ch-1.py | 51 | ||||
| -rw-r--r-- | challenge-194/vamsi-meenavilli/python/ch-2.py | 41 |
2 files changed, 92 insertions, 0 deletions
diff --git a/challenge-194/vamsi-meenavilli/python/ch-1.py b/challenge-194/vamsi-meenavilli/python/ch-1.py new file mode 100644 index 0000000000..7de3d3752b --- /dev/null +++ b/challenge-194/vamsi-meenavilli/python/ch-1.py @@ -0,0 +1,51 @@ +import re +import unittest + +""" + Week 194: + + https://theweeklychallenge.org/blog/perl-weekly-challenge-194 + + Task 1: Digital Clock + Submitted by: Mohammad S Anwar + You are given time in the format hh:mm with one missing digit. + + Write a script to find the highest digit between 0-9 that makes it valid time. +""" + + +class DigitalClock: + @staticmethod + def digital_clock(time: str) -> int: + missing_character_index = re.search("\\?", time).start() + time = re.sub("\\?", "9", time) + + if missing_character_index < 3: + hours = list(map(int, time.split(":")[0])) + + while int(''.join(map(str, hours))) > 23: + hours[missing_character_index] -= 1 + + return hours[missing_character_index] + else: + missing_character_index -= 3 + minutes = list(map(int, time.split(":")[1])) + + while int(''.join(map(str, minutes))) > 59: + minutes[missing_character_index] -= 1 + + return minutes[missing_character_index] + + +class DigitalClockTestCases(unittest.TestCase): + def test_digital_clock(self): + self.assertEqual(1, DigitalClock.digital_clock("?5:00"), 'Test case 1 Failed.') + self.assertEqual(2, DigitalClock.digital_clock("?3:00"), 'Test case 2 Failed.') + self.assertEqual(9, DigitalClock.digital_clock("1?:00"), 'Test case 3 Failed.') + self.assertEqual(3, DigitalClock.digital_clock("2?:00"), 'Test case 4 Failed.') + self.assertEqual(5, DigitalClock.digital_clock("12:?5"), 'Test case 5 Failed.') + self.assertEqual(9, DigitalClock.digital_clock("12:5?"), 'Test case 6 Failed.') + + +if __name__ == '__main__': + unittest.main() diff --git a/challenge-194/vamsi-meenavilli/python/ch-2.py b/challenge-194/vamsi-meenavilli/python/ch-2.py new file mode 100644 index 0000000000..d318dc3e51 --- /dev/null +++ b/challenge-194/vamsi-meenavilli/python/ch-2.py @@ -0,0 +1,41 @@ +import re +import unittest + +""" + Week 194: + + https://theweeklychallenge.org/blog/perl-weekly-challenge-194 + + Task 2: Frequency Equalizer + Submitted by: Mohammad S Anwar + You are given a string made of alphabetic characters only, a-z. + + Write a script to determine whether removing only one character can make the frequency of the remaining characters the same. +""" + + +class FrequencyEqualizer: + @staticmethod + def frequency_equalizer(string: str) -> bool: + character_frequency_map = dict() + + for character in string: + if character in character_frequency_map: + character_frequency_map[character] += 1 + else: + character_frequency_map[character] = 1 + + unique_frequencies = list(set(character_frequency_map.values())) + + return True if len(unique_frequencies) == 2 and abs(unique_frequencies[0] - unique_frequencies[1]) == 1 else False + + +class FrequencyEqualizerTestCases(unittest.TestCase): + def test_digital_clock(self): + self.assertTrue(FrequencyEqualizer.frequency_equalizer("abbc"), 'Test case 1 Failed.') + self.assertTrue(FrequencyEqualizer.frequency_equalizer("xyzyyxz"), 'Test case 2 Failed.') + self.assertFalse(FrequencyEqualizer.frequency_equalizer("xzxz"), 'Test case 3 Failed.') + + +if __name__ == '__main__': + unittest.main() |
