Skip to content
Extraits de code Groupes Projets
Valider 3380f6e8 rédigé par Loïc Wikle DUBARD's avatar Loïc Wikle DUBARD
Parcourir les fichiers

tests de tourner

parent 8f149f72
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Aucun aperçu pour ce type de fichier
Aucun aperçu pour ce type de fichier
......@@ -21,16 +21,14 @@
urlcolor={blue!80!black}
}
\author{Loïc DUBARD}
\title{Rapport du projet de programmation Impérative: Stackchess}
\title{Rapport du projet de programmation fonctionnelle : \\
\textbf{DERNIÈRES NOUVELLES : LES EXTRA-TERRESTRES EXISTENT}}
\begin{document}
\maketitle
\tableofcontents
\clearpage
\section*{Introduction}
\begin{center}
\textbf{DERNIÈRES NOUVELLES : LES EXTRA-TERRESTRES EXISTENT}
\end{center}
Le but de ce projet est d'implanter un protocole de communication avec les habitants des mondes lointains.\\
......@@ -69,6 +67,7 @@ Le programme affichera donc une suite de commandes permettant d'émettre le mess
| > src/
| | main.ml
| | tests.ml
| | user.ml
| [> bin/]
| | main.out
| | tests.out
......@@ -104,7 +103,7 @@ On introduit aussi la fonction [\textbf{tourner} c n roue] dont le but est de re
La fonction \textbf{commande} agit par récurrence sur la liste de caractères l de cette manière :\\
\begin{itemize}
\item à la première itération, on traduit le premier caractère de la liste en sa commande (une string) grâce à la fonction \textbf{translate} puis tourne la roue dans le bon sens et le bon nombre de cran avec la fonction \textbf{tourner}.
\item à la $n^{ieme}$ iteration, le $n^{ieme}$ caractère est traduit en sa commande (en une string) en utilisant la roue obtenue après la $(n-1)^{ieme}$ itération puis tourne la roue de même que à la première itération.
\item à la $n^{ieme}$ itération, le $n^{ieme}$ caractère est traduit en sa commande (en une string) en utilisant la roue obtenue après la $(n-1)^{ieme}$ itération puis tourne la roue de même que à la première itération.
\end{itemize}
......@@ -134,8 +133,8 @@ Pour cette phase j'ai donc créé la fonction [\textbf{commande2} (n,m)] où n e
\section{Idées d'optimisation du code}
Au lieu de choisir la roue à utiliser lettre après lettre, on peut tracer un arbre n-aire (où n est le nombre de roues) et trouver le chemin le plus court pour la phrase a traduire. On optimiserai le temps d'execution du programme non pas lettre par lettre mais pour toute la phrase. \\
Au lieu de choisir la roue à utiliser lettre après lettre, on peut tracer un arbre n-aire (où n est le nombre de roues) et trouver le chemin le plus court pour la phrase a traduire. On optimiserai le temps d'exécution du programme non pas lettre par lettre mais pour toute la phrase. \\
Cependant, cette manière de calculer le programme à envoyer aux antennes me semble très couteuse en temps et en mémoire. C'est pour cela que j'ai choisi de ne pas l'implémenter.
Cependant, cette manière de calculer le programme à envoyer aux antennes me semble très coûteuse en temps et en mémoire. C'est pour cela que j'ai choisi de ne pas l'implémenter.
\end{document}
Fichier ajouté
Fichier ajouté
Aucun aperçu pour ce type de fichier
Aucun aperçu pour ce type de fichier
......@@ -25,7 +25,7 @@ let parse_input () =
print_string "Entrez le nombre d'antennes à utiliser >";
let nb_antennas = int_of_string (read_line ()) in
print_string "Entrez le texte à traduire en programme (tout en majuscule et pas de ponctuation !) >";
let phrase = read_line () in
let phrase = String.uppercase_ascii (read_line ()) in
nb_antennas,split_string phrase;;
(*let print_elt n (i,l) = print_char (List.nth l n);;
......@@ -150,7 +150,9 @@ let rec initialize_list n a = if n = 1 then [a] else if n = 0 then [] else a::(i
(*
* @ensure : traduit le message l en commande en selectionnant pour chaque lettre la bonne antenne
*)
let commande2 (n,m) =
let commande2 (nb,m) =
let n= (if nb>(List.length m) then List.length m else nb)
in
let rec commande_phase2 l liste_roues index_init = match l with
| [] -> ""
| e::t -> let index = quelle_roue liste_roues e index_init in
......
Aucun aperçu pour ce type de fichier
......@@ -8,11 +8,75 @@
open Main;;
open Printf;;
printf "------DEBUT DES TESTS------\n";;
exception InvalidTest;;
printf "======DEBUT DES TESTS======\n";;
printf "------Tests de la phase 1------\n";;
(* Test de tourner c n roue *)
printf " Fonction [tourner c n roue]\n";;
printf "Test tourner une roue vide.....";;
try( let _ = tourner 'N' 3 [] in () )
with
| RoueVide -> printf "fait\n"
| _ -> raise InvalidTest
;;
let list_test_roues=[
[' ';'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'];
['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';' '];
['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';' ';'A'];
['C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B'];
['D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C'];
['E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D'];
['F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E'];
['G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F'];
['H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G'];
['I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H'];
['J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I'];
['K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J'];
['L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K'];
['M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L'];
['N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M'];
['O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N'];
['P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O'];
['Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P'];
['R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q'];
['S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R'];
['T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S'];
['U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T'];
['V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U'];
['W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V'];
['X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W'];
['Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X'];
['Z';' ';'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'];
[' ';'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'];
];;
let rec test_tourner_1 n =
if n>0 then (
printf "Tourner %d fois dans le sens de 'N'....." (27-n);
if ((tourner 'N' (27-n) roue) = (List.nth list_test_roues (27-n)))
then ((printf "fait\n") ; (test_tourner_1 (n-1)))
else (raise InvalidTest)
)
else (printf "\n");;
test_tourner_1 27;;
let rec test_tourner_2 n =
if n>0 then (
printf "Tourner %d fois dans le sens de 'P'....." (27-n);
if ((tourner 'P' (27-n) roue) = (List.nth list_test_roues (n)))
then ((printf "fait\n") ; (test_tourner_2 (n-1)))
else (raise InvalidTest)
)
else (printf "\n");;
test_tourner_2 27;;
(*Test de translate c roue*)
printf " Fonction [translate c roue]\n";;
(*Test de char_to_index i c roue *)
......@@ -32,4 +96,4 @@ printf "------DEBUT DES TESTS------\n";;
(*test commande2 (n,m) *)
printf "------FIN DES TESTS------\n";;
printf "======FIN DES TESTS=======\n";;
......@@ -7,9 +7,9 @@
open Main;;
let input=parse_input();;
(*Résultat de la phase 1*)
Printf.printf "------Résultats de la phase 1------\n";;
let input=parse_input();;
let com = commande input roue;;
print_string (com);;
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter