diff --git a/CesarChiffre.java b/CesarChiffre.java new file mode 100644 index 0000000..eaa03ee --- /dev/null +++ b/CesarChiffre.java @@ -0,0 +1,16 @@ +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 k) { + // Pour le caractère espace, pas de transformation + + return in; + } + +} diff --git a/CesarDechiffre.java b/CesarDechiffre.java new file mode 100644 index 0000000..15b1834 --- /dev/null +++ b/CesarDechiffre.java @@ -0,0 +1,17 @@ +import static utils.Utils.*; + +public class CesarDechiffre { + + public static final void main(String[] args) { + afficher("Chiffre de César - déchiffrement"); + afficher("Chiffre de César - chiffrement"); + testCesar(CesarDechiffre::deCesar, false); + } + + public static char[] deCesar(char[] in, int k) { + // Pour le caractère espace, pas de transformation + + 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..557c5d0 100644 --- a/utils/Utils.java +++ b/utils/Utils.java @@ -3,10 +3,22 @@ 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 String[] CESAR_DATA_CLEAR = new String[] { + "un beau texte" + }; + + public static int[] CESAR_DATA_KEYS = new int[] { + 7 + }; + + public static String[] CESAR_DATA_CRYPT = new String[] { + "crypt" + }; + public static final void afficher(Object... args) { if (args == null) { System.out.println("null"); @@ -16,7 +28,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 +40,7 @@ public class Utils { .collect(Collectors.joining(" ")); System.out.println(str); } - System.out.println(); + System.out.print(' '); } public static int lireEntier() { @@ -45,4 +57,22 @@ public class Utils { } } + public static void testCesar(BiFunction func, + boolean chiffre) { + for (int i = 0; i