# 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)

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: