-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconnect.py
More file actions
executable file
·97 lines (80 loc) · 2.47 KB
/
connect.py
File metadata and controls
executable file
·97 lines (80 loc) · 2.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/usr/bin/env python3
# école supélec contrale - 2016 - c. dürr
# devoir maison 1 - connect
# www-desir.lip6.fr/~durrc/Iut/optim/t/dm1-connect/
import sys
from random import randint
def generate():
"""Generates a random grid
"""
# generate random connections, place 0 at the border
lr = [[randint(0, 1) for j in range(n-1)] + [0] for i in range(n)]
tb = [[randint(0, 1) for j in range(n)] for i in range(n-1)]
tb += [[0] * n]
for i in range(n):
for j in range(n):
# encoding of the cell
c = tb[i - 1][j] + 2*lr[i][j - 1] + 4*tb[i][j] + 8*lr[i][j]
cc = c | (c << 4)
# normalized orientation
p = min((cc >> i) & 15 for i in range(4))
print(hex(p)[-1], end='')
print()
def read_line():
return list(int(x, 16) for x in sys.stdin.readline().strip())
def read_grid():
"""reads a grid from stdin
"""
grid = [read_line()]
n = len(grid[0])
for _ in range(n - 1):
grid.append(read_line())
return grid
def prettyprint(grid):
""" reads a grid from stdin and pretty prints it.
"""
n = len(grid)
for i in range(n):
# top row of cell
for j in range(n):
if grid[i][j] & 1:
print(" | ", end='')
else:
print(" ", end='')
print()
# center row of cell
for j in range(n):
if grid[i][j] & 2:
print("--o", end='')
else:
print(" o", end='')
if grid[i][j] & 8:
print("--", end='')
else:
print(" ", end='')
print()
# bottom row of cell
for j in range(n):
if grid[i][j] & 4:
print(" | ", end='')
else:
print(" ", end='')
print()
def solve(grid):
# mettez votre code ici
pass
def help():
print("Usage: ./connect.py <arguments>")
print(" -g <n> to generate a grid of dimension n*n")
print(" -p to pretty print a grid given in stdin")
print(" -s to solve a grid given in stdin")
if __name__ == '__main__':
if len(sys.argv) == 3 and sys.argv[1] == "-g":
n = int(sys.argv[2])
generate()
elif len(sys.argv) == 2 and sys.argv[1] == "-p":
prettyprint(read_grid())
elif len(sys.argv) == 2 and sys.argv[1] == "-s":
solve(read_grid())
else:
help()