diff --git a/CoolUtils.ml b/CoolUtils.ml index bcd50436c7fa9dbb42074062312a87441a0d69b1..13d5ed52cb1b1b5984ded3290b3f556f7645a026 100644 --- a/CoolUtils.ml +++ b/CoolUtils.ml @@ -11,10 +11,21 @@ module TArray = struct any (fun y -> x == y) arr let included sub sup = all (fun x -> elem x sup) sub let to_string ts arr = "[| " ^ (Array.fold_right (fun i str -> (ts i) ^" "^ str) arr "|]") + let uniq arr = + let combine n l = + match l with + | [] -> [n] + | m::tail -> if n == m then l else n::l + in + Array.of_list (Array.fold_right combine arr []) end let agents = ref ([|1;2;3;4;5;6;7;8;9;10|]) let cl_get_agents () = !agents -let cl_set_agents arr = ignore (agents := arr) +let cl_set_agents arr = ignore ( + agents := arr; + Array.fast_sort compare !agents; + agents := TArray.uniq !agents) + diff --git a/CoolUtils.mli b/CoolUtils.mli index bc2dfe9c234d09b44c13d24b4b2cd2edd34bac3e..f0f060575cbc98f01f25f2c03271e40a2b800f49 100644 --- a/CoolUtils.mli +++ b/CoolUtils.mli @@ -7,6 +7,7 @@ module TArray : sig val elem : 'a -> 'a array -> bool val included : 'a array -> 'a array -> bool val to_string : ('a -> string) -> 'a array -> string + val uniq : 'a array -> 'a array (* delete consecutive duplicates *) end val cl_get_agents : unit -> int array