Hit the wrong key and posted too early. I finished the code sample below. My main question was for something prettier and more concise. I feel like the code below is long and not as pretty in comparison to the Python. Sometimes that's an unavoidable consequence of static typing, but I'm not sure that's the case here.

On Saturday, 18 January 2014 at 05:40:56 UTC, CJS wrote:
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"]).

It's easy to get something that works the same in D, but I'd like to make it as simple and short as possible. The best I could come up with is


string[] cross(string A, string B){
    string[] grid;
    foreach(t; cartesianProduct(A,B)){
        grid ~= (to!string(p[0]) ~ to!string(p[1]));
      }
      return grid;
}

Reply via email to