Newer
Older
entry get_envelope_1d [n] (xs: [n]u8) (thickness: i64) : ([]u8, []u8) =
let west = xs[0:thickness] :> [thickness]u8
let east = xs[n - thickness:] :> [thickness]u8
entry get_envelope_2d [n][m] (matrix: [n][m]u8) (thickness_y: i64) (thickness_x: i64): ([][]u8, [][]u8, [][]u8, [][]u8, [][]u8, [][]u8, [][]u8, [][]u8) =
let north = matrix[0:thickness_y] :> [thickness_y][m]u8
let north_west = matrix[0:thickness_y,0:thickness_x] :> [thickness_y][thickness_x]u8
let north_east = matrix[0:thickness_y,m - thickness_x:m] :> [thickness_y][thickness_x]u8
let south = matrix[n - thickness_y:] :> [thickness_y][m]u8
let south_east = matrix[n - thickness_y:n,m - thickness_x:m] :> [thickness_y][thickness_x]u8
let south_west = matrix[n - thickness_y:n,0:thickness_x] :> [thickness_y][thickness_x]u8
let east = matrix[:,m - (thickness_x):] :> [n][thickness_x]u8
let west = matrix[:,0:thickness_x] :> [n][thickness_x]u8
in (north_west, west, south_west, south, south_east, east, north_east, north)
entry get_subdomain_1d [n] (xs: [n]u8) (x:i64) (dimensions: [1]i64) : []u8 =
xs[x:x+dimensions[0]]
entry get_subdomain_2d [n][m] (matrix: [n][m]u8) (y:i64) (x:i64) (dimensions: [2]i64) : [][]u8 =
matrix[y:y+dimensions[0],x:x+dimensions[1]]