1

私は部分ごとに統合の実装を試しており、すべてのものを掛け合わせたリストから可能なすべてのペアをu引き出そうとしています。dv提供されているコードは私の方法ですが、Function オブジェクトは読みやすくするために文字列に置き換えられているため、文脈から外して実行することができます。

ArrayList<String> funcObjects = giveList(CALC.MULTIPLY, function);//populate this any way you like

//all the pairs are stored in a matrix
int pairCounter = 0;
String[][] udvPairs = new String[funcObjects.size() * funcObjects.size()][2];
//for (int skip = 0; skip < 1; skip++) {
//commented out for sake of a better solution
for (int i = 0; i < funcObjects.size() - 1; i++) {
    System.out.println("i=" + i);
    //System.out.println(function.size());
    for (int j = 0; j < funcObjects.size() - i; j++) {
        System.out.println("j=" + j);
        CalcObject u = "1";
        CalcObject dv = "1";
        for (int start = j; start <= j + i; start++) {
            //this loop here is what is generating my u.
            //note that it goes in order and therefore cannot
            //account for items that are not next to each other in the list
            //my question is how to add a fix for this
            u = u + " * " + funcObjects.get(start);
        }
        for (int end = 0; end < j; end++) {
            dv = dv + " * " + funcObjects.get(end);
        }
        for (int end = j + i + 1; end < funcObjects.size(); end++) {
            dv = dv + " * " + funcObjects.get(end);
        }

        System.out.println("Pair " + pairCounter + "; u: " + u.toString() + " dv: " + dv.toString());
        udvPairs[pairCounter][0] = u;
        udvPairs[pairCounter][1] = dv;
        pairCounter++;
    }
}

これはこれまでの私のコードです。表示される組み合わせは正しいですが、すべての組み合わせが表示されるわけではありません。例えば:

x * SIN(x) * COS(x)

つまり、渡されたリスト["x","SIN(x)","COS(x)"]

私にくれます

i=0  
j=0  
Pair 0; u: x dv: SIN(x) * COS(x)  
j=1   
Pair 1; u: SIN(x) dv: x * COS(x)  
j=2  
Pair 2; u: COS(x) dv: x * SIN(x)  
i=1  
j=0  
Pair 3; u: x * SIN(x) dv: COS(x)  
j=1  
Pair 4; u: SIN(x) * COS(x) dv: x  

u をスキップしています:x * COS(x) dv: SIN(x)

だから私の質問は、パーツが隣り合っていない組み合わせも考慮に入れる方法を知っている人はいますか? プログラムはエラーをスローしていません。必要なものの実装を完了する方法がわかりません。

ありがとう。

4

1 に答える 1