Решение на Телефонна любов от Клементина Картевска

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

Към профила на Клементина Картевска

Резултати

  • 9 точки от тестове
  • 0 бонус точки
  • 9 точки общо
  • 32 успешни тест(а)
  • 5 неуспешни тест(а)

Код

buttons = (
(' '),
(''),
('A', 'B', 'C'),
('D', 'E', 'F'),
('G', 'H', 'I'),
('J', 'K', 'L'),
('M', 'N', 'O'),
('P', 'Q', 'R', 'S'),
('T', 'U', 'V'),
('W', 'X', 'Y', 'Z')
)
zero = (286,300, 315)
one = (16, 30, 45)
two = (46, 60, 75)
three = (76, 90, 105)
four = (106, 120, 135)
five = (136, 160, 175)
six = (176, 180, 195)
seven = (196, 210, 225)
eight = (226, 240, 265)
nine = (266, 270, 285)
nothing = (316, 360, 15)
def nums_to_text(nums):
msg = []
count = 1
for i in range(len(nums)):
if nums[i] in [-1, 1] :
continue
if nums[i] == 0:
msg.append(buttons[nums[i]][0])
continue
if i == len(nums)-1:
count = count%len(buttons[nums[i]])
if count == 0:
msg.append(buttons[nums[i]][-1])
elif count == 1:
msg.append(buttons[nums[i]][0])
elif count == 2:
msg.append(buttons[nums[i]][1])
elif count == 3:
msg.append(buttons[nums[i]][2])
count = 1
continue
if nums[i] == nums[i+1]:
count +=1
else:
count = count%len(buttons[nums[i]])
if count == 0:
msg.append(buttons[nums[i]][-1])
elif count == 1:
msg.append(buttons[nums[i]][0])
elif count == 2:
msg.append(buttons[nums[i]][1])
elif count == 3:
msg.append(buttons[nums[i]][2])
count = 1
return ''.join(msg)
def text_to_nums(text):
msg = []
text=text.upper()
for index, letter in enumerate(text):
for i in range(len(buttons)):
if letter in buttons[i]:
count = buttons[i].index(letter) + 1
msg.extend([i]*count)
if(index+1<len(text) and text[index+1] in buttons[i]):
msg.append(-1)
return msg
def nums_to_angle(nums):
angles = 0
for num in nums:
if num == 0:
angles += zero[1]
elif num == 1:
angles += one[1]
elif num == 2:
angles += two[1]
elif num == 3:
angles += three[1]
elif num == 4:
angles += four[1]
elif num == 5:
angles += five[1]
elif num == 6:
angles += six[1]
elif num == 7:
angles += seven[1]
elif num == 8:
angles += eight[1]
elif num == 9:
angles += nine[1]
angles = angles%360
return angles
def angles_to_nums(angles):
phone_number = []
for angle in angles:
angle = angle%360
if nothing[0] <= angle or angle <= nothing[2]:
pass
elif one[0] <= angle <= one[2]:
phone_number.append(1)
elif two[0] <= angle <= two[2]:
phone_number.append(2)
elif three[0] <= angle <= three[2]:
phone_number.append(3)
elif four [0] <= angle <= four[2]:
phone_number.append(4)
elif five[0] <= angle <= five[2]:
phone_number.append(5)
elif six[0] <= angle <= six[2]:
phone_number.append(6)
elif seven[0] <= angle <= seven[2]:
phone_number.append(7)
elif eight[0] <= angle <= eight[2]:
phone_number.append(8)
elif nine[0] <= angle <= nine[2]:
phone_number.append(9)
return phone_number
def is_phone_tastic(word):
if len(word)==0:
return False
nums = text_to_nums(word)
angle = nums_to_angle(nums)
if angle % len(word) == 0:
return True
else:
return False

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

.......F...FFF.....F.................
======================================================================
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_random_falses (test.TestIsPhonetastic)
Test with a random input resulting in False.
----------------------------------------------------------------------
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: True is not false

