Домашни > Man who speaks the ends of words > Решения > Решението на Димитър Христов

Резултати
10 точки от тестове
0 точки от учител

10 точки общо

12 успешни теста
0 неуспешни теста
Код

 1def beginning(word):
 2    if len(word) % 3 == 0:
 3        return word[:len(word)//3:]
 4    if len(word) % 3 == 1:
 5        return word[:len(word)//3:]
 6    if len(word) % 3 == 2:
 7        return word[:len(word)//3+1:]
 8
 9def middle(word):
10    if len(word) % 3 == 0:
11        return word[len(word)//3:2*len(word)//3:]
12    if len(word) % 3 == 1:
13        return word[len(word)//3:2*len(word)//3+1:]
14    if len(word) % 3 == 2:
15        return word[len(word)//3+1:2*len(word)//3:]
16    
17def end(word):
18    if len(word) % 3 == 0:
19        return word[2*len(word)//3:]
20    if len(word) % 3 == 1:
21        return word[2*len(word)//3+1:]
22    if len(word) % 3 == 2:
23        return word[2*len(word)//3:]
24
25def word_result(word):
26    return (beginning(word), middle(word), end(word))
27
28def split_sentence(sentence):
29    words = sentence.split()
30    res = []
31    for word in words:
32        res.append(word_result(word))
33    return res

............
----------------------------------------------------------------------
Ran 12 tests in 0.000s

OK

Дискусия
Димитър Христов
15.10.2023 16:26

Ето с разделени по функциите код. Също така наистина работи само с едни :
Георги Кунчев
15.10.2023 10:57

Цялата идея с изнасянето на логиката за всички три функции в отделна не ми допада. Имаш едни стрингове, които определят резултата, а базиране на логика по стрингове може лесно да се оплеска с някое тайпо. Като цяло решението ще бъде далеч по-добро, ако всяка функция държи логиката си, а не я делегира на друга, претоварена от логиката и за трите функции, функция.
История

n1def word_cutter(word, position):n1def beginning(word):
2    if len(word) % 3 == 0:2    if len(word) % 3 == 0:
n3        if position == "start":n
4            return word[:len(word)//3:]3        return word[:len(word)//3:]
5        if position == "mid":
6            return word[len(word)//3:2*len(word)//3:]
7        if position == "end":
8            return word[2*len(word)//3::]
9    if len(word) % 3 == 1:4    if len(word) % 3 == 1:
n10        if position == "start":n
11            return word[:len(word)//3:]5        return word[:len(word)//3:]
12        if position == "mid":
13            return word[len(word)//3:2*len(word)//3+1:]
14        if position == "end":
15            return word[2*len(word)//3+1::]
16    if len(word) % 3 == 2:6    if len(word) % 3 == 2:
n17        if position == "start":n
18            return word[:len(word)//3+1:]7        return word[:len(word)//3+1:]
19        if position == "mid":
20            return word[len(word)//3+1:2*len(word)//3:]
21        if position == "end":
22            return word[2*len(word)//3::]
23 
24def beginning(word):
25    return word_cutter(word, "start")
268
27def middle(word):9def middle(word):
n28    return word_cutter(word, "mid")n10    if len(word) % 3 == 0:
11        return word[len(word)//3:2*len(word)//3:]
12    if len(word) % 3 == 1:
13        return word[len(word)//3:2*len(word)//3+1:]
14    if len(word) % 3 == 2:
15        return word[len(word)//3+1:2*len(word)//3:]
29    16    
30def end(word):17def end(word):
n31    return word_cutter(word, "end")n18    if len(word) % 3 == 0:
19        return word[2*len(word)//3:]
20    if len(word) % 3 == 1:
21        return word[2*len(word)//3+1:]
22    if len(word) % 3 == 2:
23        return word[2*len(word)//3:]
3224
33def word_result(word):25def word_result(word):
t34    return (word_cutter(word, "start"), word_cutter(word, "mid"), word_cutter(word, "end"))t26    return (beginning(word), middle(word), end(word))
3527
36def split_sentence(sentence):28def split_sentence(sentence):
37    words = sentence.split()29    words = sentence.split()
38    res = []30    res = []
39    for word in words:31    for word in words:
40        res.append(word_result(word))32        res.append(word_result(word))
41    return res33    return res
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op