Подбрани задачи за Фейсбук групата Developers.py. Обща дейност за сформиране на активна Python българска общност.
Ще бъде публикувана класация на най-добре представилите се.
Задачите не са авторски, а подбрани и преведени.
- Решаване
- Тестване на решенията
- Публикуване на решенията
- Проблем 1
- Проблем 2
- Проблем 3
- Проблем 4
- Проблем 5
Всеки проблем се намира в отделен .py файл. Във всеки файл единствено е разписана сигнатурата на функцията. Вашето решение се състои в това да попълните тялото й.
- Клонирайте repository-то локално git clone https://github.com/skilldeliver/Developers-py.git
- Преминете към решаване и тестване
Включени са тестове за всички описани проблеми. Ако изпълните команда за тестване на единичен проблем на конзолата ще получите информация за всеки тестов случай. Някои от тестовите случаи са скрити и разбирате единствено дали е преминал или не. Ако изпълните команда за всички проблеми ще получите информация за оценката след всеки проблем и финалния резултат.
- Oтворете терминала в клонирата директория.
- Изпълнете командата py tests.py n, където n e номера на теста от [1,5]
- Oтворете терминала в клонирата директория.
- Изпълнете командата py tests.py
Единствения начин да разберем, че резултатът е достоверен е като видим решенията на всеки проблем.
- Fork-нете това repository
- Във вашия fork решенията ги добавете в отделна директория с вашия GitHub nickname
- Изпратете pull requst
Намерете всички числа от редицата n, които са делими на числото d без остатък.
n: list<int>
d: int
list<int> числата от n, делими на d без остатък
n = [1, 2, 3, 4, 5, 6]
d = 2
# числата, които са делими на 2 без остатък са: 2, 4 и 6:
return [2, 4, 6]
# Някои тестове:
"""
[1,2,3,4,5,6], 3 -> [3,6]
[0,1,2,3,4,5,6], 4 -> [0,4]
[0], 4 -> [0]
[1,3,5], 2 -> []
"""
Намерете максималното произведение на подредица(с дължина k) на редицата n.
n: list
k: int
len(n) >= 3
int най-голямото произведение на подредица[k] на редицата n
n = [4, 3, 5]
k = 2
# Подредиците на n с дължина k са [4, 3], [4, 5], [3, 5]
# произведенията на елементите са 12 20 15
return 20
# Някои тестове:
"""
[8, 10 , 9, 7], 3 -> 720
[10, 8, 3, 2, 1, 4, 10], 5 -> 9600
[-4, -27, -15, -6, -1], 2 -> 4
[10, 3, -1, -27] , 3 -> -30
"""
Булевата на Шрьодингер. Дефинирайте променлива b, така че следната кондиция да e True
b == True and b == False
Намерете дробите получени от привеждането под общ знаменател на подадените рационални числа q.
Очаквайте големи числа.
q: list
# (q е двуизмерен list,
# всеки вложен list съдържа само два int елемента - числител и знаменател)
list дробите получени от привеждането под общ знаменател
# (Трябва да е двуизмерен list,
# всеки вложен list съдържа само два int елемента - числител и знаменател)
q = [[1, 2], [1, 3], [1, 4]]
# Общия знаменател на дробите е:
12
# следователно дробите, които се получават след привеждане са:
return [[6, 12], [4, 12], [3, 12]]
Намерете средния елемент от азбучно подредена редица получена от пренареждането на буквите в подадения string. Ако дължината на редицата е четна, нека средният елемент бъде n/2, където n e дължината на редицата.
s: str
2 <= len(s) <= 26
# (Не съдържа повтарящи се елементи)
str средната пермутация на s: str
# (Не съдържа повтарящи се елементи)
s = 'abc'
# Азбучно подредени пермутации на s са:
{'abc', 'acb', 'bac', 'bca', 'cab', 'cba'}
# Редица е с четна дължина (6) следователно отговора е 3-тия елемент 'bac' (6/2)
return 'bac'
# Някои от тестовте:
"""
"abcd" -> "bdca"
"abcdx" -> "cbxda"
"abcdxg" -> "cxgdba"
"abcdxgz" -> "dczxgba"
"""