19 lines
419 B
D
19 lines
419 B
D
import std.stdio, std.variant, std.range, std.algorithm;
|
|
|
|
alias T = Algebraic!(int, This[]);
|
|
|
|
int[] flatten(T t) {
|
|
return t.peek!int ? [t.get!int] : t.get!(T[])().map!flatten.join;
|
|
}
|
|
|
|
void main() {
|
|
T([T([ T(1) ]),
|
|
T(2),
|
|
T([ T([ T(3), T(4) ]), T(5) ]),
|
|
T([ T([ T( T[].init ) ]) ]),
|
|
T([ T([ T([ T(6) ]) ]) ]),
|
|
T(7),
|
|
T(8),
|
|
T( T[].init )
|
|
]).flatten.writeln;
|
|
}
|