From 81316c066c4479b73e7022692ba66ef99cb8fdee Mon Sep 17 00:00:00 2001 From: Meutel Date: Sat, 1 Jun 2019 17:36:27 +0200 Subject: [PATCH] Template exercice Cesar --- CesarChiffre.java | 19 +++++++++++++++ CesarDechiffre.java | 19 +++++++++++++++ Exercices.md | 14 ++++++++++++ utils/Utils.java | 56 ++++++++++++++++++++++++++++++++++++++++++--- 4 files changed, 105 insertions(+), 3 deletions(-) create mode 100644 CesarChiffre.java create mode 100644 CesarDechiffre.java diff --git a/CesarChiffre.java b/CesarChiffre.java new file mode 100644 index 0000000..26b2e4b --- /dev/null +++ b/CesarChiffre.java @@ -0,0 +1,19 @@ +import static utils.Utils.*; + +public class CesarChiffre { + + public static final void main(String[] args) { + afficher("Chiffre de César - chiffrement"); + testCesar(CesarChiffre::cesar, true); + } + + public static char[] cesar(char[] in, int cle) { + // Pour le caractère espace, pas de transformation + // ALPHABET est un tableau des caractères de l'alphabet dans l'ordre + // int position(char c): retourne la position de la lettre dans l'alphabet + // (à partir de 0) + + return in; + } + +} diff --git a/CesarDechiffre.java b/CesarDechiffre.java new file mode 100644 index 0000000..4103f2d --- /dev/null +++ b/CesarDechiffre.java @@ -0,0 +1,19 @@ +import static utils.Utils.*; + +public class CesarDechiffre { + + public static final void main(String[] args) { + afficher("Chiffre de César - déchiffrement"); + testCesar(CesarDechiffre::deCesar, false); + } + + public static char[] deCesar(char[] in, int cle) { + // Pour le caractère espace, pas de transformation + // ALPHABET est un tableau des caractères de l'alphabet dans l'ordre + // int position(char c): retourne la position de la lettre dans l'alphabet + // (à partir de 0) + + return in; + } + +} diff --git a/Exercices.md b/Exercices.md index 6f1d9a6..91e326e 100644 --- a/Exercices.md +++ b/Exercices.md @@ -95,4 +95,18 @@ Exemple: => InvTab.java +## Exercice 7 + +Chiffre de César: + +Le texte chiffré s'obtient en remplaçant chaque lettre du texte clair original par une lettre à distance fixe, toujours du même côté, dans l'ordre de l'alphabet. Pour les dernières lettres (dans le cas d'un décalage à droite), on reprend au début. Par exemple avec un décalage de 3 vers la droite, A est remplacé par D, B devient E, et ainsi jusqu'à W qui devient Z, puis X devient A etc. + +# Idées + +* Chiffrement de César +* Chiffrement de Vigenere +* Factoriel +* Nombre d'occurrences d'un mot dans un texte +* Somme des entiers entre 2 entiers donnés +* FizzBuzz diff --git a/utils/Utils.java b/utils/Utils.java index 6d9636f..f271fc4 100644 --- a/utils/Utils.java +++ b/utils/Utils.java @@ -3,10 +3,29 @@ package utils; import java.util.Arrays; import java.util.stream.Collectors; import java.util.Scanner; - +import java.util.function.BiFunction; public class Utils { + public static final char[] ALPHABET = new char[] { + 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' + }; + + public static String[] CESAR_DATA_CLEAR = new String[] { + "quitte moi quittons nous juste un peu trop longtemps", + "pour que nous ressentions le bonheur d etre triste" + }; + + public static int[] CESAR_DATA_KEYS = new int[] { + 7, 9 + }; + + public static String[] CESAR_DATA_CRYPT = new String[] { + "xbpaal tvp xbpaavuz uvbz qbzal bu wlb ayvw svunaltwz", + "yxda zdn wxdb anbbnwcrxwb un kxwqnda m ncan carbcn" + }; + public static final void afficher(Object... args) { if (args == null) { System.out.println("null"); @@ -16,7 +35,7 @@ public class Utils { .collect(Collectors.joining(" ")); System.out.println(str); } - System.out.println(); + System.out.print(' '); } public static final void afficherTabInt(int... args) { if (args == null) { @@ -28,7 +47,7 @@ public class Utils { .collect(Collectors.joining(" ")); System.out.println(str); } - System.out.println(); + System.out.print(' '); } public static int lireEntier() { @@ -45,4 +64,35 @@ public class Utils { } } + public static int position(char c) { + for (int i = 0; i func, + boolean chiffre) { + for (int i = 0; i