Skip to content

Commit 3215c91

Browse files
committed
initial commit
0 parents  commit 3215c91

File tree

4 files changed

+205
-0
lines changed

4 files changed

+205
-0
lines changed

conway'sGameOfLife.py

+171
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
#!/usr/bin/env python
2+
3+
# Simple implementation of the Conway's Game of Life
4+
# https://en.wikipedia.org/wiki/Conway's_Game_of_Life
5+
6+
7+
from time import sleep
8+
9+
def ask_cells(grid):
10+
nbCells = int(input("Nb cells ? "))
11+
for i in range(nbCells):
12+
print(f"Cell nb {i}")
13+
x = int(input("X pos ? "))
14+
y = int(input("Y pos ? "))
15+
16+
grid[x][y] = 1
17+
18+
19+
def init(grid):
20+
len = int(input("length ? "))
21+
hei = int(input("width ? "))
22+
23+
#len = 5
24+
#hei = 5
25+
26+
for i in range(len):
27+
grid.append([0] * hei)
28+
29+
30+
def around(x, y, grid):
31+
living = 0
32+
33+
# x-1,y-1 x-1,y x-1,y+1
34+
# x,y-1 x,y x,y+1
35+
# x+1,y-1 x+1,y x,y+1
36+
37+
# case: normal
38+
if x > 0 and y > 0 and x < len(grid)-1 and y < len(grid[x])-1:
39+
for i in range(3):
40+
for j in range(3):
41+
if i != 1 or j != 1:
42+
living += grid[x-1+i][y-1+j]
43+
return living
44+
45+
# case: left
46+
if x > 0 and x < len(grid)-1 and y == 0:
47+
for i in range(3):
48+
for j in range(2):
49+
if i != 1 or j != 0:
50+
living += grid[x-1+i][y+j]
51+
return living
52+
53+
# case: right
54+
if x > 0 and x < len(grid)-1 and y == len(grid[x])-1:
55+
for i in range(3):
56+
for j in range(2):
57+
if i != 1 or j != 0:
58+
living += grid[x-1+i][y-j]
59+
return living
60+
61+
# case: top
62+
if x == 0 and y > 0 and y < len(grid[x])-1:
63+
for i in range(2):
64+
for j in range(3):
65+
if i != 0 or j != 1:
66+
living += grid[x+i][y-1+j]
67+
return living
68+
69+
# case: bottom
70+
if x == len(grid)-1 and y > 0 and y < len(grid[x])-1:
71+
for i in range(2):
72+
for j in range(3):
73+
if i != 0 or j != 1:
74+
living += grid[x-i][y-1+j]
75+
return living
76+
77+
# case: left-top
78+
if x == 0 and y == 0:
79+
for i in range(2):
80+
for j in range(2):
81+
if i != 0 or j != 0:
82+
living += grid[x+i][y+j]
83+
return living
84+
85+
# case: right-top
86+
if x == 0 and y == len(grid[x])-1:
87+
for i in range(2):
88+
for j in range(2):
89+
if i != 0 or j != 0:
90+
living += grid[x+i][y-j]
91+
return living
92+
93+
# case: left-bottom
94+
if x == len(grid)-1 and y == 0:
95+
for i in range(2):
96+
for j in range(2):
97+
if i != 0 or j != 0:
98+
living += grid[x-i][y+j]
99+
return living
100+
101+
# case: right-bottom
102+
if x == len(grid)-1 and y == len(grid[x])-1:
103+
for i in range(2):
104+
for j in range(2):
105+
if i != 0 or j != 0:
106+
living += grid[x-i][y-j]
107+
return living
108+
109+
110+
def update(grid):
111+
update = []
112+
for i in range(len(grid)):
113+
update.append([0] * len(grid[i]))
114+
115+
for i in range(len(grid)):
116+
for j in range(len(grid[i])):
117+
update[i][j] = grid[i][j]
118+
119+
for i in range(len(grid)):
120+
for j in range(len(grid[i])):
121+
living = around(i,j,grid)
122+
123+
if living == 3:
124+
update[i][j] = 1
125+
elif living != 2 and grid[i][j] == 1:
126+
update[i][j] = 0
127+
128+
for i in range(len(grid)):
129+
for j in range(len(grid[i])):
130+
grid[i][j] = update[i][j]
131+
132+
133+
def display(grid, sep):
134+
for i in range(len(grid)):
135+
res = "|"
136+
for j in range(len(grid[i])):
137+
if grid[i][j] == 1:
138+
res += "O"
139+
else:
140+
res += " "
141+
res += "|"
142+
print(res)
143+
144+
print(sep)
145+
146+
147+
def main():
148+
grid = []
149+
150+
init(grid)
151+
152+
# if you want to populate the grid interactively
153+
ask_cells(grid)
154+
155+
sep = "+"
156+
for i in range(len(grid)):
157+
sep += "-"
158+
sep += "+"
159+
160+
print(sep)
161+
display(grid,sep)
162+
163+
while True:
164+
update(grid)
165+
display(grid,sep)
166+
sleep(0.5)
167+
168+
169+
170+
if __name__ == "__main__":
171+
main()

euler/gen.sh

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
touch $@
2+
3+
echo -e "#!/usr/bin/env python\n" >> $@
4+
5+
chmod +x $@

euler/problem1.py

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/usr/bin/env python
2+
3+
# If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
4+
# Find the sum of all the multiples of 3 or 5 below 1000.
5+
6+
l = []
7+
8+
for i in range(1000):
9+
if i%3 == 0 or i%5 == 0:
10+
l.append(i)
11+
12+
s = 0
13+
for i in l:
14+
s = s+i
15+
16+
print(s)

euler/problem2.py

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/usr/bin/env python
2+
3+
l = [1,2,3]
4+
5+
s = 1+2+3
6+
while l[2] < 4_000_000:
7+
l[2] = l[1] + l[0]
8+
l[0] = l[1]
9+
l[1] = l[2]
10+
s = s+l[2]
11+
print(l[2])
12+
13+
print(s)

0 commit comments

Comments
 (0)