Решение на Телефонна любов от Мария Симеонова

Обратно към всички решения

Към профила на Мария Симеонова

Резултати

  • 8 точки от тестове
  • 0 бонус точки
  • 8 точки общо
  • 30 успешни тест(а)
  • 7 неуспешни тест(а)

Код

def nums_to_text(nums):
text = ''
last_number = nums[0]
counter = 0
nums.append(-1)
for number in nums:
if number == last_number:
counter += 1
elif number != last_number:
if last_number == 2:
counter = counter % 3
if counter == 1:
text += 'A'
elif counter == 2:
text += 'B'
elif counter == 0:
text += 'C'
elif last_number == 3:
counter = counter % 3
if counter == 1:
text += 'D'
elif counter == 2:
text += 'E'
elif counter == 0:
text += 'F'
elif last_number == 4:
counter = counter % 3
if counter == 1:
text += 'G'
elif counter == 2:
text += 'H'
elif counter == 0:
text += 'I'
elif last_number == 5:
counter = counter % 3
if counter == 1:
text += 'J'
elif counter == 2:
text += 'K'
elif counter == 0:
text += 'L'
elif last_number == 6:
counter = counter % 3
if counter == 1:
text += 'M'
elif counter == 2:
text += 'N'
elif counter == 0:
text += 'O'
elif last_number == 7:
counter = counter % 4
if counter == 1:
text += 'P'
elif counter == 2:
text += 'Q'
elif counter == 3:
text += 'R'
elif counter == 0:
text += 'S'
elif last_number == 8:
counter = counter % 3
if counter == 1:
text += 'T'
elif counter == 2:
text += 'U'
elif counter == 0:
text += 'V'
elif last_number == 9:
counter = counter % 4
if counter == 1:
text += 'W'
elif counter == 2:
text += 'X'
elif counter == 3:
text += 'Y'
elif counter == 0:
text += 'Z'
last_number = number
counter = 1
return text
def text_to_nums(text):
nums = []
for character in text:
character = character.lower()
if character == ' ':
nums.append(0)
elif character == 'a':
if len(nums) != 0:
if nums[-1] == 2:
nums.append(-1)
nums.append(2)
elif character == 'b':
if len(nums) != 0:
if nums[-1] == 2:
nums.append(-1)
nums.append(2)
nums.append(2)
elif character == 'c':
if len(nums) != 0:
if nums[-1] == 2:
nums.append(-1)
nums.append(2)
nums.append(2)
nums.append(2)
elif character == 'd':
if len(nums) != 0:
if nums[-1] == 3:
nums.append(-1)
nums.append(3)
elif character == 'e':
if len(nums) != 0:
if nums[-1] == 3:
nums.append(-1)
nums.append(3)
nums.append(3)
elif character == 'f':
if len(nums) != 0:
if nums[-1] == 3:
nums.append(-1)
nums.append(3)
nums.append(3)
nums.append(3)
elif character == 'g':
if len(nums) != 0:
if nums[-1] == 4:
nums.append(-1)
nums.append(4)
elif character == 'h':
if len(nums) != 0:
if nums[-1] == 4:
nums.append(-1)
nums.append(4)
nums.append(4)
elif character == 'i':
if len(nums) != 0:
if nums[-1] == 4:
nums.append(-1)
nums.append(4)
nums.append(4)
nums.append(4)
elif character == 'j':
if len(nums) != 0:
if nums[-1] == 5:
nums.append(-1)
nums.append(5)
elif character == 'k':
if len(nums) != 0:
if nums[-1] == 5:
nums.append(-1)
nums.append(5)
nums.append(5)
elif character == 'l':
if len(nums) != 0:
if nums[-1] == 5:
nums.append(-1)
nums.append(5)
nums.append(5)
nums.append(5)
elif character == 'm':
if len(nums) != 0:
if nums[-1] == 6:
nums.append(-1)
nums.append(6)
elif character == 'n':
if len(nums) != 0:
if nums[-1] == 6:
nums.append(-1)
nums.append(6)
nums.append(6)
elif character == 'o':
if len(nums) != 0:
if nums[-1] == 6:
nums.append(-1)
nums.append(6)
nums.append(6)
nums.append(6)
elif character == 'p':
if len(nums) != 0:
if nums[-1] == 7:
nums.append(-1)
nums.append(7)
elif character == 'q':
if len(nums) != 0:
if nums[-1] == 7:
nums.append(-1)
nums.append(7)
nums.append(7)
elif character == 'r':
if len(nums) != 0:
if nums[-1] == 7:
nums.append(-1)
nums.append(7)
nums.append(7)
nums.append(7)
elif character == 's':
if len(nums) != 0:
if nums[-1] == 7:
nums.append(-1)
nums.append(7)
nums.append(7)
nums.append(7)
nums.append(7)
elif character == 't':
if len(nums) != 0:
if nums[-1] == 8:
nums.append(-1)
nums.append(8)
elif character == 'u':
if len(nums) != 0:
if nums.pop() == 8:
nums.append(-1)
nums.append(8)
nums.append(8)
elif character == 'v':
if len(nums) != 0:
if nums[-1] == 8:
nums.append(-1)
nums.append(8)
nums.append(8)
nums.append(8)
elif character == 'w':
if len(nums) != 0:
if nums[-1] == 9:
nums.append(-1)
nums.append(9)
elif character == 'x':
if len(nums) != 0:
if nums[-1] == 9:
nums.append(-1)
nums.append(9)
nums.append(9)
elif character == 'y':
if len(nums) != 0:
if nums[-1] == 9:
nums.append(-1)
nums.append(9)
nums.append(9)
nums.append(9)
elif character == 'z':
if len(nums) != 0:
if nums[-1] == 9:
nums.append(-1)
nums.append(9)
nums.append(9)
nums.append(9)
nums.append(9)
return nums
def nums_to_angle(nums):
angle = 0
for number in nums:
if number == 0:
angle += 300
else:
angle += number * 30
angle = angle % 360
return angle
def angles_to_nums(angles):
nums = []
for angle in angles:
while angle < 0:
angle = angle + 360
if angle > 359:
angle = angle % 360
if angle > 345 and angle <= 360:
angle = 0
else:
rest = angle % 30
if rest > 15:
angle = angle + (30 - rest)
else:
angle = angle - rest
if angle != 330 and angle != 0 and angle != 300:
number = angle / 30
if int(number) != 0:
nums.append(int(number))
return nums
def is_phone_tastic(word):
num_of_characters = len(word)
nums = []
for character in word:
character = character.lower()
if character == ' ':
nums.append(0)
elif character == 'a':
nums.append(2)
elif character == 'b':
nums.append(2)
nums.append(2)
elif character == 'c':
nums.append(2)
nums.append(2)
nums.append(2)
elif character == 'd':
nums.append(3)
elif character == 'e':
nums.append(3)
nums.append(3)
elif character == 'f':
nums.append(3)
nums.append(3)
nums.append(3)
elif character == 'g':
nums.append(4)
elif character == 'h':
nums.append(4)
nums.append(4)
elif character == 'i':
nums.append(4)
nums.append(4)
nums.append(4)
elif character == 'j':
nums.append(5)
elif character == 'k':
nums.append(5)
nums.append(5)
elif character == 'l':
nums.append(5)
nums.append(5)
nums.append(5)
elif character == 'm':
nums.append(6)
elif character == 'n':
nums.append(6)
nums.append(6)
elif character == 'o':
nums.append(6)
nums.append(6)
nums.append(6)
elif character == 'p':
nums.append(7)
elif character == 'q':
nums.append(7)
nums.append(7)
elif character == 'r':
nums.append(7)
nums.append(7)
nums.append(7)
elif character == 's':
nums.append(7)
nums.append(7)
nums.append(7)
nums.append(7)
elif character == 't':
nums.append(8)
elif character == 'u':
nums.append(8)
nums.append(8)
elif character == 'v':
nums.append(8)
nums.append(8)
nums.append(8)
elif character == 'w':
nums.append(9)
elif character == 'x':
nums.append(9)
nums.append(9)
elif character == 'y':
nums.append(9)
nums.append(9)
nums.append(9)
elif character == 'z':
nums.append(9)
nums.append(9)
nums.append(9)
nums.append(9)
angle = 0
for number in nums:
if number == 0:
angle += 300
else:
angle += number * 30
angle = angle % 360
result = False
if angle % num_of_characters == 0:
result = True
return result

