Rectilinear and diagonal offsets in 2d
Rectilinear and diagonal offsets in 2d
(bg-perimeter boundary-graph)
For a grid boundary graph boundary-graph
for a connected region in a grid-graph
the perimeter of that region
For a grid boundary graph `boundary-graph` for a connected region in a grid-graph the perimeter of that region
(bg-side-count boundary-graph)
For a grid boundary graph boundary-graph
for a connected region in a grid-graph
the number of sides that regions has.
For a grid boundary graph `boundary-graph` for a connected region in a grid-graph the number of sides that regions has.
(border grid i)
grid
should be a rectangular collection of collections. Adds i
as a border around the supplied grid.
`grid` should be a rectangular collection of collections. Adds `i` as a border around the supplied grid.
(border-and-flatten grid i)
Borders grid
with i
and then makes it into a
one dimensional vector
Borders `grid` with `i` and then makes it into a one dimensional vector
(borderv grid i)
(borderv grid i n)
grid
should be a rectangular collection of collections. Adds i
as a border around grid
. If n
>= 1 is supplied do this n times.
Return a vector of vectors
`grid` should be a rectangular collection of collections. Adds `i` as a border around `grid`. If `n` >= 1 is supplied do this n times. Return a vector of vectors
(bracket coll i)
Add the element i
to the start and end of coll
.
Add the element `i` to the start and end of `coll`.
(bracketv coll i)
Add the element i
to the start and end of coll
and return a vector.
Add the element `i` to the start and end of `coll` and return a vector.
(coordinate-segment grid length point direction)
Get coordinates in the grid starting at point
going in direction
,
including the point
. length
defines the maximum length returned.
If the grid is exited then only return points in the grid, even if
that is shorter than length
.
Get coordinates in the grid starting at `point` going in `direction`, including the `point`. `length` defines the maximum length returned. If the grid is exited then only return points in the grid, even if that is shorter than `length`.
(count-by f coll)
Return a map from the distinct values of f
applied to coll
to the frequencies they occur.
Return a map from the distinct values of `f` applied to `coll` to the frequencies they occur.
(count-when coll)
(count-when f coll)
Count the number of elements in coll
where f
returns true.
If not supplied use identity as f
.
Count the number of elements in `coll` where `f` returns true. If not supplied use identity as `f`.
(filter-first pred coll)
Find the first element in coll
for which pred
returns true.
nil if none are found.
Find the first element in `coll` for which `pred` returns true. nil if none are found.
(filter-grid-coordinates f grid)
(filter-grid-coordinates f grid padding)
(filter-grid-coordinates f grid row-padding col-padding)
All indexes of the 2-d grid
as [row col] vecs where the value satisfies the
predicate f
. If padding
is supplied then
omit that many rows and cols around the edges. If col-padding
and row-padding
are
supplied then omit respectively for rows and cols.
All indexes of the 2-d `grid` as [row col] vecs where the value satisfies the predicate `f`. If `padding` is supplied then omit that many rows and cols around the edges. If `col-padding` and `row-padding` are supplied then omit respectively for rows and cols.
(filter-in-grid grid points)
Return only those points in the grid
Return only those points in the grid
(find-first-in-grid grid val)
Find the first coordinate in grid
where the value is val.
Find the first coordinate in `grid` where the value is `val.`
(find-in-grid grid val)
Find all coordinates in grid
where the value is val
Find all coordinates in `grid` where the value is `val`
(gg-component-boundary-points grid-graph component)
For grid-graph
a set of 'boundary points' for the connected component
component
.
For `grid-graph` a set of 'boundary points' for the connected component `component`.
(gg-make-boundary-graph grid-graph component)
For grid-graph
a 'boundary graph' for the connected component component
that has boundary nodes as constructed by gg-component-boundary-points
and
edges between adjacent points on each side of the connected component's region
as viewed in the original grid.
For `grid-graph` a 'boundary graph' for the connected component `component` that has boundary nodes as constructed by `gg-component-boundary-points` and edges between adjacent points on each side of the connected component's region as viewed in the original grid.
(gg-node-boundary-points grid-graph node)
(gg-node-boundary-points grid-graph node d)
For grid-graph
a set of 'boundary points' to node
node
a distance d
in
the directions where node
does not have a neighbor in the graph.
In order to get the right boundary we do not restrict to
neighbors in the grid!For `grid-graph` a set of 'boundary points' to `node` - these are points displaced off of `node` a distance `d` in the directions where `node` does not have a neighbor in the graph. In order to get the right boundary we do _not_ restrict to neighbors in the grid!
(gg-unconnected-neighbors grid-graph node)
For grid-graph
a set of rectilinear neighbors of node
in the grid
not connected to node by an edge.
For `grid-graph` a set of rectilinear neighbors of `node` in the grid not connected to node by an edge.
(grid-centered-segment grid length point direction)
(grid-centered-segment grid length point direction f)
In grid
from point
get length
entries on either side (and point) starting at
point + length - direction and going to point + length * (direction).
Result returned as a vector. If f
is supplied then call f on the vector. Only do coordinates
in the grid.
E.g. if the grid is [[1 2 3] [4 5 6] [7 8 9]] then (grid-centered-segment grid 1 [1 1] [1 0])
returns [2 5 8]
In `grid` from `point` get `length` entries on either side (and point) starting at point + length - direction and going to point + length * (direction). Result returned as a vector. If `f` is supplied then call f on the vector. Only do coordinates in the grid. E.g. if the grid is [[1 2 3] [4 5 6] [7 8 9]] then (grid-centered-segment grid 1 [1 1] [1 0]) returns [2 5 8]
(grid-coordinates grid)
(grid-coordinates grid padding)
(grid-coordinates grid row-padding col-padding)
All indexes of the 2-d grid
as [row col] vecs. If padding
is supplied then
omit that many rows and cols around the edges. If col-padding
and row-padding
are
supplied then omit respectively for rows and cols.
All indexes of the 2-d `grid` as [row col] vecs. If `padding` is supplied then omit that many rows and cols around the edges. If `col-padding` and `row-padding` are supplied then omit respectively for rows and cols.
(grid-flat-map f grid)
(grid-flat-map f grid padding)
(grid-flat-map f grid row-padding col-padding)
Map f
, a function of the grid and point in the grid, over grid
and resulting in a flat sequence, so
the structure of the grid is lost.
If padding
, row-padding
, col-padding
are used then restrict the coordinates as in `grid-coordinates.
Map `f`, a function of the grid and point in the grid, over `grid` and resulting in a flat sequence, so the structure of the grid is lost. If `padding`, `row-padding`, `col-padding` are used then restrict the coordinates as in `grid-coordinates.
(grid-has-value? grid val point)
Return whether the grid
has value val
at point point
.
Return whether the `grid` has value `val` at point `point`.
(grid-map f grid)
(grid-map f grid padding)
(grid-map f grid row-padding col-padding)
Map f
, a function of the grid and point in the grid, over grid
and resulting in a new grid.
If padding
, row-padding
, col-padding
are used then restrict the coordinates as in grid-coordinates
, so
the new grid will be smaller if there is padding
Map `f`, a function of the grid and point in the grid, over `grid` and resulting in a new grid. If `padding`, `row-padding`, `col-padding` are used then restrict the coordinates as in `grid-coordinates`, so the new grid will be smaller if there is padding
(grid-mapcat f grid)
(grid-mapcat f grid padding)
(grid-mapcat f grid row-padding col-padding)
Map f
, a function of the grid and point in the grid and returning a collection,
over grid
and concatenate the results.
If padding
, row-padding
, col-padding
are used then restrict the coordinates
as in grid-coordinates
.
Map `f`, a function of the grid and point in the grid and returning a collection, over `grid` and concatenate the results. If `padding`, `row-padding`, `col-padding` are used then restrict the coordinates as in `grid-coordinates`.
(grid-segment grid length point direction)
(grid-segment grid length point direction f)
In grid
get length
entries going in direction
[dx dy]
starting at point
[row col] as a vector. If f
is supplied
then call f on the vector instead. Only use coordinates in the grid.
In `grid` get `length` entries going in `direction` [dx dy] starting at `point` [row col] as a vector. If `f` is supplied then call f on the vector instead. Only use coordinates in the grid.
(grid-simple-map f grid)
A convenience to map f
over grid
, returning a vector of vectors
A convenience to map `f` over `grid`, returning a vector of vectors
(grid-to-graph grid edge-fn & {:keys [:with-diagonal :directed :all-nodes]})
Makes an ubergraph graph from the grid and edge-fn. If directed is true it is a directed graph. For each location [row col] we call edge-fn with the grid, the location, and each neighbor of the location (including diagonal neighbors if :with-diagonal is true). If edge-fn is true an edge is created from location to neighbor. If it is a number then that is assigned as the weight of the edge. Note that for undirected graphs edge-fn should be symmetrical in the location and neighbor location or there may be unexpected behavior, as it will be called twice. If :all-nodes is true than add nodes even if they don't have any edges.
Makes an ubergraph graph from the grid and edge-fn. If directed is true it is a directed graph. For each location [row col] we call edge-fn with the grid, the location, and each neighbor of the location (including diagonal neighbors if :with-diagonal is true). If edge-fn is true an edge is created from location to neighbor. If it is a number then that is assigned as the weight of the edge. Note that for undirected graphs edge-fn should be symmetrical in the location and neighbor location or there may be unexpected behavior, as it will be called twice. If :all-nodes is true than add nodes even if they don't have any edges.
(grid-value grid point)
Return the value of the grid
at point
Return the value of the `grid` at `point`
(grid= grid p1 p2)
(grid= grid p1 p2 f)
true iff the value in the grid
at p1
equals that at p2
.
If f
is supplied then compare the value of f
evaluated on the
values at the points instead of the values at the points themselves.
true iff the value in the `grid` at `p1` equals that at `p2`. If `f` is supplied then compare the value of `f` evaluated on the values at the points instead of the values at the points themselves.
(in-grid-pred grid)
Returns a predicate on row and col or [row col] that says if that row and column are in the grid.
Returns a predicate on row and col or [row col] that says if that row and column are in the grid.
(in-grid? grid [row col])
(in-grid? grid row col)
Is the given row and column in the grid?
Is the given row and column in the grid?
(map-kv val-fn coll)
(map-kv key-fn val-fn coll)
Construct a new map from an existing one.
Each of val-fn
and key-fn
(optional - default (fn [k _] k))
are
a function of two arguments, the key and value.
Note that to make the usage more natural the optional key-fn
is the first argument when used.
Construct a new map from an existing one. Each of `val-fn` and `key-fn` (optional - default `(fn [k _] k))` are a function of two arguments, the key and value. Note that to make the usage more natural the optional `key-fn` is the first argument when used.
(neighbors-2d grid loc & {:keys [:with-diagonal]})
loc
is a [row col] coordinate in a 2d grid grid
. Gives a vector of coordinates of horizontal
and vertical neighbors, and also diagonal ones if :with-diagonal
is true. Does not give neighbors
that exceed the bounds of the grid.
`loc` is a [row col] coordinate in a 2d grid `grid`. Gives a vector of coordinates of horizontal and vertical neighbors, and also diagonal ones if `:with-diagonal` is true. Does not give neighbors that exceed the bounds of the grid.
(neighbors-2d-map grid loc & {:keys [:with-diagonal]})
loc
is a [row col] coordinate in a 2d grid grid
. Gives a map of coordinates of horizontal
and vertical neighbors, and also diagonal ones if :with-diagonal
is true, to their values in the grid.
Does not give neighbors that exceed the bounds of the grid.
`loc` is a [row col] coordinate in a 2d grid `grid`. Gives a map of coordinates of horizontal and vertical neighbors, and also diagonal ones if `:with-diagonal` is true, to their values in the grid. Does not give neighbors that exceed the bounds of the grid.
(neighbors-2d-vals grid loc & {:keys [:with-diagonal]})
loc
is a [row col] coordinate in a 2d grid grid
. Gives a seq of values of horizontal
and vertical neighbors, and also diagonal ones if :with-diagonal
is true, to their values in the grid.
Does not give neighbors that exceed the bounds of the grid.
`loc` is a [row col] coordinate in a 2d grid `grid`. Gives a seq of values of horizontal and vertical neighbors, and also diagonal ones if `:with-diagonal` is true, to their values in the grid. Does not give neighbors that exceed the bounds of the grid.
(not-grid-has-value? grid val point)
Return whether the grid
does not have value val
at point point
Return whether the `grid` does not have value `val` at point `point`
(pairs seq)
(pairs seq pred)
Given seq
(x0 x1 ... xn) returns a sequence of pairs
((x0 x1) (x0 x2) ... (x0 xn) (x1 x2) ...). If pred
, a
function of two variables, is provided then filter the pairs with that predicate.
Given `seq` (x0 x1 ... xn) returns a sequence of pairs ((x0 x1) (x0 x2) ... (x0 xn) (x1 x2) ...). If `pred`, a function of two variables, is provided then filter the pairs with that predicate.
(subgrid grid row-start row-end col-start col-end)
Get a subgrid of the given grid with the normal start/end conventions. Returns a vector of vectors.
Get a subgrid of the given grid with the normal start/end conventions. Returns a vector of vectors.
(transpose seqs)
Transpose a rectangular sequence of sequences.
Transpose a rectangular sequence of sequences.
(transposev seqs)
Transpose a rectangular sequence of sequences, returning a vector of vectors.
Transpose a rectangular sequence of sequences, returning a vector of vectors.
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close