let rec int_to_cic n = if n < 0 then "(Ropp "^int_to_cic (-n)^")" else match n with 0 -> " R0" |1 -> " R1" |k -> "(Rplus R1 " ^ int_to_cic (n-1) ^")" ;; let dimx = ref 3;; let dimy = ref 3;; let kmax = ref 5;; let vl = [|"x";"y";"z";"t";"u";"v";"w";"g";"h";"j";"l";"m";"n";"o";"p";"q";"r";"s";"a";"b";"c";"d"|] ;; let nth_inc n = vl.(n) ;; let preamble () = for i = 0 to !dimx do print_string ("!"^nth_inc i^":R."); done; print_string "\n"; ;; let main () = print_string "Immetti m : ";dimy := (read_int ()) - 1; print_string "Immetti n : ";dimx := (read_int ()) - 1; print_string "Immetti K : ";kmax := (read_int ()) + 1; print_string ("Genero un sistema di "^ string_of_int (!dimy+1)^" disequazioni in "^ string_of_int (!dimx+1)^" incognite con coefficenti "^string_of_int !kmax^"\n\n"); Random.self_init (); preamble (); let max = ref 0 in for i=0 to !dimy do begin print_string "(Rle "; for o=0 to !dimx do let k = ref ((Random.int !kmax)) in if !k > !max then max := !k; if i=o then k := - !k else k := !k; print_string ("(Rplus (Rmult "^int_to_cic !k^" "^nth_inc o^") "); done; print_string "(Ropp R1)"; for o=0 to !dimx do print_string (")"); done; print_string (" R0)\n->\n"); end done; print_string ("\n\nIl massimo K e' "^string_of_int !max^".\nLa tesi la puoi scegliere tu, ma se ricopi una ipotesi vai tranquillo.\n"); ;; main ();;