## Expérience numérique de percolation
#Jcourtin 28/12/14


########################## Importation des modules #############################

import random as rnd  #module pour avoir des nombres alétoires
import time           #module faire des chronométrages

# la classe Quick Find ci-dessous vous est fournie 
# mais vous pouvez la remplacer par 
# Quick Union ou Weighted Quick Union.

class QuickUFind:
    
    Nb_Part=None
    id=[]
    
    def __init__(self, N):
        self.Nb_Part=N          #N partitions car :
        self.id=list(range(N))  #les noeuds pointent sur eux-mêmes


    def Find(self,p):          #O(1)  
        return self.id[p]


    def isConnected(self, p, q):       #O(1)
        return self.id[p]==self.id[q]


    def Union(self, p, q):    #connecte le reseau de p SUR CELUI de q
        if (self.isConnected(p, q)): return
        
        pid=self.id[p]                     #boucle en O(N)
        for k in range(len(self.id)):      #tous ceux connecté à p prennent
            if (self.id[k]==pid):          #l'id de q
                self.id[k] = self.id[q]
        
        self.Nb_Part-=1       #une partition disparaît
#-------------------------------------------------------------------------------
################################################################################

#Q1 et Q4 dans le MAIN en bas



#Q2
def afficheMaGrille():
    print("I never finish anyth....")


#Q3
def coordCellule():
    return #
    
def indexCellule():
    return #

def indexPartition():
    return #




#Q5
def jonction():       #réalise les jonctions de maGrilleUF lors de 
                      #l'ajout d'un point valide sur maGrille
    return



#Q6
def PlayTheGame():    #réalise une expérience de percolation et renvoie
                      #le nombre d'impuretés
    return #

############################## MAIN ############################################


#Q1
#Q4
