Correction Cesar
This commit is contained in:
parent
8a48e561ca
commit
08c263d466
@ -7,10 +7,22 @@ public class CesarChiffre {
|
|||||||
testCesar(CesarChiffre::cesar, true);
|
testCesar(CesarChiffre::cesar, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static char[] cesar(char[] in, int k) {
|
public static char[] cesar(char[] in, int cle) {
|
||||||
// Pour le caractère espace, pas de transformation
|
// 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;
|
char[] out = new char[in.length];
|
||||||
|
for (int i = 0; i<in.length; i++) {
|
||||||
|
char c = in[i];
|
||||||
|
if (c == ' ') {
|
||||||
|
out[i] = c;
|
||||||
|
} else {
|
||||||
|
out[i] = ALPHABET[(position(c)+cle) % ALPHABET.length];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -4,14 +4,25 @@ public class CesarDechiffre {
|
|||||||
|
|
||||||
public static final void main(String[] args) {
|
public static final void main(String[] args) {
|
||||||
afficher("Chiffre de César - déchiffrement");
|
afficher("Chiffre de César - déchiffrement");
|
||||||
afficher("Chiffre de César - chiffrement");
|
|
||||||
testCesar(CesarDechiffre::deCesar, false);
|
testCesar(CesarDechiffre::deCesar, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static char[] deCesar(char[] in, int k) {
|
public static char[] deCesar(char[] in, int cle) {
|
||||||
// Pour le caractère espace, pas de transformation
|
// 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;
|
char[] out = new char[in.length];
|
||||||
|
for (int i = 0; i<in.length; i++) {
|
||||||
|
char c = in[i];
|
||||||
|
if (c == ' ') {
|
||||||
|
out[i] = c;
|
||||||
|
} else {
|
||||||
|
out[i] = ALPHABET[(ALPHABET.length+position(c)-cle) % ALPHABET.length];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7,16 +7,23 @@ import java.util.function.BiFunction;
|
|||||||
|
|
||||||
public class Utils {
|
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[] {
|
public static String[] CESAR_DATA_CLEAR = new String[] {
|
||||||
"un beau texte"
|
"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[] {
|
public static int[] CESAR_DATA_KEYS = new int[] {
|
||||||
7
|
7, 9
|
||||||
};
|
};
|
||||||
|
|
||||||
public static String[] CESAR_DATA_CRYPT = new String[] {
|
public static String[] CESAR_DATA_CRYPT = new String[] {
|
||||||
"crypt"
|
"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) {
|
public static final void afficher(Object... args) {
|
||||||
@ -57,21 +64,34 @@ public class Utils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int position(char c) {
|
||||||
|
for (int i = 0; i<ALPHABET.length; i++) {
|
||||||
|
if (ALPHABET[i] == c) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
afficher("erreur", c);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
public static void testCesar(BiFunction<char[], Integer, char[]> func,
|
public static void testCesar(BiFunction<char[], Integer, char[]> func,
|
||||||
boolean chiffre) {
|
boolean chiffre) {
|
||||||
for (int i = 0; i<CESAR_DATA_KEYS.length; i++) {
|
for (int i = 0; i<CESAR_DATA_KEYS.length; i++) {
|
||||||
int cle = CESAR_DATA_KEYS[i];
|
int cle = CESAR_DATA_KEYS[i];
|
||||||
if (chiffre) {
|
if (chiffre) {
|
||||||
|
String result = String.valueOf(func.apply(CESAR_DATA_CLEAR[i]
|
||||||
|
.toCharArray(), cle));
|
||||||
afficher("Clair: " + CESAR_DATA_CLEAR[i]);
|
afficher("Clair: " + CESAR_DATA_CLEAR[i]);
|
||||||
afficher("Chiffré: " + String.valueOf(func.apply(CESAR_DATA_CLEAR[i]
|
afficher("Chiffré: " + result);
|
||||||
.toCharArray(), cle)));
|
afficher("Succès: " + String.valueOf(CESAR_DATA_CRYPT[i]).equals(result));
|
||||||
afficher("Attendu: " + String.valueOf(CESAR_DATA_CRYPT[i]));
|
|
||||||
} else {
|
} else {
|
||||||
|
String result = String.valueOf(func.apply(CESAR_DATA_CRYPT[i]
|
||||||
|
.toCharArray(), cle));
|
||||||
afficher("Chiffré: " + CESAR_DATA_CRYPT[i]);
|
afficher("Chiffré: " + CESAR_DATA_CRYPT[i]);
|
||||||
afficher("Clair: " + String.valueOf(func.apply(CESAR_DATA_CRYPT[i]
|
afficher("Clair: " + result);
|
||||||
.toCharArray(), cle)));
|
afficher("Succès: " + String.valueOf(CESAR_DATA_CLEAR[i]).equals(result));
|
||||||
afficher("Attendu: " + String.valueOf(CESAR_DATA_CLEAR[i]));
|
|
||||||
}
|
}
|
||||||
|
afficher();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user