Skip to content
Closed
Changes from 11 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
4fcf7ff
Create beautiful-arrangement
zirea3l Oct 27, 2025
3a5a18c
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 27, 2025
1448767
Update beautiful_arrangement.py
zirea3l Oct 27, 2025
fb5ecf4
Update beautiful_arrangement.py
zirea3l Oct 27, 2025
69a579b
Update beautiful_arrangement.py
zirea3l Oct 27, 2025
342669a
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 27, 2025
8e9407b
Update beautiful_arrangement.py
zirea3l Oct 27, 2025
e2c218b
Update beautiful_arrangement.py
zirea3l Oct 27, 2025
cd38be7
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 27, 2025
adf05c5
Update beautiful_arrangement.py
zirea3l Oct 27, 2025
4965e59
Merge branch 'master' of https://github.com/zirea3l/Python
zirea3l Oct 27, 2025
d96f565
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 27, 2025
5e0a91d
Update beautiful_arrangement.py
zirea3l Oct 27, 2025
c2c10ee
Merge branch 'master' of https://github.com/zirea3l/Python
zirea3l Oct 27, 2025
88d1ecf
Create arithmetic_slices.py
zirea3l Oct 27, 2025
ca34f0a
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 27, 2025
898b97f
Update arithmetic_slices.py
zirea3l Oct 27, 2025
cf8d7bb
Update arithmetic_slices.py
zirea3l Oct 27, 2025
61d5edd
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 27, 2025
eff3196
Delete arithmetic_slices.py
zirea3l Oct 27, 2025
dab1c52
Update arithmetic_slices.py
zirea3l Oct 27, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 64 additions & 0 deletions dynamic_programming/beautiful_arrangement.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
"""
Suppose you have n integers labeled 1 through n.

Check failure on line 2 in dynamic_programming/beautiful_arrangement.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (W291)

dynamic_programming/beautiful_arrangement.py:2:49: W291 Trailing whitespace
A permutation of those n integers
perm (1-indexed) is considered a

Check failure on line 4 in dynamic_programming/beautiful_arrangement.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (W291)

dynamic_programming/beautiful_arrangement.py:4:33: W291 Trailing whitespace
"beautiful arrangement" if for every i (1 <= i <= n),
either of the following is true:

-> perm[i] is divisible by i.
-> i is divisible by perm[i].
Given an integer n, return the number of the

Check failure on line 10 in dynamic_programming/beautiful_arrangement.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (W291)

dynamic_programming/beautiful_arrangement.py:10:45: W291 Trailing whitespace
"beautiful arrangements" that you can construct.

"""
# Solution using Backtracking


class BeautifulArrange:
# funtion call; n is the size of the permutation (numbers 1..n)
def countarrangement(self, n: int) -> int:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As there is no test file in this pull request nor any test function or class in the file dynamic_programming/beautiful_arrangement.py, please provide doctest for the function countarrangement

Please provide descriptive name for the parameter: n

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As there is no test file in this pull request nor any test function or class in the file dynamic_programming/beautiful_arrangement.py, please provide doctest for the function countarrangement

Please provide descriptive name for the parameter: n

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As there is no test file in this pull request nor any test function or class in the file dynamic_programming/beautiful_arrangement.py, please provide doctest for the function countarrangement

Please provide descriptive name for the parameter: n

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As there is no test file in this pull request nor any test function or class in the file dynamic_programming/beautiful_arrangement.py, please provide doctest for the function countarrangement

Please provide descriptive name for the parameter: n

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As there is no test file in this pull request nor any test function or class in the file dynamic_programming/beautiful_arrangement.py, please provide doctest for the function countarrangement

Please provide descriptive name for the parameter: n

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As there is no test file in this pull request nor any test function or class in the file dynamic_programming/beautiful_arrangement.py, please provide doctest for the function countarrangement

Please provide descriptive name for the parameter: n

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As there is no test file in this pull request nor any test function or class in the file dynamic_programming/beautiful_arrangement.py, please provide doctest for the function countarrangement

Please provide descriptive name for the parameter: n

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As there is no test file in this pull request nor any test function or class in the file dynamic_programming/beautiful_arrangement.py, please provide doctest for the function countarrangement

Please provide descriptive name for the parameter: n

