Template exercice Cesar

This commit is contained in:
Meutel 2019-06-01 17:36:27 +02:00
parent 6cc60fb084
commit 8a48e561ca
4 changed files with 80 additions and 3 deletions

16
CesarChiffre.java Normal file
View File

@ -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;
}
}

17
CesarDechiffre.java Normal file
View File

@ -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;
}
}

View File

@ -95,4 +95,18 @@ Exemple:
=> InvTab.java => 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

View File

@ -3,10 +3,22 @@ package utils;
import java.util.Arrays; import java.util.Arrays;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.Scanner; import java.util.Scanner;
import java.util.function.BiFunction;
public class Utils { 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) { public static final void afficher(Object... args) {
if (args == null) { if (args == null) {
System.out.println("null"); System.out.println("null");
@ -16,7 +28,7 @@ public class Utils {
.collect(Collectors.joining(" ")); .collect(Collectors.joining(" "));
System.out.println(str); System.out.println(str);
} }
System.out.println(); System.out.print(' ');
} }
public static final void afficherTabInt(int... args) { public static final void afficherTabInt(int... args) {
if (args == null) { if (args == null) {
@ -28,7 +40,7 @@ public class Utils {
.collect(Collectors.joining(" ")); .collect(Collectors.joining(" "));
System.out.println(str); System.out.println(str);
} }
System.out.println(); System.out.print(' ');
} }
public static int lireEntier() { public static int lireEntier() {
@ -45,4 +57,22 @@ public class Utils {
} }
} }
public static void testCesar(BiFunction<char[], Integer, char[]> func,
boolean chiffre) {
for (int i = 0; i<CESAR_DATA_KEYS.length; i++) {
int cle = CESAR_DATA_KEYS[i];
if (chiffre) {
afficher("Clair: " + CESAR_DATA_CLEAR[i]);
afficher("Chiffré: " + String.valueOf(func.apply(CESAR_DATA_CLEAR[i]
.toCharArray(), cle)));
afficher("Attendu: " + String.valueOf(CESAR_DATA_CRYPT[i]));
} else {
afficher("Chiffré: " + CESAR_DATA_CRYPT[i]);
afficher("Clair: " + String.valueOf(func.apply(CESAR_DATA_CRYPT[i]
.toCharArray(), cle)));
afficher("Attendu: " + String.valueOf(CESAR_DATA_CLEAR[i]));
}
}
}
} }