Skip to content

Commit 0b3dcc0

Browse files
committed
fix: ruff error, add: test to fn validate_elements_count
1 parent 3488d0e commit 0b3dcc0

File tree

3 files changed

+46
-21
lines changed

3 files changed

+46
-21
lines changed

combinatorics/combinations.py

+32-12
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,21 @@
1-
from math import comb
2-
from math import factorial
1+
from math import comb, factorial
32

43

54
def validate_elements_count(
65
total_elements_count: int, selected_elements_count: int
76
) -> None:
8-
"""Validate that the number of elements are positive and the total is greater than or equal to selected."""
7+
"""
8+
Validate that the number of elements are positive and
9+
the total is greater than or equal to selected.
10+
Examples:
11+
>>> validate_elements_count(6, 3)
12+
>>> validate_elements_count(10, 5)
13+
14+
"""
915
if total_elements_count < selected_elements_count or selected_elements_count < 0:
1016
raise ValueError(
11-
"Please enter positive integers for total_elements_count and selected_elements_count "
17+
"Please enter positive integers for total_elements_count"
18+
"and selected_elements_count "
1219
"where total_elements_count >= selected_elements_count"
1320
)
1421

@@ -17,7 +24,8 @@ def combinations_iterative(
1724
total_elements_count: int, selected_elements_count: int
1825
) -> int:
1926
"""
20-
Returns the number of combinations that can be made from a total set of elements.
27+
Returns the number of combinations that can be made
28+
from a total set of elements.
2129
2230
Examples:
2331
>>> combinations_iterative(10, 5)
@@ -33,7 +41,9 @@ def combinations_iterative(
3341
>>> combinations_iterative(-4, -5)
3442
Traceback (most recent call last):
3543
...
36-
ValueError: Please enter positive integers for total_elements_count and selected_elements_count where total_elements_count >= selected_elements_count
44+
ValueError: Please enter positive integers for total_elements_count
45+
and selected_elements_count where
46+
total_elements_count >= selected_elements_count
3747
"""
3848
validate_elements_count(total_elements_count, selected_elements_count)
3949
combinations_count = 1
@@ -91,7 +101,9 @@ def combinations_formula(
91101
>>> combinations_formula(-4, -5)
92102
Traceback (most recent call last):
93103
...
94-
ValueError: Please enter positive integers for total_elements_count and selected_elements_count where total_elements_count >= selected_elements_count
104+
ValueError: Please enter positive integers for
105+
total_elements_count and selected_elements_count
106+
where total_elements_count >= selected_elements_count
95107
"""
96108
validate_elements_count(total_elements_count, selected_elements_count)
97109
remaining_elements_count = total_elements_count - selected_elements_count
@@ -121,7 +133,9 @@ def combinations_with_repetitions(
121133
>>> combinations_with_repetitions(-4, -5)
122134
Traceback (most recent call last):
123135
...
124-
ValueError: Please enter positive integers for total_elements_count and selected_elements_count where total_elements_count >= selected_elements_count
136+
ValueError: Please enter positive integers for
137+
total_elements_count and selected_elements_count
138+
where total_elements_count >= selected_elements_count
125139
"""
126140
validate_elements_count(total_elements_count, selected_elements_count)
127141
if total_elements_count + selected_elements_count == 0:
@@ -134,7 +148,8 @@ def combinations_with_repetitions(
134148

135149
def permutations(total_elements_count: int, selected_elements_count: int) -> int:
136150
"""
137-
Calculate the number of permutations of selecting k elements from n elements.
151+
Calculate the number of permutations of selecting k elements
152+
from n elements.
138153
139154
Examples:
140155
>>> permutations(10, 5)
@@ -150,7 +165,9 @@ def permutations(total_elements_count: int, selected_elements_count: int) -> int
150165
>>> permutations(-4, -5)
151166
Traceback (most recent call last):
152167
...
153-
ValueError: Please enter positive integers for total_elements_count and selected_elements_count where total_elements_count >= selected_elements_count
168+
ValueError: Please enter positive integers for
169+
total_elements_count and selected_elements_count
170+
where total_elements_count >= selected_elements_count
154171
"""
155172
validate_elements_count(total_elements_count, selected_elements_count)
156173
remaining_elements_count = total_elements_count - selected_elements_count
@@ -159,7 +176,8 @@ def permutations(total_elements_count: int, selected_elements_count: int) -> int
159176

160177
def possible_selections(total_elements_count: int, selected_elements_count: int) -> int:
161178
"""
162-
Calculate the number of possible selections of k items from n available items, with replacement.
179+
Calculate the number of possible selections of k items
180+
from n available items, with replacement.
163181
164182
Examples:
165183
>>> possible_selections(10, 5)
@@ -175,7 +193,9 @@ def possible_selections(total_elements_count: int, selected_elements_count: int)
175193
>>> possible_selections(-4, -5)
176194
Traceback (most recent call last):
177195
...
178-
ValueError: Please enter positive integers for total_elements_count and selected_elements_count where total_elements_count >= selected_elements_count
196+
ValueError: Please enter positive integers for
197+
total_elements_count and selected_elements_count
198+
where total_elements_count >= selected_elements_count
179199
"""
180200
validate_elements_count(total_elements_count, selected_elements_count)
181201
return int(total_elements_count**selected_elements_count)

combinatorics/derangements.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@
77

88
def derangement(elements_count: int) -> int:
99
"""
10-
Returns the number of different combinations of selected_elements_count length which can
11-
be made from total_elements_count values, where total_elements_count >= selected_elements_count.
10+
Returns the number of different combinations of selected_elements_count
11+
length which can be made from total_elements_count values,
12+
where total_elements_count >= selected_elements_count.
1213
1314
Examples:
1415
>>> derangement(6)

combinatorics/stirling_second_kind.py

+11-7
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,26 @@
66
def validate_elements_count(
77
total_elements_count: int, selected_elements_count: int
88
) -> None:
9+
"""
910
# If either of the conditions are true, the function is being asked
1011
# to calculate a factorial of a negative number, which is not possible
12+
Examples:
13+
>>> validate_elements_count(6, 3)
14+
>>> validate_elements_count(10, 5)
15+
"""
1116
if total_elements_count < selected_elements_count or selected_elements_count < 0:
1217
raise ValueError(
13-
"Please enter positive integers for total_elements_count and selected_elements_count where total_elements_count >= selected_elements_count"
18+
"Please enter positive integers for total_elements_count"
19+
"and selected_elements_count where total_elements_count >= selected_elements_count"
1420
)
1521

1622

1723
def stirling_second(total_elements_count: int, selected_elements_count: int) -> None:
1824
"""
19-
Returns the number of different combinations of selected_elements_count length which can
20-
be made from total_elements_count values, where total_elements_count >= selected_elements_count.
25+
Returns the number of different combinations of
26+
selected_elements_count length which can be made from
27+
total_elements_count values, where
28+
total_elements_count >= selected_elements_count.
2129
2230
Examples:
2331
>>> stirling_second(6, 3)
@@ -26,10 +34,6 @@ def stirling_second(total_elements_count: int, selected_elements_count: int) ->
2634
50682
2735
>>> stirling_second(8, 3)
2836
1389
29-
>>> stirling_second(-5, 0)
30-
Traceback (most recent call last):
31-
...
32-
ValueError: Please enter positive integers for total_elements_count and selected_elements_count where total_elements_count >= selected_elements_count
3337
"""
3438

3539
validate_elements_count(total_elements_count, selected_elements_count)

0 commit comments

Comments
 (0)