Илия обнови решението на 03.11.2022 14:35 (преди над 2 години)
+def insert(result , current , count):
+ match current:
Ако сложиш всички данни в речник, ще си спестиш почти идентичните редове код като този match
.
+ case 2:
+ if count == 1:
+ result = result + 'A'
+ if count == 2:
+ result = result + 'B'
+ if count == 3:
+ result = result + 'C'
+ case 3:
+ if count == 1:
+ result = result + 'D'
+ if count == 2:
+ result = result + 'E'
+ if count == 3:
+ result = result + 'F'
+ case 4:
+ if count == 1:
+ result = result + 'G'
+ if count == 2:
+ result = result + 'H'
+ if count == 3:
+ result = result + 'I'
+ case 5:
+ if count == 1:
+ result = result + 'J'
+ if count == 2:
+ result = result + 'K'
+ if count == 3:
+ result = result + 'L'
+ case 6:
+ if count == 1:
+ result = result + 'M'
+ if count == 2:
+ result = result + 'N'
+ if count == 3:
+ result = result + 'O'
+ case 7:
+ if count == 1:
+ result = result + 'P'
+ if count == 2:
+ result = result + 'Q'
+ if count == 3:
+ result = result + 'R'
+ if count == 4:
+ result = result + 'S'
+ case 8:
+ if count == 1:
+ result = result + 'T'
+ if count == 2:
+ result = result + 'U'
+ if count == 3:
+ result = result + 'V'
+ case 9:
+ if count == 1:
+ result = result + 'W'
+ if count == 2:
+ result = result + 'X'
+ if count == 3:
+ result = result + 'Y'
+ if count == 4:
+ result = result + 'Z'
+ return result
+
+
+def nums_to_text(nums):
+
Прекалено много празни редове тук.
+ count = 0
+
+ result = ""
+
+ current = nums[0]
+
+ index_counter = 0
+
+ length = len(nums)
+
+ for i in nums:
+
+ index_counter = index_counter + 1
+
+
+ if i == current and length != index_counter:
+ count = count + 1
+ if (current == 9 or current == 7) and count > 4:
Прието е current in (7, 9)
, пък е и по-кратко.
+ count = 1
+ elif (current != 9 and current != 7) and count > 3:
+ count = 1
+ else:
+ if length == index_counter:
+ if i == current:
+ count = count + 1
+ if (current == 9 or current == 7) and count > 4:
+ count = 1
+ elif (current != 9 and current != 7) and count > 3:
+ count = 1
+ else:
+ result = insert(result, current, count)
+ current = i
+ count = 1
+ result = insert(result, current, count)
+
+ current = i
+ count = 1
+
+ if current == 0:
+ result = result + " "
+
+ return result
+
+def text_to_nums(text):
+ text = [i.upper() for i in text]
+
+ numpad = [" ", "", "ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ"]
+
+ result = []
+
+ prev = ''
+
+ for i in text:
Моля използвай по-описателни имена на промнеливи, а не i, j, k...
+
+ for j in range(len(numpad)):
+
+ for k in range(len(numpad[j])):
+ if numpad[j][k] == i:
+ if j == prev:
+ result.append(-1)
+
+ prev = j
+
+ for x in range(0, k+1):
+ result.append(j)
+
+ return result
+
+def nums_to_angle(numbers):
+
+ sum = 0
+
+ for i in numbers:
+ if i != -1:
+ sum = sum + i*30
+
+ if sum > 359:
+ while sum > 359:
+ sum = sum - 360
+ elif sum < -359:
+ while sum < -359:
+ sum = sum + 360
+
+ if sum < 0 :
+ sum = 360 + sum
+
+ return sum
+
+def angles_to_nums(angles):
+
+ num = 0
+
+ normalized = []
+
+ result = []
+
+ for i in angles:
+
+ if i > 359:
+ while i > 359:
+ i = i - 360
+ elif i < -359:
+ while i < -359:
+ i = i + 360
+
+ if i < 0:
+ normalized.append(360 + i)
+ else:
+ normalized.append(i)
+
+ for i in normalized:
+ while i > num:
+ num = num + 30
+ if i == num:
+ if num != 0 and num != 330 and num != 360:
+ result.append(int(i/30))
+ else:
+ if i > num - 15:
+ if num - 15 < 345 and num != 330:
+ result.append(int(num/30))
+ elif i <= num - 15:
+ if num-30 != 0 and num-30 != 330 and num-30 != 360:
+ result.append(int((num-30)/30))
+ num = 0
+
+ return result
+
+def is_phone_tastic(text):
+ numbers = text_to_nums(text)
+
+ result = nums_to_angle(numbers)
+
+ if len(text) == 0:
+ return False
+
+ if result % len(text) == 0:
+ return True
+ else :
+ return False
Ако сложиш всички данни в речник, ще си спестиш почти идентичните редове код като този
match
.Прекалено много празни редове тук.
Прието е
current in (7, 9)
, пък е и по-кратко.Моля използвай по-описателни имена на промнеливи, а не i, j, k...