Comment detail

全ての組み合わせ (Nested Flatten)

	
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import std.stdio;
import std.stdarg;

T[][] directProduct(T)(T[] arr0, T[] arr1,...){
    T[][] args = [arr0, arr1];
    for(int i; i < _arguments.length; i++){
        args ~= va_arg!(T[])(_argptr);
    }
    T[][] f(T[][] arrArr, int i){
        T[][] directProduct;
        foreach(arr; arrArr){
            foreach(e; args[i]){
                directProduct ~= arr ~ e;
            }
        }
        if(i == args.length - 1){
            return directProduct;
        }
        else{
            return f(directProduct, i + 1);
        }
    }
    return f(cast(T[][])[[]], 0);
}

void main(){
    writefln(directProduct([1, 2], [3]));
    writefln(directProduct("^_@", "9876", "AB"));
    writefln(directProduct(["hoge", "fuga"], ["foo", "bar", "baz"]));
}

Index

Feed

Other

Link

Pathtraq

loading...