# exercice 1
from itertools import product, combinations
k = 5
cnt = 0
for c in product(range(1, 7), repeat=k):
if all(c[i] != c[(i + 2) % k] and c[i] != c[(i + 3) % k] for i in range(k)):
cnt += 1
print(cnt)
# ex3
def area(p, q, r):
u = [q[0] - p[0], q[1] - p[1]]
v = [r[0] - p[0], r[1] - p[1]]
return abs(u[0] * v[1] - u[1] * v[0]) / 2
from collections import defaultdict
m = 6
pts = [(i, j) for i in range(m) for j in range(m)]
d = 0
hsh = defaultdict(list)
# renvoie la distance au carré
dis = lambda p, q: (p[0] - q[0])**2 + (p[1] - q[1])**2
for p, q, r in combinations(pts, r=3):
if area(p, q, r) == 2:
uniq = tuple(sorted([dis(p, q), dis(p, r), dis(r, q)]))
hsh[uniq].append((p, q, r))
d += 1
for k, v in hsh.items():
print(k, v[0], len(v))
print(d)
To embed this program on your website, copy the following code and paste it into your website's HTML: