interleave method
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]);
}