riffleIn method
Splits into two and uses interleave to combine, second half first.
1, 2, 3, 4, 5, 6.riffleIn() returns 4, 1, 5, 2, 6, 3.
1, 2, 3, 4, 5, 6.riffleOut() returns 1, 4, 2, 5, 3, 6.
Odd number of elements:
1, 2, 3, 4, 5.riffleIn() returns 3, 1, 4, 2, 5.
1, 2, 3, 4, 5.riffleOut() returns 1, 4, 2, 5, 3.
inverse goes back to original:
3, 1, 4, 2, 5.riffleIn(inverse: true) returns 1, 2, 3, 4, 5.
Implementation
Set<E> riffleIn({bool inverse = false}) {
return h.riffleInIterable(original: this, inverse: inverse).toSet();
}