======================================================================
FAIL: test_random_trues (test.TestIsPhonetastic)
Test with a random input resulting in True.
----------------------------------------------------------------------
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: False is not true

======================================================================
FAIL: test_correct_mapping (test.TestNumsToAngles)
Test correct mapping for all numbers.
----------------------------------------------------------------------
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: 160 != 150

======================================================================
FAIL: test_single_number (test.TestNumsToAngles)
Test with single number.
----------------------------------------------------------------------
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: 160 != 150

----------------------------------------------------------------------
Ran 37 tests in 0.337s

FAILED (failures=5)

История (3 версии и 5 коментара)

Клементина обнови решението на 03.11.2022 14:26 (преди над 1 година)

+buttons = (
+ (' '),
+ (''),
+ ('A', 'B', 'C'),
+ ('D', 'E', 'F'),
+ ('G', 'H', 'I'),
+ ('J', 'K', 'L'),
+ ('M', 'N', 'O'),
+ ('P', 'Q', 'R', 'S'),
+ ('T', 'U', 'V'),
+ ('W', 'X', 'Y', 'Z')
+ )
+
+zero = (286,300, 315)
+one = (16, 30, 45)
+two = (46, 60, 75)
+three = (76, 90, 105)
+four = (106, 120, 135)
+five = (136, 160, 175)
+six = (176, 180, 195)
+seven = (196, 210, 225)
+eight = (226, 240, 265)
+nine = (266, 270, 285)
+nothing = (316, 360, 15)
+
+
+
+def nums_to_text(nums):
+ msg = []
+ count = 1
+ for i in range(len(nums)):
+ if nums[i] in [-1, 1] :
+ continue
+ if i == len(nums)-1:
+ count = count%len(buttons[nums[i]])
+ if count == 0:
+ msg.append(buttons[nums[i]][-1])
+ elif count == 1:
+ msg.append(buttons[nums[i]][0])
+ elif count == 2:
+ msg.append(buttons[nums[i]][1])
+ elif count == 3:
+ msg.append(buttons[nums[i]][2])
+ count = 1
+ continue
+ if nums[i] == nums[i+1]:
+ count +=1
+ else:
+ count = count%len(buttons[nums[i]])
+ if count == 0:
+ msg.append(buttons[nums[i]][-1])
+ elif count == 1:
+ msg.append(buttons[nums[i]][0])
+ elif count == 2:
+ msg.append(buttons[nums[i]][1])
+ elif count == 3:
+ msg.append(buttons[nums[i]][2])
+ count = 1
+ return ''.join(msg)
+
+def text_to_nums(text):
+ msg = []
+ for letter in text.upper():
+ for i in range(len(buttons)):
+ if letter in buttons[i]:
+ count = buttons[i].index(letter) + 1
+ msg.extend([i]*count)
+ return msg
+
+
+def nums_to_angle(nums):
+ angles = 0
+ for num in nums:
+ if num == 0:
+ angles += zero[1]
+ elif num == 1:
+ angles += one[1]
+ elif num == 2:
+ angles += two[1]
+ elif num == 3:
+ angles += three[1]
+ elif num == 4:
+ angles += four[1]
+ elif num == 5:
+ angles += five[1]
+ elif num == 6:
+ angles += six[1]
+ elif num == 7:
+ angles += seven[1]
+ elif num == 8:
+ angles += eight[1]
+ elif num == 9:
+ angles += nine[1]
+ while angles > 360:
+ angles = angles%360
+
+ return angles
+
+
+def angles_to_nums(angles):
+ phone_number = []
+ for angle in angles:
+ angle = angle%360
+ if nothing[0] <= angle or angle <= nothing[2]:
+ pass
+ elif one[0] <= angle <= one[2]:
+ phone_number.append(1)
+ elif two[0] <= angle <= two[2]:
+ phone_number.append(2)
+ elif three[0] <= angle <= three[2]:
+ phone_number.append(3)
+ elif four [0] <= angle <= four[2]:
+ phone_number.append(4)
+ elif five[0] <= angle <= five[2]:
+ phone_number.append(5)
+ elif six[0] <= angle <= six[2]:
+ phone_number.append(6)
+ elif seven[0] <= angle <= seven[2]:
+ phone_number.append(7)
+ elif eight[0] <= angle <= eight[2]:
+ phone_number.append(8)
+ elif nine[0] <= angle <= nine[2]:
+ phone_number.append(9)
+ return phone_number
+
+
+def is_phone_tastic(word):
+ nums = text_to_nums(word)
+ angle = nums_to_angle(nums)
+ if angle % len(word) == 0:
+ return True
+ else:
+ return False