Лог от изпълнението

.......F..E.........F.E...F.F.F......
======================================================================
ERROR: test_empty_input (test.TestIsPhonetastic)
Test with empty input.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221020151654/lib/language/python/runner.py", line 67, in thread
    raise result
ZeroDivisionError: integer division or modulo by zero

======================================================================
ERROR: test_empty_input (test.TestNumsToText)
Test with empty input.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221020151654/lib/language/python/runner.py", line 67, in thread
    raise result
IndexError: list index out of range

======================================================================
FAIL: test_random_mixed_case (test.TestAnglesToNums)
Test with a random mixed input.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221020151654/lib/language/python/runner.py", line 67, in thread
    raise result
AssertionError: Lists differ: [5, 1, 2, 4, 9, 1, 8, 9] != [5, 1, 2, 4, 9, 1, 8, 0, 9]

First differing element 7:
9
0

Second list contains 1 additional elements.
First extra element 8:
9

- [5, 1, 2, 4, 9, 1, 8, 9]
+ [5, 1, 2, 4, 9, 1, 8, 0, 9]
?                       +++


======================================================================
FAIL: test_all_chars (test.TestNumsToText)
Test for correct mapping of all chars.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221020151654/lib/language/python/runner.py", line 67, in thread
    raise result
AssertionError: 'abcdefghijklmnopqrstuvwxyz' != 'abcdefghijklmnopqrstuvwxyz '
- abcdefghijklmnopqrstuvwxyz
+ abcdefghijklmnopqrstuvwxyz 
?                           +


