banniere

Philippe Brouard / ingénieur artiste

trans

Mathématiques

trans trans

Mode lecture article sur le site Philippe Brouard / ingénieur artiste

11 janvier 2023

512 façons de remplir une grille de morpion

Épuisement des possibilités de noir sur blanc avec un petit format

Nouveauté

Avec 100 motifs en noir et blanc j'ai introduit l'exploration créative des constructions de splines noires sur fond blanc. J'ai imaginé une nomenclature pouvant contenir 59 049 motifs, sachant que je n'arrivai jamais jusqu'au bout. Contrairement à cette expérience, pour une fois j'ai décidé de mettre en situation l'objectif d'aller jusqu'au bout !

Il faut donc considérablement simplifier les règles du jeu.

Il n'y a que deux possibilités de faire un monochrome

Partons du début, si on se donne le choix entre tout mettre en blanc ou tout mettre en noir, ça ne laisse que deux possibilités : un monochrome blanc ou un monochrome noir.

Séparons l'image en quatre coins

Pour aller plus loin, considérons une image avec quatre zones : en haut à droite, en haut à gauche, en bas à droite, en bas à gauche. On peut tout remplir en blanc ou tout remplir en noir. Il y a aussi quatre façons de laisser seulement un coin blanc et encore quatre façons de laisser seulement un coin noir. Il y a aussi quatres façons de remplir uniquement la moitié de l'image (seulement en bas, seulement en haut, seulement à droite, seulement à gauche). Pour finir, il reste deux façons de mettre uniquement deux coins noirs. Ce qui fait, 2+4+4+4+2 = 16 combinaisons pour remplir cette image.

Et avec une image délimitée par une grille 3 x 3?...

Cette grille ressemble à celle du jeu du morpion. Les possibilités de remplissage en noir et blanc sont encore plus nombreuses. Il y a 9 cases, chaque case pouvant être noire ou blanche. Disons que blanc = 0 et noir = 1, on peut définir la composition sous la forme d'un nombre binaire à 9 bits. Par exemple 000000000 représente l'image toute blanche et 111111111 représente l'image toute noire. Il y a exactement 2^9 = 512 nombres binaires avec 9 bits. Alors pour épuiser toutes les possibilités de remplir l'image en noir et blanc il vaut mieux faire un programme informatique.

article image 512 façons de remplir une grille de morpion
Les 36 premières images avec la grille 3x3
// code en PHP
// fonction pour créer une image à partir d'une chaine de 9 bits
function createImage($bitString, $folder, $img_width, $img_height)
{
	$image = imagecreatetruecolor($img_width, $img_height);
	$white = imagecolorallocate($image, 255, 255, 255);
	$black = imagecolorallocate($image, 0, 0, 0);
	// On commence par remplir l'image en blanc
	imagefilledrectangle($image, 0, 0, $img_width-1, $img_height-1, $white);
	// On examine la suite de 9 bits dans la chaine de caractères
	for ($i=0; $i<9; $i++)
	{
		$bit = substr($bitString, $i, 1);
		if ($bit == "1")
		{
			// Calcul de la position du carré noir à mettre dans la grille 3x3
			$x = $i%3;
			$y = floor($i/3);
			// Remplissage du carré noir
			imagefilledrectangle($image, 
								$x*($img_width/3), 
								$y*($img_width/3), 
								(($x+1)*($img_width/3))-1, 
								(($y+1)*($img_height/3))-1, 
								$black);
		}
	}

	// Sauvegarde de l'image dans le dossier de destination
	imagepng($image,$folder.$bitString.".png");
	imagedestroy($image);
}

// Ouverture pour lecture d'un fichier contenant les 512 nombres binaires
$handle = fopen("512binNumbers.csv", "r");
while (($line = fgets($handle, 4096)) !== false) {
  // Pour chaque ligne du fichier, on appelle la fonction qui génère une image en fonction du nombre lu.
  createImage(substr($line,0,9),"img2/", 45, 45);  
}
// Fermeture du fichier
fclose($handle);

fin

En fichier joint, une planche contact affiche le résultat avec les 512 images correspondantes. Mission accomplie ! Mais si chaque case est comparée à un pixel, chaque image ne ferait que 3 pixels de haut et 3 pixels de large, c'est minuscule. Avec une image à peine plus grande faisant 6 pixels de haut et 6 pixels de large, le nombre de combinaisons atteint déjà 2^(6*6) = 68 719 476 736, pour se donner une idée ce nombre approche celui du nombre d'étoiles dans la voie lactée ! Du point de vue épuisement, on va pouvoir s'arrêter là.

Partager : https://philippebrouard.fr/?a=238

Fichier joint (54ko), cliquez pour agrandir :
Planche contact 512 images


Toutes les combinaisons pour remplir une grille 3x3 en noir et blanc