Aller au contenu

Vingt motifs

Tous les motifs de ce notebook sont réalisés avec le module ipythonblocks.

from ipythonblocks import BlockGrid

1. Motifs et égalité

L'instruction grille = BlockGrid(12, 12, fill = (240, 240, 240)) permet de créer une grille carrée de 12 cellules de côté. La couleur de chaque cellule est un gris clair de code RVB(240, 240, 240).

grille = BlockGrid(12, 12, fill = (240, 240, 240))
grille.show()

Chaque cellule possède les attributs :

  • row: indice de ligne de la cellule
  • col: indice de colonne de la cellule

La méthode set_colors() permet de modifier les niveaux de (rouge, vert, bleu).
Au survol de la souris, les coordonnées [row, col] et la couleur de la cellule sont affichées.

Question 1.1

On considère le code suivant, qui permet de colorier en noir (code RVB (0, 0, 0)) certaines cellules et de créer le motif n°1 :

grille = BlockGrid(12, 12, fill = (240, 240, 240))

def motif_1():
    for cellule in grille:
        if 4 <= cellule.row < 8 and 4 <= cellule.col < 8:
            cellule.set_colors(0, 0, 0)
motif_1()
grille.show()

a) Dessiner sur une feuille la grille que l'on obtiendrait en exécutant le code précédent.
b) Vérifier en exécutant le code.
c) Analyser les éventuels écarts entre le dessin anticipé et l'affichage obtenu.

Question 1.2

On considère le code suivant, qui permet de colorier en noir (code RVB (0, 0, 0)) certaines cellules et de créer le motif n°2 :

grille = BlockGrid(12, 12, fill = (240, 240, 240))

def motif_2():
    for cellule in grille:
        if cellule.row == cellule.col :
            cellule.set_colors(0, 0, 0)

motif_2()  
grille.show()

a) En lisant le code, trouver les coordonnées d'une cellule coloriée en noir et les coordonnées d'une cellule qui ne l'est pas.
b) Dessiner sur une feuille la grille que l'on obtiendrait en exécutant le code précédent.
c) Vérifier en exécutant le code et en affichant la grille.
d) Quelle est la particularité des cellules qui sont en noir après l'exécution du code ?

Question 1.3

a) Observer le motif n°3 ci-dessous.
b) Trouver une ou plusieurs relation(s) vérifiée(s) par les coordonnées des cellules coloriées en noir.

c) Compléter le code suivant pour que son exécution produise le motif ci-dessus.

grille = BlockGrid(12, 12, fill = (240, 240, 240))

def motif_3():    
    for cellule in grille:
        if cellule.row == ... or cellule.row == ... : # remplacer les ...
            cellule.set_colors(0, 0, 0)

motif_3()
grille.show()

Question 1.4

Écrire un code dont l'exécution produit l'affichage du motif n°4 ci-dessous :

2. Motifs et modulo

Question 2.1

On considère le code suivant, qui permet de colorier en noir (code RVB (0, 0, 0)) certaines cellules et de créer le motif n°5 :

grille = BlockGrid(12, 12, fill = (240, 240, 240))

def motif_5():
    for cellule in grille:
        if cellule.row % 2 == 0:
            cellule.set_colors(0, 0, 0)

motif_5()
grille.show()

a) En lisant le code, trouver les coordonnées d'une cellule coloriée en noir et les coordonnées d'une cellule qui ne l'est pas.
b) Dessiner sur une feuille la grille que l'on obtiendrait en exécutant le code précédent.
c) Vérifier en exécutant le code.
d) Quelle est la particularité des cellules qui sont en noir après l'exécution du code ?

Question 2.2

a) Observer le motif n°6 ci-dessous.
b) Trouver une relation vérifiée par les coordonnées des cellules coloriées en noir.
c) Écrire un code dont l'exécution produit l'affichage du motif ci-dessous.

Question 2.3

a) Observer le motif n°7 ci-dessous.
b) Trouver une relation vérifiée par la somme des coordonnées des cellules coloriées en noir.
c) Écrire un code dont l'exécution produit l'affichage du motif ci-dessous :

Question 2.4

Pour chacun des 2 motifs (n°8 et 9) ci-dessous, écrire un code dont l'exécution produit l'affichage du motif.


Question 2.5

a) Observer le motif n°10 ci-dessous.
b) Trouver une relation vérifiée par le produit des coordonnées des cellules coloriées en noir.
c) Écrire un code dont l'exécution produit l'affichage du motif ci-dessous.

Question 2.6

Pour chacun des 4 motifs ci-dessous (n°11 à 14), écrire un code dont l'exécution produit l'affichage du motif.




3. Motifs et division

Question 3.1

On considère le code suivant, qui permet de colorier en noir (code RVB (0, 0, 0)) certaines cellules et de créer le motif n°15 :

grille = BlockGrid(12, 12, fill = (240, 240, 240))

def motif_15():    
    for cellule in grille:
        if cellule.row // 2 == cellule.col // 2 :
            cellule.set_colors(0, 0, 0)

motif_15()
grille.show()

a) En lisant le code, déterminer la couleur des cellules de coordonnées : [2, 2], [2, 3], [3, 2], [3, 3] b) Dessiner sur une feuille la grille que l'on obtiendrait en exécutant le code précédent.
c) Vérifier en exécutant le code et en affichant la grille.
d) Analyser les éventuels écarts entre le dessin anticipé et l'affichage obtenu.

Question 3.2

Pour chacun des 3 motifs ci-dessous (n° 16 à 18), écrire un code dont l'exécution produit l'affichage du motif.



4. Motifs complexes

Voici un motif dont le code comporte les différentes opérations utilisées précédemment (+, *, //, %) et combine deux fonctions.

grille = BlockGrid(12, 12, fill = (240, 240, 240))

def motif_19():    
    for cellule in grille:
        if (cellule.row // 2 + cellule.col * 3) %7 == 0 :
            cellule.set_colors(0, 0, 0)
def motif_20():    
    for cellule in grille:
        if (cellule.row * 3 + cellule.col // 2) %7 == 0     :
            cellule.set_colors(0, 0, 0)

motif_19()
motif_20()
grille.show()

Question 4

Créer son propre motif en créant et combinant les fonctions de son choix.