Клементина обнови решението на 03.11.2022 15:48 (преди над 1 година)

buttons = (
(' '),
(''),
('A', 'B', 'C'),
('D', 'E', 'F'),
('G', 'H', 'I'),
('J', 'K', 'L'),
('M', 'N', 'O'),
('P', 'Q', 'R', 'S'),
('T', 'U', 'V'),
('W', 'X', 'Y', 'Z')
)
zero = (286,300, 315)
one = (16, 30, 45)
two = (46, 60, 75)
three = (76, 90, 105)
four = (106, 120, 135)
five = (136, 160, 175)
six = (176, 180, 195)
seven = (196, 210, 225)
eight = (226, 240, 265)
nine = (266, 270, 285)
nothing = (316, 360, 15)
def nums_to_text(nums):
msg = []
count = 1
for i in range(len(nums)):
if nums[i] in [-1, 1] :
continue
+ if nums[i] == 0:
+ msg.append(buttons[nums[i]][0])
+ continue
if i == len(nums)-1:
count = count%len(buttons[nums[i]])
if count == 0:
msg.append(buttons[nums[i]][-1])
elif count == 1:
msg.append(buttons[nums[i]][0])
elif count == 2:
msg.append(buttons[nums[i]][1])
elif count == 3:
msg.append(buttons[nums[i]][2])
count = 1
continue
if nums[i] == nums[i+1]:
count +=1
else:
count = count%len(buttons[nums[i]])
if count == 0:
msg.append(buttons[nums[i]][-1])
elif count == 1:
msg.append(buttons[nums[i]][0])
elif count == 2:
msg.append(buttons[nums[i]][1])
elif count == 3:
msg.append(buttons[nums[i]][2])
count = 1
return ''.join(msg)
-
def text_to_nums(text):
msg = []
- for letter in text.upper():
+ text=text.upper()
+ for index, letter in enumerate(text):
for i in range(len(buttons)):
if letter in buttons[i]:
count = buttons[i].index(letter) + 1
msg.extend([i]*count)
+ if(index+1<len(text) and text[index+1] in buttons[i]):
+ msg.append(-1)
return msg
def nums_to_angle(nums):
angles = 0
for num in nums:
if num == 0:
angles += zero[1]
elif num == 1:
angles += one[1]
elif num == 2:
angles += two[1]
elif num == 3:
angles += three[1]
elif num == 4:
angles += four[1]
elif num == 5:
angles += five[1]
elif num == 6:
angles += six[1]
elif num == 7:
angles += seven[1]
elif num == 8:
angles += eight[1]
elif num == 9:
angles += nine[1]
- while angles > 360:
- angles = angles%360
+ angles = angles%360
return angles
def angles_to_nums(angles):
phone_number = []
for angle in angles:
angle = angle%360
if nothing[0] <= angle or angle <= nothing[2]:
pass
elif one[0] <= angle <= one[2]:
phone_number.append(1)
elif two[0] <= angle <= two[2]:
phone_number.append(2)
elif three[0] <= angle <= three[2]:
phone_number.append(3)
elif four [0] <= angle <= four[2]:
phone_number.append(4)
elif five[0] <= angle <= five[2]:
phone_number.append(5)
elif six[0] <= angle <= six[2]:
phone_number.append(6)
elif seven[0] <= angle <= seven[2]:
phone_number.append(7)
elif eight[0] <= angle <= eight[2]:
phone_number.append(8)
elif nine[0] <= angle <= nine[2]:
phone_number.append(9)
return phone_number
def is_phone_tastic(word):
+ if len(word)==0:
+ return False
nums = text_to_nums(word)
angle = nums_to_angle(nums)
if angle % len(word) == 0:
return True
else:
- return False
+ return False

