Skip to content

Commit 9720e6a

Browse files
MaximSmolskiygithub-actions
and
github-actions
authored
Add Project Euler problem 117 solution 1 (TheAlgorithms#6872)
Update DIRECTORY.md --------- Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
1 parent ee77812 commit 9720e6a

File tree

3 files changed

+55
-0
lines changed

3 files changed

+55
-0
lines changed

DIRECTORY.md

+2
Original file line numberDiff line numberDiff line change
@@ -956,6 +956,8 @@
956956
* [Sol1](project_euler/problem_115/sol1.py)
957957
* Problem 116
958958
* [Sol1](project_euler/problem_116/sol1.py)
959+
* Problem 117
960+
* [Sol1](project_euler/problem_117/sol1.py)
959961
* Problem 119
960962
* [Sol1](project_euler/problem_119/sol1.py)
961963
* Problem 120

project_euler/problem_117/__init__.py

Whitespace-only changes.

project_euler/problem_117/sol1.py

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
"""
2+
Project Euler Problem 117: https://projecteuler.net/problem=117
3+
4+
Using a combination of grey square tiles and oblong tiles chosen from:
5+
red tiles (measuring two units), green tiles (measuring three units),
6+
and blue tiles (measuring four units),
7+
it is possible to tile a row measuring five units in length
8+
in exactly fifteen different ways.
9+
10+
|grey|grey|grey|grey|grey| |red,red|grey|grey|grey|
11+
12+
|grey|red,red|grey|grey| |grey|grey|red,red|grey|
13+
14+
|grey|grey|grey|red,red| |red,red|red,red|grey|
15+
16+
|red,red|grey|red,red| |grey|red,red|red,red|
17+
18+
|green,green,green|grey|grey| |grey|green,green,green|grey|
19+
20+
|grey|grey|green,green,green| |red,red|green,green,green|
21+
22+
|green,green,green|red,red| |blue,blue,blue,blue|grey|
23+
24+
|grey|blue,blue,blue,blue|
25+
26+
How many ways can a row measuring fifty units in length be tiled?
27+
28+
NOTE: This is related to Problem 116 (https://projecteuler.net/problem=116).
29+
"""
30+
31+
32+
def solution(length: int = 50) -> int:
33+
"""
34+
Returns the number of ways can a row of the given length be tiled
35+
36+
>>> solution(5)
37+
15
38+
"""
39+
40+
ways_number = [1] * (length + 1)
41+
42+
for row_length in range(length + 1):
43+
for tile_length in range(2, 5):
44+
for tile_start in range(row_length - tile_length + 1):
45+
ways_number[row_length] += ways_number[
46+
row_length - tile_start - tile_length
47+
]
48+
49+
return ways_number[length]
50+
51+
52+
if __name__ == "__main__":
53+
print(f"{solution() = }")

0 commit comments

Comments
 (0)