Skip to content

Commit 2f41327

Browse files
committed
Add solution
1 parent 5894554 commit 2f41327

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

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)