CJS:
I'm trying to write a D function that does the same as this
Python function:
def cross(A, B):
"Cross product of elements in A and elements in B."
return [a+b for a in A for b in B]
where A and B are strings. (So cross("ab","12") is ["a1", "b1",
"a2", "b2"]).
One solution:
import std.stdio, std.conv, std.algorithm, std.array;
string[] cross(in string A, in string B) {
return cartesianProduct(A, B).map!(ab => ab[].text).array;
}
void main() {
cross("ab", "12").writeln;
}
But note that currently cartesianProduct doesn't return the pairs
in a natural order.
cross() should be pure.
Bye,
bearophile