158 lines
4.2 KiB
Java
158 lines
4.2 KiB
Java
package utils;
|
|
|
|
import java.util.Map;
|
|
import java.util.List;
|
|
import java.util.Arrays;
|
|
import java.util.stream.Collectors;
|
|
import java.util.Scanner;
|
|
import java.util.function.Function;
|
|
import java.util.function.BiFunction;
|
|
|
|
public class Utils {
|
|
|
|
public static Map<String, Integer> ROMAINS = Map.of(
|
|
"I", 1,
|
|
"II", 2,
|
|
"III", 3,
|
|
"IV", 4,
|
|
"V", 5,
|
|
"VI", 6,
|
|
"VII", 7,
|
|
"VIII", 8,
|
|
"IX", 9,
|
|
"X", 10
|
|
);
|
|
|
|
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 int[] TEST_SOMME2 = new int[] {
|
|
0, 3, 6,
|
|
3, 7, 25,
|
|
7, 3, 25,
|
|
};
|
|
|
|
public static void testSomme2(BiFunction<Integer, Integer, Integer> func) {
|
|
for (int i=0; i<TEST_SOMME2.length; i+=3) {
|
|
int n=TEST_SOMME2[i];
|
|
int p=TEST_SOMME2[i+1];
|
|
int s=TEST_SOMME2[i+2];
|
|
|
|
afficher("n = ", n, "p = ", p);
|
|
afficher("*** SOMME: ", func.apply(n, p));
|
|
afficher(" Attendu: ", s);
|
|
}
|
|
}
|
|
|
|
public static final void afficher(Object... args) {
|
|
if (args == null) {
|
|
System.out.println("null");
|
|
} else {
|
|
String str = Arrays.stream(args)
|
|
.map(String::valueOf)
|
|
.collect(Collectors.joining(" "));
|
|
System.out.println(str);
|
|
}
|
|
}
|
|
public static final void afficherTabInt(int... args) {
|
|
if (args == null) {
|
|
System.out.println("null");
|
|
} else {
|
|
String str = Arrays.stream(args)
|
|
.boxed()
|
|
.map(i -> i+"")
|
|
.collect(Collectors.joining(" "));
|
|
System.out.println(str);
|
|
}
|
|
}
|
|
|
|
public static int lireEntier() {
|
|
try (Scanner reader = new Scanner(System.in)) {
|
|
System.out.println("Saisir un entier: ");
|
|
return reader.nextInt();
|
|
}
|
|
}
|
|
|
|
public static String lireChaine() {
|
|
try (Scanner reader = new Scanner(System.in)) {
|
|
System.out.println("Saisir une valeur et valider: ");
|
|
return reader.nextLine();
|
|
}
|
|
}
|
|
|
|
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,
|
|
boolean chiffre) {
|
|
for (int i = 0; i<CESAR_DATA_KEYS.length; i++) {
|
|
int cle = CESAR_DATA_KEYS[i];
|
|
if (chiffre) {
|
|
String result = String.valueOf(func.apply(CESAR_DATA_CLEAR[i]
|
|
.toCharArray(), cle));
|
|
afficher("Clair: " + CESAR_DATA_CLEAR[i]);
|
|
afficher("Chiffré: " + result);
|
|
afficher("Succès: " + String.valueOf(CESAR_DATA_CRYPT[i]).equals(result));
|
|
} else {
|
|
String result = String.valueOf(func.apply(CESAR_DATA_CRYPT[i]
|
|
.toCharArray(), cle));
|
|
afficher("Chiffré: " + CESAR_DATA_CRYPT[i]);
|
|
afficher("Clair: " + result);
|
|
afficher("Succès: " + String.valueOf(CESAR_DATA_CLEAR[i]).equals(result));
|
|
}
|
|
afficher();
|
|
}
|
|
}
|
|
|
|
public static void testPalindrome(Function<char[], Boolean> func) {
|
|
testPalindrome(func, "palindrome", false);
|
|
for (String pal : List.of("elle", "kayak", "serres", "essayasse")) {
|
|
testPalindrome(func, pal, true);
|
|
}
|
|
}
|
|
|
|
public static void testPalindrome(Function<char[], Boolean> func,
|
|
String mot, boolean result) {
|
|
boolean val = func.apply(mot.toCharArray());
|
|
afficher(mot, result == val ? "OK" : "ERREUR");
|
|
}
|
|
|
|
public static void testRomains(Function<char[], Integer> func) {
|
|
for (Map.Entry<String, Integer> entry : ROMAINS.entrySet()) {
|
|
String rom = entry.getKey();
|
|
int val = entry.getValue();
|
|
int res = func.apply(rom.toCharArray());
|
|
afficher(rom, " -> ", res);
|
|
if (res == val) {
|
|
afficher("Succés");
|
|
} else {
|
|
afficher("Attendu:", val);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|