I
1 -
2 utiliser Graphics.fill_rect
3 -

II 
1 On demande bien l'existence d'un chemin, et non simplement d'une arête. On attend un parcours en largeur ou en profondeur.
2 La réponse attendue est file de priorité.
3 On s'attend à une implémentation par tas, une implémentation moins efficace sera pénalisée. Les meilleurs candidats peuvent identifier une alternative pertinente pour cette partie, par exemple une liste de listes de sommets de même distance. 
5 
	a Dijkstra 
	b distance Manhattan 
	c distance Manhattan multipliée par un flottant > 1 (des réponses plus élaborées, par exemple en privilégiant les chemins qui contournent le centre, n'étaient pas attendues mais peuvent être pertinentes)
6 Dessiner toute la grille initialement, puis recolorier uniquement les cases pertinentes à chaque étape
7 Par exemple, des hashtbl pour stocker distance, prédécesseur et position dans le tas d'une case; et un tableau dynamique pour le tas. Attention, la file de prio ne doit pas contenir de doublons, il faut pouvoir descendre la priorité d'un sommet déjà dans la file.

III
1 On peut écrire une fonction testant si deux cases sont reliées, en faisant un schéma pour regarder où précisément chercher un obstacle. Plus simple mais plus coûteux, pour chaque paire de cases on teste pour chaque obstacle du rectangle qu'elles délimitent si il "bouche la vue" entre les deux cases.
2 Retracer la grille à chaque itération pour effacer le chemin précédent. Faire un Graphics.auto_synchronize false; puis synchroniser après avoir tracer entièrement la nouvelle grille pour un meilleur rendu.
3 On attend comme observation que la distance euclidienne est la meilleure heuristique admissible dans ce cas.

IV
L'approche est libre, on peut se contenter d'une approximation, de toute façon la spécification est floue. Je passe par une simulation physique où les couleurs se repoussent avec des forces en 1/r**2, mais ça ne marche pas aussi bien que je voudrais (toutes les couleurs se retrouvent à la frontière du cube). Sinon k-means doit pouvoir donner une approximation valable.
