Решение на Телефонна любов от Йолина Вълчева

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

Към профила на Йолина Вълчева

Резултати

  • 4 точки от тестове
  • 0 бонус точки
  • 4 точки общо
  • 16 успешни тест(а)
  • 21 неуспешни тест(а)

Код

keyboard = {
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")
}
def list_buttons_with_number_of_presses(sequenceOfKeyboardNumbers) :
series = []
lenght = 1
check = sequenceOfKeyboardNumbers[0]
del sequenceOfKeyboardNumbers[0]
for number in sequenceOfKeyboardNumbers :
if number == check :
lenght += 1
else :
series.append((check, lenght))
lenght = 1
check = number
series.append((check, lenght))
return series
def get_letters_press_count() :
list_letters = []
counter = 1
for key, value in keyboard.items() :
for letter in value :
index = list(keyboard.values()).index(value)
list_letters.append([letter , (key, counter, index)])
counter +=1
counter = 1
return list_letters
def nums_to_text(sequenceOfKeyboardNumbers) :
buttons = list_buttons_with_number_of_presses(sequenceOfKeyboardNumbers)
message = ""
for button in buttons :
key, value = button
if key == 0 :
for count in range(value) :
message += " "
continue
if key in keyboard.keys() :
if value > len(keyboard[key]) :
full_cycle = value // len(keyboard[key])
value = value - len(keyboard[key]) * full_cycle
message += keyboard[key][value-1]
return message
def text_to_nums(sequenceOfLetters) :
letter_key_count = get_letters_press_count()
numbers = []
current_index = -1
index_before = -2
if not sequenceOfLetters :
return [1]
for letter in sequenceOfLetters :
letter = letter.upper()
for value in letter_key_count:
if value[0] == letter :
pressed_times = value[1][1]
pressed_button = value[1][0]
pressed_button_index = value[1][2]
index_before = current_index
current_index = value[1][2]
if index_before == current_index :
numbers.append(-1)
for count in range(pressed_times) :
numbers.append(pressed_button)
break
return numbers
def nums_to_angle(nums) :
return "Not imlemented"
def angles_to_nums(angles) :
return "Not implemented"
def is_phone_tastic(word) :
return "Not implemented"
text = nums_to_text([2, -1, -1, 0, 0, 2])
numbers = text_to_nums("HELLO")

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

FFFFFFFFFFFF.FFFFFFF..E.........F....
======================================================================
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_empty_input (test.TestAnglesToNums)
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
AssertionError: 'Not implemented' != []

======================================================================
FAIL: test_exact_angle (test.TestAnglesToNums)
Test with an exact angle.
----------------------------------------------------------------------
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 implemented' != [2]

======================================================================
FAIL: test_ignoring_over_330 (test.TestAnglesToNums)
Test that angles rounded over 330 are ignored.
----------------------------------------------------------------------
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 implemented' != []

======================================================================
FAIL: test_ignoring_under_30 (test.TestAnglesToNums)
Test that angles rounded under 30 are ignored.
----------------------------------------------------------------------
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 implemented' != []

======================================================================
FAIL: test_multiple_angles (test.TestAnglesToNums)
Test with a couple of angles as 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: 'Not implemented' != [1, 6, 2, 2, 2]

======================================================================
FAIL: test_negative_angles (test.TestAnglesToNums)
Test with a negative 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: 'Not implemented' != [7]

======================================================================
FAIL: test_overflowing_angles (test.TestAnglesToNums)
Test with an overflowed 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: 'Not implemented' != [2]

======================================================================
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: 'Not implemented' != [5, 1, 2, 4, 9, 1, 8, 0, 9]

======================================================================
FAIL: test_round_angle_direction (test.TestAnglesToNums)
Test with an angle requiring explicit rounding to floor.
----------------------------------------------------------------------
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 implemented' != [1]

======================================================================
FAIL: test_round_angle_easy_case (test.TestAnglesToNums)
Test with an angle requiring rounding - easy 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: 'Not implemented' != [3]

