diff --git a/bin/main.out b/bin/main.out index d031f719f330283481cb2a8d0d6887b5f778f288..b621e44b2d756e9806f23b9b9edbd2ed5a304caf 100755 Binary files a/bin/main.out and b/bin/main.out differ diff --git a/src/main.cmi b/src/main.cmi index ca9d167290b5378a236827fa2383fbb97b1b0139..740246282506ff6bb6ff4cde753d15e271ac7c5e 100644 Binary files a/src/main.cmi and b/src/main.cmi differ diff --git a/src/main.cmx b/src/main.cmx index 3c05d0a00ce5ef285a7a4f3898e4045d3a7c55bd..5579100a531f037badfa5f20ae82afb22802bfc6 100644 Binary files a/src/main.cmx and b/src/main.cmx differ diff --git a/src/main.ml b/src/main.ml index 207ed6304c44f19a9befbe44b38a521e40bf9b87..94d35d4e1051e34ae750629a4c0d29f74701a8a3 100644 --- a/src/main.ml +++ b/src/main.ml @@ -102,14 +102,19 @@ let rec make_liste_index l c = match l with (*[quelle_roue l c] renvoi l'indice de la roue (dans la liste de roues l) avec laquelle il est plus rapide de traduire c*) -let quelle_roue l c = +let quelle_roue l c index_init = + let index = (char_to_index 0 c roue) in + let m = (if index < 14 then index else 27-index) in + let test = char_to_index 0 c (List.nth l index_init) in + let test_opt = (if test < 14 then test else 27-test) in + if (test_opt <= m) then index_init else (*i doit ĂŞtre 0 lors du premier appel*) let rec index_min m n i r = match r with | [] -> n | e::t -> if e < 14 then (if e < m then (index_min e i (i+1) t) else index_min m n (i+1) t) else (if 27-e < m then (index_min (27-e) i (i+1) t) else index_min m n (i+1) t) in - index_min (char_to_index 0 c roue) 0 (List.length l) (make_liste_index l c);; + index_min m (List.length l) 0 (make_liste_index l c);; (*[tourner_list m c n i l] tourne n fois dans le sens de c la roue d'indice i dans la liste de roues l*) @@ -123,7 +128,7 @@ let rec tourner_list c n i l = (*[commande_phase2 (i,l) roue] traduit le message l en commande en selectionnant pour chaque lettre la bonne antenne*) let rec commande_phase2 (i,l) liste_roues index_init = match l with | [] -> "" - | e::t -> let index = quelle_roue liste_roues e in + | e::t -> let index = quelle_roue liste_roues e index_init in let r = (if index = (List.length liste_roues) then roue else (List.nth liste_roues index)) in let (s,n) = translate e r in let sres = (if index = index_init then s else (String.concat "" ("S"::(string_of_int index)::s::[])) ) in diff --git a/src/main.o b/src/main.o index 02c7adb2e5e5f878b7677d9713ceafa1c29005f7..0a62970799e3ee2c10c248a4405ae5131139e29c 100644 Binary files a/src/main.o and b/src/main.o differ