self.count = 0
"""
We initialize a counter to record how

Check failure on line 22 in dynamic_programming/beautiful_arrangement.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (W291)

dynamic_programming/beautiful_arrangement.py:22:46: W291 Trailing whitespace
many valid arrangements we find.
Using self.count lets the nested

Check failure on line 24 in dynamic_programming/beautiful_arrangement.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (W291)

dynamic_programming/beautiful_arrangement.py:24:41: W291 Trailing whitespace
function modify it without nonlocal.
"""

used = [False] * (n + 1)
"""
A boolean list to mark which numbers have
already been placed in the permutation.
"""

def backtrack(pos):

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As there is no test file in this pull request nor any test function or class in the file dynamic_programming/beautiful_arrangement.py, please provide doctest for the function backtrack

Please provide return type hint for the function: backtrack. If the function does not return a value, please provide the type hint as: def function() -> None:

Please provide type hint for the parameter: pos

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As there is no test file in this pull request nor any test function or class in the file dynamic_programming/beautiful_arrangement.py, please provide doctest for the function backtrack

Please provide return type hint for the function: backtrack. If the function does not return a value, please provide the type hint as: def function() -> None:

Please provide type hint for the parameter: pos

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As there is no test file in this pull request nor any test function or class in the file dynamic_programming/beautiful_arrangement.py, please provide doctest for the function backtrack

Please provide return type hint for the function: backtrack. If the function does not return a value, please provide the type hint as: def function() -> None:

Please provide type hint for the parameter: pos

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As there is no test file in this pull request nor any test function or class in the file dynamic_programming/beautiful_arrangement.py, please provide doctest for the function backtrack

Please provide return type hint for the function: backtrack. If the function does not return a value, please provide the type hint as: def function() -> None:

Please provide type hint for the parameter: pos

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As there is no test file in this pull request nor any test function or class in the file dynamic_programming/beautiful_arrangement.py, please provide doctest for the function backtrack

Please provide return type hint for the function: backtrack. If the function does not return a value, please provide the type hint as: def function() -> None:

Please provide type hint for the parameter: pos

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As there is no test file in this pull request nor any test function or class in the file dynamic_programming/beautiful_arrangement.py, please provide doctest for the function backtrack

Please provide return type hint for the function: backtrack. If the function does not return a value, please provide the type hint as: def function() -> None:

Please provide type hint for the parameter: pos

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please provide return type hint for the function: backtrack. If the function does not return a value, please provide the type hint as: def function() -> None:

As there is no test file in this pull request nor any test function or class in the file dynamic_programming/beautiful_arrangement.py, please provide doctest for the function backtrack

Please provide type hint for the parameter: pos

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please provide return type hint for the function: backtrack. If the function does not return a value, please provide the type hint as: def function() -> None:

As there is no test file in this pull request nor any test function or class in the file dynamic_programming/beautiful_arrangement.py, please provide doctest for the function backtrack

Please provide type hint for the parameter: pos

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please provide return type hint for the function: backtrack. If the function does not return a value, please provide the type hint as: def function() -> None:

As there is no test file in this pull request nor any test function or class in the file dynamic_programming/beautiful_arrangement.py, please provide doctest for the function backtrack

Please provide type hint for the parameter: pos

"""
Define the recursive backtracking function.
pos is the current position in the

Check failure on line 37 in dynamic_programming/beautiful_arrangement.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (W291)

dynamic_programming/beautiful_arrangement.py:37:47: W291 Trailing whitespace
permutation we are filling (1-indexed).
We try to assign a number to position pos.
"""
if pos > n:
self.count += 1
# We found a complete valid arrangement, so increment the total count.
return
for num in range(
1, n + 1
): # Try every candidate number num for the current position pos.
"""
Two checks in one:
1. not used[num] — the number num has

Check failure on line 50 in dynamic_programming/beautiful_arrangement.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (W291)

dynamic_programming/beautiful_arrangement.py:50:54: W291 Trailing whitespace
not been placed yet (we can use it).
2. (num % pos == 0 or pos % num == 0) —

Check failure on line 52 in dynamic_programming/beautiful_arrangement.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (W291)

dynamic_programming/beautiful_arrangement.py:52:56: W291 Trailing whitespace
the beautiful-arrangement condition:
either num divides pos or pos divides num.
If both are true, num is a valid choice for pos.

"""
if not used[num] and (num % pos == 0 or pos % num == 0):
used[num] = True
backtrack(pos + 1)
used[num] = False

backtrack(1)
return self.count
Loading