def sort_queue(data: Queue) -> Queue: # TODO: Retourner la séquence triée sortedQueue = Queue() sortedQueue.put_many( sorted([data.get() for el in range(len(data))]) ) # Même chose que pour pile, mais data.get prend les éléments à l'envers return sortedQueue
def sort_queue(data: Queue) -> Queue: # TODO: Retourner la séquence triée temp = [data.get() for _ in range(len(data))] temp.sort() data.put_many(temp) return data
def sort_queue(data: Queue) -> Queue: # TODO: Retourner la séquence triée x = Queue() values = [] for i in range(len(data)): values.append(data.get()) x.put_many(sorted(values)) return x
def delete_nth_from_queue(data: Queue, position: int) -> Queue: # TODO: Supprimer le énième (position) élément de data et retourner la nouvelle structure de données. res = Queue() for removedEl in range(position): # Sortir les elements jusqu'a position res.put(data.get()) data.get() # retirer l'element a la position n for putEl in range( len(data)): # mettre les elements restants de data dans temp res.put(data.get()) return res
def string_and_structs(string: str) -> tuple: # TODO: Parcourez la chaîne de caractères. # Si le caractère est une lettre, on l'ajoute dans fifo. # Sinon, on retire un élément de fifo pour l'insérer dans lifo. fifo, lifo = Queue(), Stack() for char in string: if 65 <= ord(char) <= 90 or 97 <= ord(char) <= 122: fifo.put(char) else: lifo.put(fifo.get()) return fifo, lifo
def delete_nth_from_queue(data: Queue, position: int) -> Queue: # TODO: Supprimer le énième (position) élément de data et retourner la nouvelle structure de données. # something weird with this function for i in range(len(data)): if i == position: print( f"L'element a supprimer est {data.get()} a la position {position}." ) data.get() else: data.put(data.get()) return data
def string_and_structs(string: str) -> tuple: # TODO: Parcourez la chaîne de caractères. # Si le caractère est une lettre, on l'ajoute dans fifo. # Sinon, on retire un élément de fifo pour l'insérer dans lifo. alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" fifo, lifo = Queue(), Stack() for letter in string: if letter in alphabet: fifo.put(letter) else: lifo.put(fifo.get()) return fifo, lifo
def string_and_structs(string: str) -> tuple: # TODO: Parcourez la chaîne de caractères. # Si le caractère est une lettre, on l'ajoute dans fifo. # Sinon, on retire un élément de fifo pour l'insérer dans lifo. fifo, lifo = Queue(), Stack() for i in string: if i.isalpha(): fifo.put(i) else: lifo.put(fifo.get()) return fifo, lifo
def main() -> None: print("On inverse des données...") print(f"Résultat: {reverse_data()}") n = 4 lifo = Stack() lifo.put_many([i for i in range(20)]) print( f"On retire l'élément à la position {n} de la pile et on obtient: {delete_nth_from_stack(lifo, n)}" ) n = 6 fifo = Queue() fifo.put_many([i for i in range(20)]) print( f"On retire l'élément à la position {n} de la file et on obtient: {delete_nth_from_queue(fifo, n)}" ) lifo = Stack() lifo.put_many([randint(0, 1000) for _ in range(20)]) print(f"On ordonne une file: {sort_stack(lifo)}") fifo = Queue() fifo.put_many([randint(0, 1000) for _ in range(20)]) print(f"On ordonne une file: {sort_queue(fifo)}") sequence = "te!eYy.E6e/T" print( f"Le résulat de la manipulation de la séquence: {string_and_structs(sequence)}" )
def string_and_structs(string: str) -> tuple: # TODO: Parcourez la chaîne de caractères. # Si le caractère est une lettre, on l'ajoute dans fifo. # Sinon, on retire un élément de fifo pour l'insérer dans lifo. fifo, lifo = Queue(), Stack() for char in string: if ('a' <= char) and (char <= 'z') or ('A' <= char) and ( char <= 'Z'): # Minuscule ou majuscule fifo.put(char) else: lifo.put(fifo.get()) return fifo, lifo
def string_and_structs(string: str) -> tuple: # TODO: Parcourez la chaîne de caractères. # Si le caractère est une lettre, on l'ajoute dans fifo. # Sinon, on retire un élément de fifo pour l'insérer dans lifo. fifo, lifo = Queue(), Stack() return fifo, lifo
def test_delete_queue(self): fifo = Queue() fifo.put_many(list(range(20))) answer = Queue() answer.put_many(list(range(1, 20))) output = exercice.delete_nth_from_queue(fifo, 0) self.assertEqual(output, answer, 'Mauvaise reponse')
def test_sort_queue(self): values = [randint(0, 1000) for _ in range(20)] fifo = Queue() fifo.put_many(values) output = exercice.sort_stack(fifo) answer = Queue() answer.put_many(sorted(values)) self.assertEqual(output, answer, 'Mauvaise reponse')
def delete_nth_from_queue(data: Queue, position: int) -> Queue: # TODO: Supprimer le énième (position) élément de data et retourner la nouvelle structure de données. x = Queue() for i in range(len(data)): if i == position: data.get() else: x.put(data.get()) return x return Queue()
def delete_nth_from_queue(data: Queue, position: int) -> Queue: # TODO: Supprimer le énième (position) élément de data et retourner la nouvelle structure de données. size_queue = len(data) temp = [data.get() for _ in range(position)] data.put_many(temp) data.get() temp = [ data.get() for _ in range(size_queue - position - 1) ] # -1 car une valeur ne doit pas être mise dans la liste temporaire data.put_many(temp) return data
def reverse_data(data: list = None): # TODO: Demander 10 valeurs à l'utilisateur, # les stocker dans une structure de données, # et les retourner en ordre inverse, sans utiliser de liste. q = Queue() q.put('a') q.put_many('blabalbal') elem = q.get() s = Stack s.put(1) elem2 = s.get() if data is None: pass # Demander les valeurs ici reversed_data = None # Stocker le résultat ici return reversed_data
def delete_nth_from_queue(data: Queue, position: int) -> Queue: # TODO: Supprimer le énième (position) élément de data et retourner la nouvelle structure de données. return Queue()
def sort_queue(data: Queue) -> Queue: # TODO: Retourner la séquence triée return Queue()
def sort_queue(data: Queue) -> Queue: # TODO: Retourner la séquence triée data_list = [data.get() for _ in range(len(data))] data.put_many(sorted(data_list)) return data