Клементина обнови решението на 03.11.2022 17:53 (преди над 1 година)

buttons = (
(' '),
(''),
('A', 'B', 'C'),
('D', 'E', 'F'),
('G', 'H', 'I'),
('J', 'K', 'L'),
('M', 'N', 'O'),
('P', 'Q', 'R', 'S'),
('T', 'U', 'V'),
('W', 'X', 'Y', 'Z')
)
zero = (286,300, 315)
one = (16, 30, 45)
two = (46, 60, 75)
three = (76, 90, 105)
four = (106, 120, 135)
five = (136, 160, 175)
six = (176, 180, 195)
seven = (196, 210, 225)
eight = (226, 240, 265)
nine = (266, 270, 285)
nothing = (316, 360, 15)
def nums_to_text(nums):
msg = []
count = 1
for i in range(len(nums)):
if nums[i] in [-1, 1] :
continue
if nums[i] == 0:
msg.append(buttons[nums[i]][0])
continue
if i == len(nums)-1:
count = count%len(buttons[nums[i]])
if count == 0:
msg.append(buttons[nums[i]][-1])
elif count == 1:
msg.append(buttons[nums[i]][0])
elif count == 2:
msg.append(buttons[nums[i]][1])
elif count == 3:
msg.append(buttons[nums[i]][2])
count = 1
continue
if nums[i] == nums[i+1]:
count +=1
else:
count = count%len(buttons[nums[i]])
if count == 0:
msg.append(buttons[nums[i]][-1])
elif count == 1:
msg.append(buttons[nums[i]][0])
elif count == 2:
msg.append(buttons[nums[i]][1])
elif count == 3:
msg.append(buttons[nums[i]][2])
count = 1
return ''.join(msg)
+
def text_to_nums(text):
msg = []
text=text.upper()
for index, letter in enumerate(text):
for i in range(len(buttons)):
if letter in buttons[i]:
count = buttons[i].index(letter) + 1
msg.extend([i]*count)
if(index+1<len(text) and text[index+1] in buttons[i]):
msg.append(-1)
return msg
-
def nums_to_angle(nums):
angles = 0
for num in nums:
if num == 0:
angles += zero[1]
elif num == 1:
angles += one[1]
elif num == 2:
angles += two[1]
elif num == 3:
angles += three[1]
elif num == 4:
angles += four[1]
elif num == 5:
angles += five[1]
elif num == 6:
angles += six[1]
elif num == 7:
angles += seven[1]
elif num == 8:
angles += eight[1]
elif num == 9:
angles += nine[1]
angles = angles%360
-
return angles
-
def angles_to_nums(angles):
phone_number = []
for angle in angles:
angle = angle%360
if nothing[0] <= angle or angle <= nothing[2]:
pass
elif one[0] <= angle <= one[2]:
phone_number.append(1)
elif two[0] <= angle <= two[2]:
phone_number.append(2)
elif three[0] <= angle <= three[2]:
phone_number.append(3)
elif four [0] <= angle <= four[2]:
phone_number.append(4)
elif five[0] <= angle <= five[2]:
phone_number.append(5)
elif six[0] <= angle <= six[2]:
phone_number.append(6)
elif seven[0] <= angle <= seven[2]:
phone_number.append(7)
elif eight[0] <= angle <= eight[2]:
phone_number.append(8)
elif nine[0] <= angle <= nine[2]:
phone_number.append(9)
return phone_number
-
def is_phone_tastic(word):
if len(word)==0:
return False
nums = text_to_nums(word)
angle = nums_to_angle(nums)
if angle % len(word) == 0:
return True
else:
return False