diff --git a/DEV3.2/DEV32/Division.java b/DEV3.2/DEV32/Division.java new file mode 100644 index 0000000..37e85f7 --- /dev/null +++ b/DEV3.2/DEV32/Division.java @@ -0,0 +1,41 @@ +/*Felix-vimalaratnam +Patrick*/ + +public class Division { + + public static boolean IsInt(String c){ + try{ + int a = Integer.parseInt(c); + }catch(Exception e){ + return Boolean.FALSE; + } + return Boolean.TRUE; + } + + public static String toString(FileTableau f){ + String ligne = ""; + while(f.taille() != 0){ + ligne = ligne + " " + f.retirer().toString(); + } + return ligne; + } + + public static void main(String[] args) { + if (args.length == 0) { + System.out.println("Veuillez fournir une expression en notation polonaise inversée."); + return; + } + FileTableau ligne1 = new FileTableau<>(); + FileTableau ligne2 = new FileTableau<>(); + for (int i = 0; i < args.length; i++){ + if (IsInt(args[i])){ + ligne1.ajouter(Integer.parseInt(args[i])); + } + else{ + ligne2.ajouter(args[i]); + } + } + System.out.println(toString(ligne1)); + System.out.println(toString(ligne2)); + } +} \ No newline at end of file diff --git a/DEV3.2/DEV32/Division2.java b/DEV3.2/DEV32/Division2.java new file mode 100644 index 0000000..4e33552 --- /dev/null +++ b/DEV3.2/DEV32/Division2.java @@ -0,0 +1,50 @@ +/*Felix-vimalaratnam +Patrick*/ + +public class Division2 { + + public static boolean IsInt(String c){ + try{ + int a = Integer.parseInt(c); + }catch(Exception e){ + return Boolean.FALSE; + } + return Boolean.TRUE; + } + + public static String toString(FileTableau2 f){ + String ligne = ""; + while(f.taille() != 0){ + ligne = ligne + " " + f.retirer().toString(); + } + return ligne; + } + + public static String toStringpourString(FileTableau2 f){ + String ligne = ""; + while(f.taille() != 0){ + f.removeif(); + ligne = ligne + " " + f.retirer().toString(); + } + return ligne; + } + + public static void main(String[] args) { + if (args.length == 0) { + System.out.println("Veuillez fournir une expression en notation polonaise inversée."); + return; + } + FileTableau2 ligne1 = new FileTableau2<>(); + FileTableau2 ligne2 = new FileTableau2<>(); + for (int i = 0; i < args.length; i++){ + if (IsInt(args[i])){ + ligne1.ajouter(Integer.parseInt(args[i])); + } + else{ + ligne2.ajouter(args[i]); + } + } + System.out.println(toString(ligne1)); + System.out.println(toStringpourString(ligne2)); + } +} \ No newline at end of file diff --git a/DEV3.2/DEV32/Ensemble.java b/DEV3.2/DEV32/Ensemble.java new file mode 100644 index 0000000..8d8e24d --- /dev/null +++ b/DEV3.2/DEV32/Ensemble.java @@ -0,0 +1,21 @@ +/*Felix-vimalaratnam +Patrick*/ + +/** + * Une structure de données abstraite qui contient des entiers entre 0 et 100. Aucune + * valeur ne peut apparaître plusieurs fois dans cette structure. + * + * @version 1.0 15 January 2025 + * @author Luc Hernandez + */ +public interface Ensemble { + /** + * Ajoute une nouvelle valeur à la structure. + * + * @param element la nouvelle valeur + * @return true si la nouvelle valeur a été ajoutée, false si elle était déjà présente + * @throws IllegalArgumentException si l'argument n'est pas compris entre 0 et 100 + */ + public boolean ajouter(byte element); + public boolean comparer(byte element); +} \ No newline at end of file diff --git a/DEV3.2/DEV32/File.java b/DEV3.2/DEV32/File.java new file mode 100644 index 0000000..466f751 --- /dev/null +++ b/DEV3.2/DEV32/File.java @@ -0,0 +1,9 @@ +/*Felix-vimalaratnam +Patrick*/ + +public interface File { + void ajouter(E element); // Ajoute un élément en fin de la file + E retirer(); // Retire et retourne l'élément en tête de la file + int taille(); // Retourne la taille de la file + boolean estVide(); // Vérifie si la file est vide +} \ No newline at end of file diff --git a/DEV3.2/DEV32/File2.java b/DEV3.2/DEV32/File2.java new file mode 100644 index 0000000..70656d1 --- /dev/null +++ b/DEV3.2/DEV32/File2.java @@ -0,0 +1,10 @@ +/*Felix-vimalaratnam +Patrick*/ + +public interface File2 { + void ajouter(E element); // Ajoute un élément en fin de la file + E retirer(); // Retire et retourne l'élément en tête de la file + void removeif(); //retire si il a un tiret + int taille(); // Retourne la taille de la file + boolean estVide(); // Vérifie si la file est vide +} \ No newline at end of file diff --git a/DEV3.2/DEV32/FileTableau.java b/DEV3.2/DEV32/FileTableau.java new file mode 100644 index 0000000..d837596 --- /dev/null +++ b/DEV3.2/DEV32/FileTableau.java @@ -0,0 +1,44 @@ +/*Felix-vimalaratnam +Patrick*/ + +public class FileTableau implements File { + private static final int CAPACITE_INITIALE = 20; + private E[] elements; + private int taille = 0; + private int debut = 0; + private int fin = 0; + + @SuppressWarnings("unchecked") + public FileTableau() { + elements = (E[]) new Object[CAPACITE_INITIALE]; // Création du tableau initial + } + + @Override + public void ajouter(E element) { + elements[fin] = element; + fin = (fin + 1); + taille++; + } + + @Override + public E retirer() { + if (estVide()) { + throw new IllegalStateException("La file est vide"); + } + E element = elements[debut]; + elements[debut] = null; // Supprime la référence pour éviter les fuites de mémoire + debut = (debut + 1); + taille--; + return element; + } + + @Override + public int taille() { + return taille; + } + + @Override + public boolean estVide() { + return taille == 0; + } +} \ No newline at end of file diff --git a/DEV3.2/DEV32/FileTableau2.java b/DEV3.2/DEV32/FileTableau2.java new file mode 100644 index 0000000..83f3e05 --- /dev/null +++ b/DEV3.2/DEV32/FileTableau2.java @@ -0,0 +1,54 @@ +/*Felix-vimalaratnam +Patrick*/ + +public class FileTableau2 implements File2 { + private static final int CAPACITE_INITIALE = 20; + private E[] elements; + private int taille = 0; + private int debut = 0; + private int fin = 0; + + @SuppressWarnings("unchecked") + public FileTableau2() { + elements = (E[]) new Object[CAPACITE_INITIALE]; // Création du tableau initial + } + + @Override + public void ajouter(E element) { + elements[fin] = element; + fin = (fin + 1); + taille++; + } + + @Override + public void removeif() { + E element = elements[debut]; + if (element.toString().charAt(0) == '-') { + elements[debut] = null; // Supprime la référence pour éviter les fuites de mémoire + debut = (debut + 1); + taille--; + } + } + + @Override + public E retirer() { + if (estVide()) { + throw new IllegalStateException("La file est vide"); + } + E element = elements[debut]; + elements[debut] = null; // Supprime la référence pour éviter les fuites de mémoire + debut = (debut + 1); + taille--; + return element; + } + + @Override + public int taille() { + return taille; + } + + @Override + public boolean estVide() { + return taille == 0; + } +} \ No newline at end of file diff --git a/DEV3.2/ancien_controle/Bulles.java b/DEV3.2/ancien_controle/Bulles.java new file mode 100644 index 0000000..fed9f5a --- /dev/null +++ b/DEV3.2/ancien_controle/Bulles.java @@ -0,0 +1,58 @@ +import java.util.LinkedList; +import java.util.Queue; + +public class Bulles { + + // Méthode bulle : effectue un parcours + public static boolean bulle(Queue source, Queue destination) { + boolean changed = false; + if (source.isEmpty()) { + return false; + } + + int prev = source.poll(); // On récupère le premier élément + while (!source.isEmpty()) { + int current = source.poll(); + if (prev > current) { // Si les deux éléments ne sont pas dans l'ordre + changed = true; + destination.add(current); // Ajouter le plus petit élément + prev = prev; // Garder prev pour continuer la comparaison + } else { + destination.add(prev); + prev = current; + } + } + destination.add(prev); // Ajouter le dernier élément + return changed; + } + + // Méthode tri : utilise bulle pour trier complètement la file + public static void tri(Queue file) { + Queue intermediaire = new LinkedList<>(); + boolean changed; + do { + changed = bulle(file, intermediaire); + // Inverser les files pour un nouveau parcours + Queue temp = file; + file = intermediaire; + intermediaire = temp; + } while (changed); + + // Les valeurs triées se trouvent dans `file` + while (!file.isEmpty()) { + System.out.print(file.poll() + " "); + } + System.out.println(); + } + + public static void main(String[] args) { + // Exemple : lecture des entiers passés en arguments + Queue file = new LinkedList<>(); + for (String arg : args) { + file.add(Integer.parseInt(arg)); + } + + // Tri et affichage du résultat + tri(file); + } +} diff --git a/DEV3.2/ancien_controle/GeneriqueBulles.java b/DEV3.2/ancien_controle/GeneriqueBulles.java new file mode 100644 index 0000000..1c3c733 --- /dev/null +++ b/DEV3.2/ancien_controle/GeneriqueBulles.java @@ -0,0 +1,55 @@ +import java.util.LinkedList; +import java.util.Queue; + +public class GeneriqueBulles> { + + // Méthode bulle générique + public static > boolean bulle(Queue source, Queue destination) { + boolean changed = false; + if (source.isEmpty()) { + return false; + } + + T prev = source.poll(); + while (!source.isEmpty()) { + T current = source.poll(); + if (prev.compareTo(current) > 0) { + changed = true; + destination.add(current); + prev = prev; + } else { + destination.add(prev); + prev = current; + } + } + destination.add(prev); + return changed; + } + + // Méthode tri générique + public static > void tri(Queue file) { + Queue intermediaire = new LinkedList<>(); + boolean changed; + do { + changed = bulle(file, intermediaire); + Queue temp = file; + file = intermediaire; + intermediaire = temp; + } while (changed); + + while (!file.isEmpty()) { + System.out.print(file.poll() + " "); + } + System.out.println(); + } + + public static void main(String[] args) { + Queue file = new LinkedList<>(); + file.add("Banane"); + file.add("Pomme"); + file.add("Orange"); + file.add("Ananas"); + + tri(file); + } +} \ No newline at end of file diff --git a/DEV3.2/ancien_controle/SimpleDeque.java b/DEV3.2/ancien_controle/SimpleDeque.java new file mode 100644 index 0000000..7595a7e --- /dev/null +++ b/DEV3.2/ancien_controle/SimpleDeque.java @@ -0,0 +1,105 @@ +public class SimpleDeque implements MinimalDeque { + private static class Node { + T value; + Node next; + Node prev; + + Node(T value) { + this.value = value; + } + } + + private Node head; + private Node tail; + private int size; + + public SimpleDeque() { + head = null; + tail = null; + size = 0; + } + + @Override + public void addFirst(T element) { + Node newNode = new Node<>(element); + if (isEmpty()) { + head = tail = newNode; + } else { + newNode.next = head; + head.prev = newNode; + head = newNode; + } + size++; + } + + @Override + public void addLast(T element) { + Node newNode = new Node<>(element); + if (isEmpty()) { + head = tail = newNode; + } else { + newNode.prev = tail; + tail.next = newNode; + tail = newNode; + } + size++; + } + + @Override + public T removeFirst() { + if (isEmpty()) { + throw new IllegalStateException("Deque is empty"); + } + T value = head.value; + head = head.next; + if (head != null) { + head.prev = null; + } else { + tail = null; + } + size--; + return value; + } + + @Override + public T removeLast() { + if (isEmpty()) { + throw new IllegalStateException("Deque is empty"); + } + T value = tail.value; + tail = tail.prev; + if (tail != null) { + tail.next = null; + } else { + head = null; + } + size--; + return value; + } + + @Override + public T peekFirst() { + if (isEmpty()) { + return null; + } + return head.value; + } + + @Override + public T peekLast() { + if (isEmpty()) { + return null; + } + return tail.value; + } + + @Override + public boolean isEmpty() { + return size == 0; + } + + @Override + public int size() { + return size; + } +} diff --git a/DEV3.2/ancien_controle/TestDequeue.java b/DEV3.2/ancien_controle/TestDequeue.java new file mode 100644 index 0000000..4bc838b --- /dev/null +++ b/DEV3.2/ancien_controle/TestDequeue.java @@ -0,0 +1,39 @@ +import java.util.NoSuchElementException; + +public class TestDequeue { + public static void main(String[] args) { + // Créer une instance de SimpleQueue + SimpleQueue queue = new SimpleQueue<>(); + + // Tester le comportement de dequeue sur une file vide + System.out.println("Test 1 : Déqueue sur une file vide"); + try { + queue.dequeue(); // Doit lever une exception + } catch (NoSuchElementException e) { + System.out.println("Exception levée correctement : " + e.getMessage()); + } + + // Ajouter des éléments à la file + queue.enqueue(10); + queue.enqueue(20); + queue.enqueue(30); + + // Tester dequeue pour retirer des éléments dans l'ordre + System.out.println("\nTest 2 : Déqueue sur une file avec des éléments"); + System.out.println("Défile : " + queue.dequeue()); // Doit afficher 10 + System.out.println("Défile : " + queue.dequeue()); // Doit afficher 20 + System.out.println("Défile : " + queue.dequeue()); // Doit afficher 30 + + // Vérifier que la file est vide après tous les retraits + System.out.println("\nTest 3 : Vérifier si la file est vide après tous les retraits"); + System.out.println("La file est vide ? " + queue.isEmpty()); // true + + // Retenter dequeue sur une file vide + System.out.println("\nTest 4 : Déqueue sur une file vide après avoir vidé tous les éléments"); + try { + queue.dequeue(); // Doit lever une exception + } catch (NoSuchElementException e) { + System.out.println("Exception levée correctement : " + e.getMessage()); + } + } +} diff --git a/DEV3.2/ancien_controle/controle_unit/TestSimpleDeque.java b/DEV3.2/ancien_controle/controle_unit/TestSimpleDeque.java new file mode 100644 index 0000000..25477cc --- /dev/null +++ b/DEV3.2/ancien_controle/controle_unit/TestSimpleDeque.java @@ -0,0 +1,155 @@ +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertSame; +import org.junit.Test; + +import java.util.NoSuchElementException; +import java.util.Random; + +/** + * Une classe pour faire des tests sur la classe SimpleDeque avec JUnit + * On utilise des String comme type paramétré. + */ +public class TestSimpleDeque { + + /** + * On ne peut pas ajouter avec addFirst l'élément null + * [0.5 point] + */ + @Test(expected = NullPointerException.class) + public void addFirstNull() { + MinimalDeque d = new SimpleDeque<>(); + d.addFirst(null); // Doit lancer une exception + } + + /** + * On ne peut pas ajouter avec addLast l'élément null + * [0.5 point] + */ + @Test(expected = NullPointerException.class) + public void addLastNull() { + MinimalDeque d = new SimpleDeque<>(); + d.addLast(null); // Doit lancer une exception + } + + /** + * Un deque sans élément est vide. + * [0.5 point] + */ + @Test + public void addNoneIsEmpty() { + MinimalDeque d = new SimpleDeque<>(); + assertTrue(d.isEmpty()); + } + + /** + * Un deque avec 1 élément n'est pas vide. + * [0.5 point] + */ + @Test + public void addOneIsNotEmpty() { + MinimalDeque d = new SimpleDeque<>(); + d.addFirst("test"); + assertFalse(d.isEmpty()); + } + + /** + * Ajouter devant et enlever à la fin respecte l'ordre. + * [1 point] + */ + @Test + public void pasDeResquilleur() { + MinimalDeque d = new SimpleDeque<>(); + d.addFirst("meu"); + d.addFirst("zo"); + d.addFirst("bu"); + d.addFirst("ga"); + + assertSame("ga", d.removeLast()); + assertSame("bu", d.removeLast()); + assertSame("zo", d.removeLast()); + assertSame("meu", d.removeLast()); + } + + /** + * Ajouter derrière et enlever au début respecte l'ordre. + * [1 point] + */ + @Test + public void pasDeResquilleurQuantique() { + MinimalDeque d = new SimpleDeque<>(); + d.addLast("ga"); + d.addLast("bu"); + d.addLast("zo"); + d.addLast("meu"); + + assertSame("ga", d.removeFirst()); + assertSame("bu", d.removeFirst()); + assertSame("zo", d.removeFirst()); + assertSame("meu", d.removeFirst()); + } + + /** + * On ne peut pas enlever devant un deque vide. + * [1 point] + */ + @Test(expected = NoSuchElementException.class) + public void removeFirstFromEmpty() { + MinimalDeque d = new SimpleDeque<>(); + d.removeFirst(); + } + + /** + * On ne peut pas enlever derrière un deque vide. + * [1 point] + */ + @Test(expected = NoSuchElementException.class) + public void removeLastFromEmpty() { + MinimalDeque d = new SimpleDeque<>(); + d.removeLast(); + } + + /** + * Ajouter et enlever un seul élément dans les deux sens donne le même résultat. + * [2 point] + */ + @Test + public void mangerLaBananeParLesDeuxBouts() { + MinimalDeque d = new SimpleDeque<>(); + d.addFirst("ga"); + + assertSame("ga", d.removeFirst()); + d.addLast("ga"); + assertSame("ga", d.removeLast()); + } + + /** + * Invariant de taille + * [4 point] + */ + @Test + public void invariantTaille() { + MinimalDeque d = new SimpleDeque<>(); + String[] elements = {"ga", "bu", "zo", "meu"}; + Random random = new Random(); + int N = random.nextInt(901) + 100; + + for (int i = 0; i < N; i++) { + if (random.nextBoolean()) { + d.addFirst(elements[random.nextInt(elements.length)]); + } else { + d.addLast(elements[random.nextInt(elements.length)]); + } + } + + for (int i = 0; i < N; i++) { + if (random.nextBoolean()) { + d.removeFirst(); + } else { + d.removeLast(); + } + } + + assertTrue(d.isEmpty()); + } +} diff --git a/DEV3.2/ancien_controle/controle_unit/class.txt b/DEV3.2/ancien_controle/controle_unit/class.txt new file mode 100644 index 0000000..31bcaed --- /dev/null +++ b/DEV3.2/ancien_controle/controle_unit/class.txt @@ -0,0 +1,151 @@ +export CLASSPATH=".:/usr/share/java/junit.jar:/usr/share/java/hamcrest-core.jar:$CLASSPATH" + + +assertThows +assertTrue +assertFalse +assertEquals +assertNotEquals + + +Voici une réponse détaillée pour chaque question et une explication de ce qu'il faut compléter : + +1) [3 points en tout] +a) Quel patron de conception est à l'œuvre ici ? +Réponse : +Le patron de conception utilisé est l'adaptateur (Adapter Pattern). Cette classe agit comme une enveloppe autour d'une implémentation existante de Deque (comme celle dans java.util) pour qu'elle corresponde à l'interface MinimalDeque demandée. + +b) Comment fonctionne cette classe ? +Réponse : +La classe SimpleDequeThatsNotCricket délègue toutes ses opérations directement à une instance interne de Deque fournie par java.util. Elle ne réimplémente pas les fonctionnalités mais agit comme une passerelle pour adapter une implémentation existante à une interface spécifique. + +2) [-6 à 4 points en tout] +a) +a1) Il est possible de décider si un programme Java va s’arrêter quelle que soit son entrée. +Réponse : F (C'est le problème de l'arrêt, qui est indécidable). + +a2) Il est possible de décider si un programme C va s’arrêter quelle que soit son entrée. +Réponse : F (Même raison que pour Java). + +a3) Il est possible de décider si un programme Python ne va pas s’arrêter pour certaines entrées. +Réponse : F (Le problème de l'arrêt est indécidable pour tous les langages Turing-complets). + +b) +b1) Il est possible de décrire les propriétés souhaitées d'un programme en utilisant des langages de spécifications inspirés de la logique du premier ordre. +Réponse : V + +b2) Il existe des logiciels qui, étant donné une spécification et un programme, peuvent décider à coup sûr que le programme satisfait la spécification ou pas. +Réponse : F (C'est une généralisation trop forte, en raison des limitations de la vérification formelle). + +b3) Il existe des logiciels qui, étant donné une spécification et un programme, peuvent décider si le programme satisfait la spécification ou pas en demandant à un logiciel d'IA générative (comme ChatGPT) pour générer une preuve. +Réponse : F (Bien que l'IA puisse assister, elle ne garantit pas une vérification formelle). + +3) [1 point en tout] +a) Commande pour lancer les tests si junit.jar et hamcrest-core.jar sont dans le même répertoire : +bash +Copier le code +javac -cp .:junit.jar:hamcrest-core.jar TestSimpleDeque.java +java -cp .:junit.jar:hamcrest-core.jar org.junit.runner.JUnitCore TestSimpleDeque +b) Commande pour lancer les tests si les archives sont dans le CLASSPATH : +bash +Copier le code +javac TestSimpleDeque.java +java org.junit.runner.JUnitCore TestSimpleDeque +4) [12 points en tout] +Complétez le fichier TestSimpleDeque.java en fonction des descriptions des tests. +Test addFirstNull: +Ajoutez une assertion pour vérifier qu'une exception est levée. Exemple : +java +Copier le code +@Test(expected = NullPointerException.class) +public void addFirstNull() { + MinimalDeque d = new SimpleDeque<>(); + d.addFirst(null); +} +Test addLastNull: +Pareil que pour addFirstNull. + +Test addNoneIsEmpty: +Vérifiez qu'un Deque vide est effectivement vide. Exemple : + +java +Copier le code +@Test +public void addNoneIsEmpty() { + MinimalDeque d = new SimpleDeque<>(); + assertTrue(d.isEmpty()); +} +Test addOneIsNotEmpty: +Vérifiez qu'un Deque avec un élément n'est pas vide. + +Test pasDeResquilleur: +Ajoutez des éléments devant, enlevez-les derrière, et vérifiez l'ordre. + +Test pasDeResquilleurQuantique: +Ajoutez des éléments derrière, enlevez-les devant, et vérifiez l'ordre. + +Test removeFirstFromEmpty: +Vérifiez qu'une exception est levée lorsqu'on essaie de retirer un élément d'un Deque vide. + +Test removeLastFromEmpty: +Même logique que removeFirstFromEmpty. + +Test mangerLaBananeParLesDeuxBouts: +Ajoutez un élément, enlevez-le des deux côtés, et vérifiez. + +Test invariantTaille: +Implémentez le test aléatoire avec ajout/suppression jusqu'à ce que le Deque soit vide. + + +Chain of Responsibility + +But : Permet à plusieurs objets de traiter une requête, chaque objet ayant la possibilité de la traiter ou de la transmettre. +Exemple : Système de support technique avec plusieurs niveaux d'escalade. +Command + +But : Encapsule une requête en un objet pour paramétrer des actions, les annuler ou les enregistrer. +Exemple : Boutons Annuler/Refaire dans un éditeur de texte. +Interpreter + +But : Fournit une représentation grammaticale d'un langage et un interprète pour traiter ses instructions. +Exemple : Interprétation de scripts dans un moteur de jeu. +Iterator + +But : Fournit un moyen d'accéder séquentiellement aux éléments d'une collection sans exposer sa représentation. +Exemple : Parcours des éléments d'une liste. +Mediator + +But : Définit un objet pour centraliser la communication entre plusieurs objets. +Exemple : Gestionnaire de chat dans une application de messagerie. +Memento + +But : Capture l'état interne d'un objet pour pouvoir le restaurer ultérieurement. +Exemple : Sauvegarde dans un jeu vidéo. +Observer + +But : Définit une relation 1-n où les objets sont notifiés automatiquement lorsqu'un autre objet change d'état. +Exemple : Notifications pour les abonnés dans un système de messagerie. +State + +But : Permet à un objet de changer son comportement lorsqu'il change d'état. +Exemple : Système de verrouillage/déverrouillage dans une application. +Strategy + +But : Définit une famille d'algorithmes, les encapsule, et permet de les interchanger dynamiquement. +Exemple : Algorithmes de tri dans une application. +Template Method + +But : Définit la structure d'un algorithme tout en laissant certaines étapes spécifiques aux sous-classes. +Exemple : Méthode de rendu dans un moteur de jeu. +Visitor + +But : Sépare un algorithme de la structure des objets sur lesquels il opère. +Exemple : Calcul de taxes dans un système de commerce électronique. + +java org.junit.runner.JUnitCore TestSimpleDeque + +javac -cp .:junit.jar:hamcrest-core.jar TestSimpleDeque.java +java -cp .:junit.jar:hamcrest-core.jar org.junit.runner.JUnitCore TestSimpleDeque + +javac TestSimpleDeque.java +java org.junit.runner.JUnitCore TestSimpleDeque \ No newline at end of file diff --git a/DEV3.2/ancien_controle/imagine/BullesQueue.java b/DEV3.2/ancien_controle/imagine/BullesQueue.java new file mode 100644 index 0000000..ef79dd0 --- /dev/null +++ b/DEV3.2/ancien_controle/imagine/BullesQueue.java @@ -0,0 +1,69 @@ +import java.util.LinkedList; +import java.util.Queue; + +public class BullesQueue { + + /** + * Effectue un parcours (bulle) dans une file. + * + * @param source La file source contenant les entiers à trier. + * @param destination La file destination pour stocker le résultat du parcours. + * @return true si l'ordre des valeurs a changé, false sinon. + */ + public static boolean bulle(Queue source, Queue destination) { + boolean changed = false; + if (source.isEmpty()) { + return false; + } + + int prev = source.poll(); // Récupère le premier élément + while (!source.isEmpty()) { + int current = source.poll(); + if (prev > current) { // Si les éléments ne sont pas dans l'ordre croissant + changed = true; + destination.add(current); + prev = prev; // L'ordre change + } else { + destination.add(prev); // Ajoute directement dans l'ordre + prev = current; + } + } + destination.add(prev); // Ajoute le dernier élément + return changed; + } + + /** + * Trie complètement une file d'entiers en utilisant la méthode bulle. + * + * @param file La file d'entiers à trier. + */ + public static void tri(Queue file) { + Queue intermediaire = new LinkedList<>(); + boolean changed; + + do { + changed = bulle(file, intermediaire); // Effectue un parcours + // Inverse les files + Queue temp = file; + file = intermediaire; + intermediaire = temp; + } while (changed); + + // Affiche les valeurs triées + while (!file.isEmpty()) { + System.out.print(file.poll() + " "); + } + System.out.println(); + } + + public static void main(String[] args) { + // Exemple d'utilisation avec des entiers passés en ligne de commande + Queue file = new LinkedList<>(); + for (String arg : args) { + file.add(Integer.parseInt(arg)); + } + + // Trie la file et affiche le résultat + tri(file); + } +} diff --git a/DEV3.2/ancien_controle/imagine/ExempleQueue.java b/DEV3.2/ancien_controle/imagine/ExempleQueue.java new file mode 100644 index 0000000..6103f7c --- /dev/null +++ b/DEV3.2/ancien_controle/imagine/ExempleQueue.java @@ -0,0 +1,27 @@ +public class ExempleQueue { + public static void main(String[] args) { + SimpleQueue queue = new SimpleQueue<>(); + + // Ajouter des éléments à la file + queue.enqueue(10); + queue.enqueue(20); + queue.enqueue(30); + + // Afficher le premier élément + System.out.println("Premier élément : " + queue.peek()); // 10 + + // Retirer des éléments + System.out.println("Défile : " + queue.dequeue()); // 10 + System.out.println("Défile : " + queue.dequeue()); // 20 + + // Afficher la taille restante + System.out.println("Taille de la file : " + queue.size()); // 1 + + // Vérifier si la file est vide + System.out.println("La file est vide ? " + queue.isEmpty()); // false + + // Retirer le dernier élément + System.out.println("Défile : " + queue.dequeue()); // 30 + System.out.println("La file est vide ? " + queue.isEmpty()); // true + } +} diff --git a/DEV3.2/ancien_controle/imagine/SimpleQueue.java b/DEV3.2/ancien_controle/imagine/SimpleQueue.java new file mode 100644 index 0000000..fe169c7 --- /dev/null +++ b/DEV3.2/ancien_controle/imagine/SimpleQueue.java @@ -0,0 +1,89 @@ +import java.util.NoSuchElementException; + +public class SimpleQueue { + + private static class Node { + T value; + Node next; + + Node(T value) { + this.value = value; + } + } + + private Node head; // Le début de la file + private Node tail; // La fin de la file + private int size; + + public SimpleQueue() { + head = null; + tail = null; + size = 0; + } + + /** + * Ajoute un élément à la fin de la file. + * + * @param element L'élément à ajouter. + */ + public void enqueue(T element) { + Node newNode = new Node<>(element); + if (isEmpty()) { + head = tail = newNode; + } else { + tail.next = newNode; + tail = newNode; + } + size++; + } + + /** + * Retire et renvoie l'élément en tête de la file. + * + * @return L'élément retiré. + * @throws NoSuchElementException si la file est vide. + */ + public T dequeue() { + if (isEmpty()) { + throw new NoSuchElementException("Queue is empty"); + } + T value = head.value; + head = head.next; + if (head == null) { // Si la file est désormais vide + tail = null; + } + size--; + return value; + } + + /** + * Renvoie l'élément en tête de la file sans le retirer. + * + * @return L'élément en tête. + * @throws NoSuchElementException si la file est vide. + */ + public T peek() { + if (isEmpty()) { + throw new NoSuchElementException("Queue is empty"); + } + return head.value; + } + + /** + * Vérifie si la file est vide. + * + * @return true si la file est vide, false sinon. + */ + public boolean isEmpty() { + return size == 0; + } + + /** + * Renvoie le nombre d'éléments dans la file. + * + * @return La taille de la file. + */ + public int size() { + return size; + } +} diff --git a/DEV3.2/dictionnaire/couleurs/Division.java b/DEV3.2/dictionnaire/couleurs/Division.java new file mode 100644 index 0000000..e714802 --- /dev/null +++ b/DEV3.2/dictionnaire/couleurs/Division.java @@ -0,0 +1,2 @@ +/*Felix-vimalaratnam +Patrick*/ \ No newline at end of file diff --git a/DEV3.2/felix-vi_dev32.tar.gz b/DEV3.2/felix-vi_dev32.tar.gz new file mode 100644 index 0000000..b288717 Binary files /dev/null and b/DEV3.2/felix-vi_dev32.tar.gz differ diff --git a/DEV4.5/Cycle_de_vie/Reticule/.gitignore b/DEV4.5/Cycle_de_vie/Reticule/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/DEV4.5/Cycle_de_vie/Reticule/.idea/.gitignore b/DEV4.5/Cycle_de_vie/Reticule/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/DEV4.5/Cycle_de_vie/Reticule/.idea/compiler.xml b/DEV4.5/Cycle_de_vie/Reticule/.idea/compiler.xml new file mode 100644 index 0000000..b589d56 --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/DEV4.5/Cycle_de_vie/Reticule/.idea/deploymentTargetSelector.xml b/DEV4.5/Cycle_de_vie/Reticule/.idea/deploymentTargetSelector.xml new file mode 100644 index 0000000..b268ef3 --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/.idea/deploymentTargetSelector.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/DEV4.5/Cycle_de_vie/Reticule/.idea/gradle.xml b/DEV4.5/Cycle_de_vie/Reticule/.idea/gradle.xml new file mode 100644 index 0000000..0897082 --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/DEV4.5/Cycle_de_vie/Reticule/.idea/migrations.xml b/DEV4.5/Cycle_de_vie/Reticule/.idea/migrations.xml new file mode 100644 index 0000000..f8051a6 --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/DEV4.5/Cycle_de_vie/Reticule/.idea/misc.xml b/DEV4.5/Cycle_de_vie/Reticule/.idea/misc.xml new file mode 100644 index 0000000..0ad17cb --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/.idea/misc.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/DEV4.5/Cycle_de_vie/Reticule/.idea/vcs.xml b/DEV4.5/Cycle_de_vie/Reticule/.idea/vcs.xml new file mode 100644 index 0000000..c2365ab --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/.gitignore b/DEV4.5/Cycle_de_vie/Reticule/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/build.gradle.kts b/DEV4.5/Cycle_de_vie/Reticule/app/build.gradle.kts new file mode 100644 index 0000000..d0a132b --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/app/build.gradle.kts @@ -0,0 +1,40 @@ +plugins { + alias(libs.plugins.android.application) +} + +android { + namespace = "com.example.reticule" + compileSdk = 34 + + defaultConfig { + applicationId = "com.example.reticule" + minSdk = 19 + targetSdk = 34 + versionCode = 1 + versionName = "1.0" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } +} + +dependencies { + + implementation(libs.material) + testImplementation(libs.junit) + androidTestImplementation(libs.ext.junit) + androidTestImplementation(libs.espresso.core) +} \ No newline at end of file diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/proguard-rules.pro b/DEV4.5/Cycle_de_vie/Reticule/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/androidTest/java/com/example/reticule/ExampleInstrumentedTest.java b/DEV4.5/Cycle_de_vie/Reticule/app/src/androidTest/java/com/example/reticule/ExampleInstrumentedTest.java new file mode 100644 index 0000000..6cac25f --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/app/src/androidTest/java/com/example/reticule/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.example.reticule; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("com.example.reticule", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/main/AndroidManifest.xml b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..5e5eeab --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/AndroidManifest.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/main/java/com/example/reticule/MainActivity.java b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/java/com/example/reticule/MainActivity.java new file mode 100644 index 0000000..6460691 --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/java/com/example/reticule/MainActivity.java @@ -0,0 +1,15 @@ +package com.example.reticule; + +import android.os.Bundle; + +import android.app.Activity; + +public class MainActivity extends Activity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + ReticleView reticleView = new ReticleView(this, null); + setContentView(reticleView); + } +} \ No newline at end of file diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/main/java/com/example/reticule/ReticleView.java b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/java/com/example/reticule/ReticleView.java new file mode 100644 index 0000000..923d124 --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/java/com/example/reticule/ReticleView.java @@ -0,0 +1,89 @@ +package com.example.reticule; + +import android.content.Context; +import android.content.SharedPreferences; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.View; +import android.util.TypedValue; + +public class ReticleView extends View { + private float reticleX, reticleY; + private final float radius = 50; // Taille du réticule + private float lastTouchX, lastTouchY; + private final Paint paint; + private static final String PREFS_NAME = "ReticlePrefs"; + private static final String KEY_X = "reticle_x"; + private static final String KEY_Y = "reticle_y"; + + public ReticleView(Context context, AttributeSet attrs) { + super(context, attrs); + paint = new Paint(); + paint.setColor(Color.RED); + paint.setStyle(Paint.Style.FILL); + + loadReticlePosition(); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + canvas.drawCircle(reticleX, reticleY, radius, paint); + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + float touchX = event.getX(); + float touchY = event.getY(); + + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + lastTouchX = touchX; + lastTouchY = touchY; + break; + + case MotionEvent.ACTION_MOVE: + float dx = touchX - lastTouchX; + float dy = touchY - lastTouchY; + + if (Math.abs(dx) > dpToPx(10) || Math.abs(dy) > dpToPx(10)) { + reticleX += dx; + reticleY += dy; + lastTouchX = touchX; + lastTouchY = touchY; + invalidate(); + } + break; + + case MotionEvent.ACTION_UP: + saveReticlePosition(); + break; + } + return true; + } + + private void saveReticlePosition() { + SharedPreferences prefs = getContext().getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = prefs.edit(); + editor.putFloat(KEY_X, reticleX); + editor.putFloat(KEY_Y, reticleY); + editor.apply(); + } + + private void loadReticlePosition() { + SharedPreferences prefs = getContext().getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); + reticleX = prefs.getFloat(KEY_X, getWidth() / 2f); + reticleY = prefs.getFloat(KEY_Y, getHeight() / 2f); + if (reticleX == 0 || reticleY == 0) { + reticleX = getWidth() / 2f; + reticleY = getHeight() / 2f; + } + } + + private float dpToPx(float dp) { + return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getResources().getDisplayMetrics()); + } +} diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/drawable/ic_launcher_background.xml b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/layout/activity_main.xml b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..86a5d97 --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000..c209e78 Binary files /dev/null and b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000..b2dfe3d Binary files /dev/null and b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000..4f0f1d6 Binary files /dev/null and b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000..62b611d Binary files /dev/null and b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000..948a307 Binary files /dev/null and b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..1b9a695 Binary files /dev/null and b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000..28d4b77 Binary files /dev/null and b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..9287f50 Binary files /dev/null and b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000..aa7d642 Binary files /dev/null and b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..9126ae3 Binary files /dev/null and b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/values-night/themes.xml b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/values-night/themes.xml new file mode 100644 index 0000000..dd0adf3 --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/values-night/themes.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/values/colors.xml b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..c8524cd --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/values/strings.xml b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..906fe4a --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Reticule + \ No newline at end of file diff --git a/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/values/themes.xml b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..e55cc1f --- /dev/null +++ b/DEV4.5/Cycle_de_vie/Reticule/app/src/main/res/values/themes.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/DEV4.5/Cycle_de_vie/arcenciel/app/src/main/res/values/colors.xml b/DEV4.5/Cycle_de_vie/arcenciel/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..c8524cd --- /dev/null +++ b/DEV4.5/Cycle_de_vie/arcenciel/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/DEV4.5/Cycle_de_vie/arcenciel/app/src/main/res/values/strings.xml b/DEV4.5/Cycle_de_vie/arcenciel/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..8a9a3ec --- /dev/null +++ b/DEV4.5/Cycle_de_vie/arcenciel/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + arc-en-ciel + \ No newline at end of file diff --git a/DEV4.5/Cycle_de_vie/arcenciel/app/src/main/res/values/themes.xml b/DEV4.5/Cycle_de_vie/arcenciel/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..3676d42 --- /dev/null +++ b/DEV4.5/Cycle_de_vie/arcenciel/app/src/main/res/values/themes.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/DEV4.5/Dessin/Gribouillage/app/src/main/res/values/colors.xml b/DEV4.5/Dessin/Gribouillage/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..c8524cd --- /dev/null +++ b/DEV4.5/Dessin/Gribouillage/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/DEV4.5/Dessin/Gribouillage/app/src/main/res/values/strings.xml b/DEV4.5/Dessin/Gribouillage/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..c9d658b --- /dev/null +++ b/DEV4.5/Dessin/Gribouillage/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Gribouillage + \ No newline at end of file diff --git a/DEV4.5/Dessin/Gribouillage/app/src/main/res/values/themes.xml b/DEV4.5/Dessin/Gribouillage/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..6064fc7 --- /dev/null +++ b/DEV4.5/Dessin/Gribouillage/app/src/main/res/values/themes.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/DEV4.5/Dessin/choix/app/src/main/res/values/colors.xml b/DEV4.5/Dessin/choix/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..c8524cd --- /dev/null +++ b/DEV4.5/Dessin/choix/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/DEV4.5/Dessin/choix/app/src/main/res/values/strings.xml b/DEV4.5/Dessin/choix/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..417c239 --- /dev/null +++ b/DEV4.5/Dessin/choix/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + choix + \ No newline at end of file diff --git a/DEV4.5/Dessin/choix/app/src/main/res/values/themes.xml b/DEV4.5/Dessin/choix/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..5fd1716 --- /dev/null +++ b/DEV4.5/Dessin/choix/app/src/main/res/values/themes.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/DEV4.5/Evenement/choix/app/src/main/res/values/colors.xml b/DEV4.5/Evenement/choix/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..c8524cd --- /dev/null +++ b/DEV4.5/Evenement/choix/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/DEV4.5/Evenement/choix/app/src/main/res/values/strings.xml b/DEV4.5/Evenement/choix/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..417c239 --- /dev/null +++ b/DEV4.5/Evenement/choix/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + choix + \ No newline at end of file diff --git a/DEV4.5/Evenement/choix/app/src/main/res/values/themes.xml b/DEV4.5/Evenement/choix/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..5fd1716 --- /dev/null +++ b/DEV4.5/Evenement/choix/app/src/main/res/values/themes.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/DEV4.5/Evenement/fleche/app/src/main/res/values/colors.xml b/DEV4.5/Evenement/fleche/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..c8524cd --- /dev/null +++ b/DEV4.5/Evenement/fleche/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/DEV4.5/Evenement/fleche/app/src/main/res/values/strings.xml b/DEV4.5/Evenement/fleche/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..d8af42f --- /dev/null +++ b/DEV4.5/Evenement/fleche/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + fleche + \ No newline at end of file diff --git a/DEV4.5/Evenement/fleche/app/src/main/res/values/themes.xml b/DEV4.5/Evenement/fleche/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..fa78d7f --- /dev/null +++ b/DEV4.5/Evenement/fleche/app/src/main/res/values/themes.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/DEV4.5/Evenement/liste/app/src/main/res/values/colors.xml b/DEV4.5/Evenement/liste/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..c8524cd --- /dev/null +++ b/DEV4.5/Evenement/liste/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/DEV4.5/Evenement/liste/app/src/main/res/values/strings.xml b/DEV4.5/Evenement/liste/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..9d02121 --- /dev/null +++ b/DEV4.5/Evenement/liste/app/src/main/res/values/strings.xml @@ -0,0 +1,7 @@ + + Liste Flèche + + Flèche Gauche + Flèche Droite + + \ No newline at end of file diff --git a/DEV4.5/Evenement/liste/app/src/main/res/values/themes.xml b/DEV4.5/Evenement/liste/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..2df3e63 --- /dev/null +++ b/DEV4.5/Evenement/liste/app/src/main/res/values/themes.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/DEV4.5/Evenement/temperature/app/src/main/res/values/colors.xml b/DEV4.5/Evenement/temperature/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..c8524cd --- /dev/null +++ b/DEV4.5/Evenement/temperature/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/DEV4.5/Evenement/temperature/app/src/main/res/values/strings.xml b/DEV4.5/Evenement/temperature/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..69e2998 --- /dev/null +++ b/DEV4.5/Evenement/temperature/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + temperature + \ No newline at end of file diff --git a/DEV4.5/Evenement/temperature/app/src/main/res/values/themes.xml b/DEV4.5/Evenement/temperature/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..dd446a1 --- /dev/null +++ b/DEV4.5/Evenement/temperature/app/src/main/res/values/themes.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/DEV4.5/Interface_tactile/dimension/app/src/main/res/values/colors.xml b/DEV4.5/Interface_tactile/dimension/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..c8524cd --- /dev/null +++ b/DEV4.5/Interface_tactile/dimension/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/DEV4.5/Interface_tactile/dimension/app/src/main/res/values/strings.xml b/DEV4.5/Interface_tactile/dimension/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..e896aad --- /dev/null +++ b/DEV4.5/Interface_tactile/dimension/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + dimension + \ No newline at end of file diff --git a/DEV4.5/Interface_tactile/dimension/app/src/main/res/values/themes.xml b/DEV4.5/Interface_tactile/dimension/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..cf9c9da --- /dev/null +++ b/DEV4.5/Interface_tactile/dimension/app/src/main/res/values/themes.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/DEV4.5/Interface_tactile/grille/app/src/main/res/values/colors.xml b/DEV4.5/Interface_tactile/grille/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..c8524cd --- /dev/null +++ b/DEV4.5/Interface_tactile/grille/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/DEV4.5/Interface_tactile/grille/app/src/main/res/values/strings.xml b/DEV4.5/Interface_tactile/grille/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..ea3656f --- /dev/null +++ b/DEV4.5/Interface_tactile/grille/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + grille + \ No newline at end of file diff --git a/DEV4.5/Interface_tactile/grille/app/src/main/res/values/themes.xml b/DEV4.5/Interface_tactile/grille/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..f705a51 --- /dev/null +++ b/DEV4.5/Interface_tactile/grille/app/src/main/res/values/themes.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/DEV4.5/Interface_tactile/pois/app/src/main/res/values/colors.xml b/DEV4.5/Interface_tactile/pois/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..c8524cd --- /dev/null +++ b/DEV4.5/Interface_tactile/pois/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/DEV4.5/Interface_tactile/pois/app/src/main/res/values/strings.xml b/DEV4.5/Interface_tactile/pois/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..3d0d192 --- /dev/null +++ b/DEV4.5/Interface_tactile/pois/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + pois + \ No newline at end of file diff --git a/DEV4.5/Interface_tactile/pois/app/src/main/res/values/themes.xml b/DEV4.5/Interface_tactile/pois/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..5f9d4e3 --- /dev/null +++ b/DEV4.5/Interface_tactile/pois/app/src/main/res/values/themes.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/DEV4.5/Mise_en_page/Chat/app/src/main/res/values/colors.xml b/DEV4.5/Mise_en_page/Chat/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..c8524cd --- /dev/null +++ b/DEV4.5/Mise_en_page/Chat/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/DEV4.5/Mise_en_page/Chat/app/src/main/res/values/strings.xml b/DEV4.5/Mise_en_page/Chat/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..5aafa46 --- /dev/null +++ b/DEV4.5/Mise_en_page/Chat/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Chat + \ No newline at end of file diff --git a/DEV4.5/Mise_en_page/Chat/app/src/main/res/values/themes.xml b/DEV4.5/Mise_en_page/Chat/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..4d78916 --- /dev/null +++ b/DEV4.5/Mise_en_page/Chat/app/src/main/res/values/themes.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/DEV4.5/Mise_en_page/Chat2/app/src/main/res/values/colors.xml b/DEV4.5/Mise_en_page/Chat2/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..c8524cd --- /dev/null +++ b/DEV4.5/Mise_en_page/Chat2/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/DEV4.5/Mise_en_page/Chat2/app/src/main/res/values/strings.xml b/DEV4.5/Mise_en_page/Chat2/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..6da239b --- /dev/null +++ b/DEV4.5/Mise_en_page/Chat2/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Chat2 + \ No newline at end of file diff --git a/DEV4.5/Mise_en_page/Chat2/app/src/main/res/values/themes.xml b/DEV4.5/Mise_en_page/Chat2/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..b765203 --- /dev/null +++ b/DEV4.5/Mise_en_page/Chat2/app/src/main/res/values/themes.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/DEV4.5/Mise_en_page/Pave/app/src/main/res/values/colors.xml b/DEV4.5/Mise_en_page/Pave/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..c8524cd --- /dev/null +++ b/DEV4.5/Mise_en_page/Pave/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/DEV4.5/Mise_en_page/Pave/app/src/main/res/values/strings.xml b/DEV4.5/Mise_en_page/Pave/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..8a71fcf --- /dev/null +++ b/DEV4.5/Mise_en_page/Pave/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Pave + \ No newline at end of file diff --git a/DEV4.5/Mise_en_page/Pave/app/src/main/res/values/themes.xml b/DEV4.5/Mise_en_page/Pave/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..b6297de --- /dev/null +++ b/DEV4.5/Mise_en_page/Pave/app/src/main/res/values/themes.xml @@ -0,0 +1,9 @@ + + + + +