tp d'informatique 27 octobre 2022

This commit is contained in:
Debucquoy 2022-10-27 16:33:09 +02:00
parent 84c0136d56
commit bcc891bcb6
No known key found for this signature in database
GPG Key ID: 3B9EEB701C9E2919
5 changed files with 93 additions and 0 deletions

15
27oct/ex4.py Normal file
View File

@ -0,0 +1,15 @@
import random
def creer_enchevetrements(bag, i, max_en):
"""creer une suite d'enchevetrement aleatoire """
autre_baguettes = bag[:]
autre_baguettes.pop(i)
return [(random.choice(autre_baguettes), i) for _ in range(random.randint(1, max_en))]
if __name__ == "__main__":
for _ in range(100):
p = list(range(42))
random.shuffle(p)
print(creer_enchevetrements(p, 8, 10))

18
27oct/ex5.py Normal file
View File

@ -0,0 +1,18 @@
import random
from ex4 import creer_enchevetrements
def creer_mikado(bag):
"""creer un sac de mikado avec des enchevetrement aleatoire """
game = list()
nombre_enchevetrements = random.randint(1, len(bag))
while len(game) < nombre_enchevetrements:
game.append(creer_enchevetrements(bag, random.choice(bag), 1)[0])
return game
if __name__ == "__main__":
for _ in range(100):
bag = list(range(random.randint(2, 42)))
random.shuffle(bag)
print(creer_mikado(bag))

27
27oct/ex6.py Normal file
View File

@ -0,0 +1,27 @@
def peut_retirer(i, bag, jeu):
"""verifie si une baguette peut etre retiree """
on_top = bag[:]
for intersection in jeu:
if intersection[1] in on_top:
on_top.remove(intersection[1])
return i in on_top
def retirer(i, bag, jeu):
bag.remove(i)
for intersection in jeu:
if i in intersection:
jeu.remove(intersection)
if __name__ == "__main__":
from ex5 import creer_mikado
bag = list(range(10))
game = creer_mikado(bag)
print(game)
retirer(5, bag, game)
print(game)
# print(bag)
# print(game)
# print(peut_retirer(5, bag, game))

33
27oct/ex7.py Normal file
View File

@ -0,0 +1,33 @@
from ex6 import peut_retirer, retirer
def quel_ordre(_bag, jeu):
"""retourne un ordre possible sinon None """
bag = _bag[:]
order = list()
last_order = None
while order != last_order:
last_order = order[:]
print(last_order)
for i in bag:
if peut_retirer(i, bag, jeu):
order.append(i)
retirer(i, bag, jeu)
bag_t, order_t = bag[:], order[:]
bag_t.sort()
order_t.sort()
print(order_t, bag_t)
if(order_t == bag_t):
return order
else:
return None
if __name__ == "__main__":
from ex5 import creer_mikado
bag = list(range(10))
game = creer_mikado(bag)
print(bag)
print(game)
print(quel_ordre(bag, game))

BIN
27oct/serie6.pdf Normal file

Binary file not shown.