Skip to content
Snippets Groups Projects
Select Git revision
  • f4152d9a9bdeabc94c8b98d3b62da0fcce8b59e5
  • master default protected
2 results

test_file.py

Blame
  • Forked from Vuillemot Romain / INF-TC1
    Source project has a limited visibility.
    tas.py 1.63 KiB
    class Tas():
        def __init__(self):
            self.__values = []
    
        def push(self, value):
            self.__values.append(value)
    
        def peek(self, i): # pop sans suppression
            return self.__values[i], i
            
        def fg(self, i):
            left_i = 2 * i + 1
            if left_i > len(self.__values):
                return None, left_i
            else:
                return self.__values[left_i], left_i
    
        def fd(self, i):
            droite_i = 2 * i + 2
            if droite_i > len(self.__values):
                return None, droite_i
            else:
                return self.__values[droite_i], droite_i
    
        def parent(self, i):
            return self.__values[(i - 1) // 2]
    
        def afficher(self):
            return ' '.join(str(v) for v in self.__values)
    
        def inserer(self, value):
            self.push(value)
            i = len(self.__values) - 1
            while (i + 1) // 2 > 0:
                if self.__values[i] < self.parent(i):
                    tmp = self.__values[i // 2]
                    self.__values[i // 2] = self.__values[i]
                    self.__values[i] = tmp
                i = i // 2
            
        def supprimer(self, i):
    
            v = self.__values.pop(i)
            max_i = i
            n = len(self.__values) - 1
    
            while self.__values[i] > self.fg(i)[0] or self.__values[i] > self.fd(i)[0]:
    
                max = self.__values[i]
                
                if i < n and max > self.fg(i)[0]:
                    max_i = 2 * i + 1
    
                if i < n and max > self.fd(i)[0]:
                    max_i = 2 * i + 2
    
                if max_i != i: 
                    self.__values[i], self.__values[max_i] = self.__values[max_i], self.__values[i]
    
                i = max_i
    
            return v