interleave method

List<List<T>> interleave(
  1. T x
)

Returns all the ways to insert a new element into a list.

[].interleave(1);
[[1]]
[3].interleave(1);
[[1, 4], [4, 1]]
[3, 4].interleave(1);
[[1, 3, 4], [3, 1, 4], [3, 4, 1]]
[2, 3, 4].interleave(1);
[[1, 2, 3, 4], [2, 1, 3, 4], [2, 3, 1, 4], [2, 3, 4, 1]]

Implementation

List<List<T>> interleave(T x) {
  return this._interleave(x, [...this]);
}