Харут обнови решението на 02.11.2022 11:27 (преди над 2 години)
+from itertools import groupby
+
+N = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 1, 1, 1, 1]
+
+
+def nums_to_text(list_of_numbers: list) -> str:
+ number_to_character_dict = {
+ 0: ' ',
+ 2: ('A', 'B', 'C'),
+ 3: ('D', 'E', 'F'),
+ 4: ('G', 'H', 'I'),
+ 5: ('J', 'K', 'L'),
+ 6: ('M', 'N', 'O'),
+ 7: ('P', 'Q', 'R', 'S'),
+ 8: ('T', 'U', 'V'),
+ 9: ('W', 'X', 'Y', 'Z'),
+ }
+
+ if list_of_numbers is None:
+ raise ValueError("Please enter non_empty list")
+
+ occurrences_list = list(map(lambda x: (x[0], len(x)), [list(j) for i, j in groupby(list_of_numbers)]))
+
+ output_string = str()
+ for pair in occurrences_list:
+ number, occurrences = pair
+ if number not in number_to_character_dict:
+ continue
+ normalized_occurrences = occurrences % len(number_to_character_dict[number])
+ output_string += number_to_character_dict[number][normalized_occurrences - 1]
+
+ return output_string
+
+
+def text_to_nums(text: str) -> list:
+ character_to_number_dict = {
+ 'A': [2], 'B': [2, 2], 'C': [2, 2, 2],
+ 'D': [3], 'E': [3, 3], 'F': [3, 3, 3],
+ 'G': [4], 'H': [4, 4], 'I': [4, 4, 4],
+ 'J': [5], 'K': [5, 5], 'L': [5, 5, 5],
+ 'M': [6], 'N': [6, 6], 'O': [6, 6, 6],
+ 'P': [7], 'Q': [7, 7], 'R': [7, 7, 7], 'S': [7, 7, 7, 7],
+ 'T': [8], 'U': [8, 8], 'V': [8, 8, 8],
+ 'W': [9], 'X': [9, 9], 'Y': [9, 9, 9], 'Z': [9, 9, 9, 9],
+ ' ': [0]
+ }
+
+ output_list = list()
+
+ previous_number = -1
+ for char in text:
+ case_insensitive_char = char.upper()
+ current_number = character_to_number_dict[case_insensitive_char][0]
+ if current_number == previous_number:
+ output_list.append(-1)
+ output_list.extend(character_to_number_dict[case_insensitive_char])
+ previous_number = character_to_number_dict[case_insensitive_char][0]
+
+ return output_list
+
+
+def nums_to_angle(nums: list) -> int:
+ return sum(nums) * 30 % 360
+
+
+def angles_to_nums(angles: list) -> list:
+ return list(filter(lambda num: num in range(1, 11), map(lambda angle: round((angle % 360) / 30), angles)))
+
+
+def is_phone_tastic(word: str) -> bool:
+ return nums_to_angle(list(filter(lambda num: num in range(0, 9), text_to_nums(word)))) % len(
+ word.replace(" ", "")) == 0