======================================================================
FAIL: 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
AssertionError: 'Not implemented' is not false

======================================================================
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: 'Not implemented' is not false

======================================================================
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: 'Not imlemented' != 30

======================================================================
FAIL: test_empty_input (test.TestNumsToAngles)
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
AssertionError: 'Not imlemented' != 0

======================================================================
FAIL: test_for_overflowing_numbers (test.TestNumsToAngles)
Test normalizing when sum overflows.
----------------------------------------------------------------------
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 imlemented' != 180

======================================================================
FAIL: test_for_sum (test.TestNumsToAngles)
Test with multiple numbers that should result in a sum.
----------------------------------------------------------------------
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 imlemented' != 90

======================================================================
FAIL: test_normalizing_for_top_boundary (test.TestNumsToAngles)
Test normalizing when the sum is full circle.
----------------------------------------------------------------------
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 imlemented' != 0

======================================================================
FAIL: test_random_mixed_case (test.TestNumsToAngles)
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: 'Not imlemented' != 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: 'Not imlemented' != 150

======================================================================
FAIL: test_empty_input (test.TestTextToNums)
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
AssertionError: Lists differ: [1] != []

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

- [1]
?  -

+ []

----------------------------------------------------------------------
Ran 37 tests in 0.387s

FAILED (failures=20, errors=1)

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

Йолина обнови решението на 03.11.2022 00:18 (преди над 1 година)

+keyboard = {
+ 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")
+}
+
+
+def list_buttons_with_number_of_presses(sequenceOfKeyboardNumbers) :
+ series = []
+ lenght = 1
+ check = sequenceOfKeyboardNumbers[0]
+
+ del sequenceOfKeyboardNumbers[0]
+
+ for number in sequenceOfKeyboardNumbers :
+ if number == check :
+ lenght += 1
+ else :
+ series.append((check, lenght))
+ lenght = 1
+ check = number
+
+ series.append((check, lenght))
+ return series
+
+
+def get_letters_press_count() :
+ list_letters = []
+ counter = 1
+ for key, value in keyboard.items() :
+ for letter in value :
+ index = list(keyboard.values()).index(value)
+ list_letters.append([letter , (key, counter, index)])
+ counter +=1
+ counter = 1
+ return list_letters
+
+
+def nums_to_text(sequenceOfKeyboardNumbers) :
+ buttons = list_buttons_with_number_of_presses(sequenceOfKeyboardNumbers)
+ message = ""
+
+ for button in buttons :
+ key, value = button
+ if key == 0 :
+ for count in range(value) :
+ message += " "
+ continue
+ if key in keyboard.keys() :
+ if value > len(keyboard[key]) :
+ full_cycle = value // len(keyboard[key])
+ value = value - len(keyboard[key]) * full_cycle
+
+ message += keyboard[key][value-1]
+
+ return message
+
+
+def text_to_nums(sequenceOfLetters) :
+ letter_key_count = get_letters_press_count()
+ numbers = []
+ current_index = -1
+ index_before = -2
+
+ if not sequenceOfLetters :
+ return [1]
+
+ for letter in sequenceOfLetters :
+ letter = letter.upper()
+
+
+ for value in letter_key_count:
+ if value[0] == letter :
+ pressed_times = value[1][1]
+ pressed_button = value[1][0]
+ pressed_button_index = value[1][2]
+ index_before = current_index
+ current_index = value[1][2]
+ if index_before == current_index :
+ numbers.append(-1)
+ for count in range(pressed_times) :
+ numbers.append(pressed_button)
+ break
+
+
+ return numbers
+
+def nums_to_angle(nums) :
+ return "Not imlemented"
+
+
+def angles_to_nums(angles) :
+ return "Not implemented"
+
+
+def is_phone_tastic(word) :
+ return "Not implemented"
+
+
+text = nums_to_text([2, -1, -1, 0, 0, 2])
+
+numbers = text_to_nums("HELLO")