Untitled
unknown
plain_text
2 years ago
1.0 kB
6
Indexable
module Robots : sig
type t
val create : bool array array -> (int -> int * int -> int * int) -> t
val move : t -> int * int -> unit
val print : t -> unit
end = struct
type t = {
mutable world : bool array array;
next_pos : int -> int * int -> int * int;
}
let create initial_positions next_pos =
{ world = initial_positions; next_pos }
let move robots pos =
let n = Array.length robots.world in
let (x, y) = pos in
let (next_x, next_y) = robots.next_pos n pos in
if next_x >= 0 && next_x < n && next_y >= 0 && next_y < n && robots.world.(x).(y) then
begin
robots.world.(x).(y) <- false;
robots.world.(next_x).(next_y) <- true
end
let print robots =
let n = Array.length robots.world in
for i = 0 to n - 1 do
for j = 0 to n - 1 do
if robots.world.(i).(j) then
print_string "R "
else
print_string "x ";
done;
print_newline ()
done
endEditor is loading...