======================================================================
FAIL: test_random_mixed_case (test.TestNumsToText)
Test for a random mixed case.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221020151654/lib/language/python/runner.py", line 67, in thread
    raise result
AssertionError: 'fmirulzzz' != 'fmi rulzzz'
- fmirulzzz
+ fmi rulzzz
?    +


======================================================================
FAIL: test_spaces_only (test.TestNumsToText)
Test for input of only whitespaces with or without -1.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221020151654/lib/language/python/runner.py", line 67, in thread
    raise result
AssertionError: '' not found in ('   ', '      ')

======================================================================
FAIL: test_all_chars (test.TestTextToNums)
Test for correct mapping of all chars.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221020151654/lib/language/python/runner.py", line 67, in thread
    raise result
AssertionError: Lists differ: [2, -[163 chars], 7, -1, 8, 8, -1, 8, 8, 8, 9, -1, 9, 9, -1, 9[21 chars]9, 0] != [2, -[163 chars], 7, 8, -1, 8, 8, -1, 8, 8, 8, 9, -1, 9, 9, -1[24 chars]9, 0]

First differing element 53:
-1
8

Second list contains 1 additional elements.
First extra element 74:
0

  [2,
   -1,
   2,
   2,
   -1,
   2,
   2,
   2,
   3,
   -1,
   3,
   3,
   -1,
   3,
   3,
   3,
   4,
   -1,
   4,
   4,
   -1,
   4,
   4,
   4,
   5,
   -1,
   5,
   5,
   -1,
   5,
   5,
   5,
   6,
   -1,
   6,
   6,
   -1,
   6,
   6,
   6,
   7,
   -1,
   7,
   7,
   -1,
   7,
   7,
   7,
   -1,
   7,
   7,
   7,
   7,
+  8,
   -1,
   8,
   8,
   -1,
   8,
   8,
   8,
   9,
   -1,
   9,
   9,
   -1,
   9,
   9,
   9,
   -1,
   9,
   9,
   9,
   9,
   0]

----------------------------------------------------------------------
Ran 37 tests in 0.346s

FAILED (failures=5, errors=2)

История (1 версия и 2 коментара)

Мария обнови решението на 02.11.2022 18:53 (преди над 1 година)

