Rectilinear and diagonal offsets in 2d
Rectilinear and diagonal offsets in 2d
(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
(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-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]})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.
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.
(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.
(pairs seq)Given seq (x0 x1 ... xn) returns a sequence of pairs
((x0 x1) (x0 x2) ... (x0 xn) (x1 x2) ...)
Given `seq` (x0 x1 ... xn) returns a sequence of pairs ((x0 x1) (x0 x2) ... (x0 xn) (x1 x2) ...)
(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 builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |