yamajako Tu ne marcheras donc JAMAIS !? | voila c'est un DM d'info dont j'aimerais parler avec vous
L'objectif du programme est de trouver les nombre qui sont palindrome dans 2 bases differentes je rapelle pour les oublieux qu'un palindrome est un nombre ou encore un mot qui se lit dans les 2 sens comme 505
base10 transforme un entier sous forme de liste en base b (genre [1;2;3] pour 123 en l'entier correspondant en base 10
basebp fait le contraire
string_of_list crée comme son nom l'indique une chaine de caractère a base d'une liste
groupe crée et teste dans la seconde base tous les palindromes "associés" à l'entier k recherche sert à itéter groupe jusqu à un entier donné ici 8000 Donc voila le code si vs avez besoin de plus d'explication pas de pb je repasse demain
Faites vos remarques, criiquez et tout et tout...
Code :
- let base10 (a, b)=
- let L = ref (vect_of_list(rev (a))) in
- let A = ref 0 in
- for i= 0 to ((vect_length(!L))-1) do
- A:=!A+ !L.(i) * int_of_float(float_of_int(b)**float_of_int(i));
- done;
- !A;;
- let string_of_list (l)=
- let A = ref "" in
- let B = ref (vect_of_list(l)) in
- for i = 0 to (vect_length(!B)-1) do A:= !A^string_of_int !B.(i);
- done;
- !A;;
- let basebp (a, b)=
- let Q = ref a in
- let A = ref [] in
- while !Q <> 0 do A:=[(!Q mod b)] @ !A ; Q:= !Q quo b;
- done;
- !A;;
- let groupe (k, a, b)=
- let K1 = ref (basebp (k, a)) in
- let F = ref [] in
- if !K1 = [] then F:= [] else
- for i = 0 to a-1 do
- if rev((basebp((base10(((!K1) @ [i] @ rev (!K1)), a)), b))) = (basebp ((base10(((!K1) @ [i] @ rev (!K1)), a)), b))
- then F:= !F @ [(string_of_list((basebp ((base10(((!K1) @ [i] @ rev (!K1)), a)), b))) )];
- done;
- if rev ((basebp ((base10(((!K1) @ rev (!K1)), a)), b))) = ((basebp ((base10(((!K1) @ rev (!K1)), a)), b)))
- then F:= !F @ [string_of_list((basebp ((base10(((!K1) @ rev (!K1)), a)), b)))];
- !F;;
- let recherche(a, b)=
- let R = ref [string_of_int(0)] in
- for i = 1 to 8000 do R:= !R @ ((groupe (i, a, b)));
- done;
- for j = 1 to a - 1 do if (rev (basebp(j, b))) = (basebp(j, b))
- then R:= !R @ [string_of_list((basebp(j, b)))];
- done;
- !R;;
|
|