+def nums_to_text(nums):
+ text = ''
+ last_number = nums[0]
+ counter = 0
+ nums.append(-1)
+ for number in nums:
+ if number == last_number:
+ counter += 1
+ elif number != last_number:
+ if last_number == 2:
+ counter = counter % 3
+ if counter == 1:
+ text += 'A'
+ elif counter == 2:
+ text += 'B'
+ elif counter == 0:
+ text += 'C'
+ elif last_number == 3:
+ counter = counter % 3
+ if counter == 1:
+ text += 'D'
+ elif counter == 2:
+ text += 'E'
+ elif counter == 0:
+ text += 'F'
+ elif last_number == 4:
+ counter = counter % 3
+ if counter == 1:
+ text += 'G'
+ elif counter == 2:
+ text += 'H'
+ elif counter == 0:
+ text += 'I'
+ elif last_number == 5:
+ counter = counter % 3
+ if counter == 1:
+ text += 'J'
+ elif counter == 2:
+ text += 'K'
+ elif counter == 0:
+ text += 'L'
+ elif last_number == 6:
+ counter = counter % 3
+ if counter == 1:
+ text += 'M'
+ elif counter == 2:
+ text += 'N'
+ elif counter == 0:
+ text += 'O'
+ elif last_number == 7:
+ counter = counter % 4
+ if counter == 1:
+ text += 'P'
+ elif counter == 2:
+ text += 'Q'
+ elif counter == 3:
+ text += 'R'
+ elif counter == 0:
+ text += 'S'
+ elif last_number == 8:
+ counter = counter % 3
+ if counter == 1:
+ text += 'T'
+ elif counter == 2:
+ text += 'U'
+ elif counter == 0:
+ text += 'V'
+ elif last_number == 9:
+ counter = counter % 4
+ if counter == 1:
+ text += 'W'
+ elif counter == 2:
+ text += 'X'
+ elif counter == 3:
+ text += 'Y'
+ elif counter == 0:
+ text += 'Z'
+ last_number = number
+ counter = 1
+ return text
+
+
+def text_to_nums(text):
+ nums = []
+ for character in text:
+ character = character.lower()
+ if character == ' ':
+ nums.append(0)
+ elif character == 'a':
+ if len(nums) != 0:
+ if nums[-1] == 2:
+ nums.append(-1)
+ nums.append(2)
+ elif character == 'b':
+ if len(nums) != 0:
+ if nums[-1] == 2:
+ nums.append(-1)
+ nums.append(2)
+ nums.append(2)
+ elif character == 'c':
+ if len(nums) != 0:
+ if nums[-1] == 2:
+ nums.append(-1)
+ nums.append(2)
+ nums.append(2)
+ nums.append(2)
+ elif character == 'd':
+ if len(nums) != 0:
+ if nums[-1] == 3:
+ nums.append(-1)
+ nums.append(3)
+ elif character == 'e':
+ if len(nums) != 0:
+ if nums[-1] == 3:
+ nums.append(-1)
+ nums.append(3)
+ nums.append(3)
+ elif character == 'f':
+ if len(nums) != 0:
+ if nums[-1] == 3:
+ nums.append(-1)
+ nums.append(3)
+ nums.append(3)
+ nums.append(3)
+ elif character == 'g':
+ if len(nums) != 0:
+ if nums[-1] == 4:
+ nums.append(-1)
+ nums.append(4)
+ elif character == 'h':
+ if len(nums) != 0:
+ if nums[-1] == 4:
+ nums.append(-1)
+ nums.append(4)
+ nums.append(4)
+ elif character == 'i':
+ if len(nums) != 0:
+ if nums[-1] == 4:
+ nums.append(-1)
+ nums.append(4)
+ nums.append(4)
+ nums.append(4)
+ elif character == 'j':
+ if len(nums) != 0:
+ if nums[-1] == 5:
+ nums.append(-1)
+ nums.append(5)
+ elif character == 'k':
+ if len(nums) != 0:
+ if nums[-1] == 5:
+ nums.append(-1)
+ nums.append(5)
+ nums.append(5)
+ elif character == 'l':
+ if len(nums) != 0:
+ if nums[-1] == 5:
+ nums.append(-1)
+ nums.append(5)
+ nums.append(5)
+ nums.append(5)
+ elif character == 'm':
+ if len(nums) != 0:
+ if nums[-1] == 6:
+ nums.append(-1)
+ nums.append(6)
+ elif character == 'n':
+ if len(nums) != 0:
+ if nums[-1] == 6:
+ nums.append(-1)
+ nums.append(6)
+ nums.append(6)
+ elif character == 'o':
+ if len(nums) != 0:
+ if nums[-1] == 6:
+ nums.append(-1)
+ nums.append(6)
+ nums.append(6)
+ nums.append(6)
+ elif character == 'p':
+ if len(nums) != 0:
+ if nums[-1] == 7:
+ nums.append(-1)
+ nums.append(7)
+ elif character == 'q':
+ if len(nums) != 0:
+ if nums[-1] == 7:
+ nums.append(-1)
+ nums.append(7)
+ nums.append(7)
+ elif character == 'r':
+ if len(nums) != 0:
+ if nums[-1] == 7:
+ nums.append(-1)
+ nums.append(7)
+ nums.append(7)
+ nums.append(7)
+ elif character == 's':
+ if len(nums) != 0:
+ if nums[-1] == 7:
+ nums.append(-1)
+ nums.append(7)
+ nums.append(7)
+ nums.append(7)
+ nums.append(7)
+ elif character == 't':
+ if len(nums) != 0:
+ if nums[-1] == 8:
+ nums.append(-1)
+ nums.append(8)
+ elif character == 'u':
+ if len(nums) != 0:
+ if nums.pop() == 8:
+ nums.append(-1)
+ nums.append(8)
+ nums.append(8)
+ elif character == 'v':
+ if len(nums) != 0:
+ if nums[-1] == 8:
+ nums.append(-1)
+ nums.append(8)
+ nums.append(8)
+ nums.append(8)
+ elif character == 'w':
+ if len(nums) != 0:
+ if nums[-1] == 9:
+ nums.append(-1)
+ nums.append(9)
+ elif character == 'x':
+ if len(nums) != 0:
+ if nums[-1] == 9:
+ nums.append(-1)
+ nums.append(9)
+ nums.append(9)
+ elif character == 'y':
+ if len(nums) != 0:
+ if nums[-1] == 9:
+ nums.append(-1)
+ nums.append(9)
+ nums.append(9)
+ nums.append(9)
+ elif character == 'z':
+ if len(nums) != 0:
+ if nums[-1] == 9:
+ nums.append(-1)
+ nums.append(9)
+ nums.append(9)
+ nums.append(9)
+ nums.append(9)
+ return nums
+
+
+def nums_to_angle(nums):
+ angle = 0
+ for number in nums:
+ if number == 0:
+ angle += 300
+ else:
+ angle += number * 30
+ angle = angle % 360
+ return angle
+
+
+def angles_to_nums(angles):
+ nums = []
+ for angle in angles:
+ while angle < 0:
+ angle = angle + 360
+ if angle > 359:
+ angle = angle % 360
+ if angle > 345 and angle <= 360:
+ angle = 0
+ else:
+ rest = angle % 30
+ if rest > 15:
+ angle = angle + (30 - rest)
+ else:
+ angle = angle - rest
+ if angle != 330 and angle != 0 and angle != 300:
+ number = angle / 30
+ if int(number) != 0:
+ nums.append(int(number))
+ return nums
+
+
+def is_phone_tastic(word):
+ num_of_characters = len(word)
+ nums = []
+ for character in word:
+ character = character.lower()
+ if character == ' ':
+ nums.append(0)
+ elif character == 'a':
+ nums.append(2)
+ elif character == 'b':
+ nums.append(2)
+ nums.append(2)
+ elif character == 'c':
+ nums.append(2)
+ nums.append(2)
+ nums.append(2)
+ elif character == 'd':
+ nums.append(3)
+ elif character == 'e':
+ nums.append(3)
+ nums.append(3)
+ elif character == 'f':
+ nums.append(3)
+ nums.append(3)
+ nums.append(3)
+ elif character == 'g':
+ nums.append(4)
+ elif character == 'h':
+ nums.append(4)
+ nums.append(4)
+ elif character == 'i':
+ nums.append(4)
+ nums.append(4)
+ nums.append(4)
+ elif character == 'j':
+ nums.append(5)
+ elif character == 'k':
+ nums.append(5)
+ nums.append(5)
+ elif character == 'l':
+ nums.append(5)
+ nums.append(5)
+ nums.append(5)
+ elif character == 'm':
+ nums.append(6)
+ elif character == 'n':
+ nums.append(6)
+ nums.append(6)
+ elif character == 'o':
+ nums.append(6)
+ nums.append(6)
+ nums.append(6)
+ elif character == 'p':
+ nums.append(7)
+ elif character == 'q':
+ nums.append(7)
+ nums.append(7)
+ elif character == 'r':
+ nums.append(7)
+ nums.append(7)
+ nums.append(7)
+ elif character == 's':
+ nums.append(7)
+ nums.append(7)
+ nums.append(7)
+ nums.append(7)
+ elif character == 't':
+ nums.append(8)
+ elif character == 'u':
+ nums.append(8)
+ nums.append(8)
+ elif character == 'v':
+ nums.append(8)
+ nums.append(8)
+ nums.append(8)
+ elif character == 'w':
+ nums.append(9)
+ elif character == 'x':
+ nums.append(9)
+ nums.append(9)
+ elif character == 'y':
+ nums.append(9)
+ nums.append(9)
+ nums.append(9)
+ elif character == 'z':
+ nums.append(9)
+ nums.append(9)
+ nums.append(9)
+ nums.append(9)
+ angle = 0
+ for number in nums:
+ if number == 0:
+ angle += 300
+ else:
+ angle += number * 30
+ angle = angle % 360
+ result = False
+ if angle % num_of_characters == 0:
+ result = True
+ return result