0

私は CSP に取り組んでおり、Generate and test メソッドを使用していますが、for ループで dic[X] を実行する必要がないようにしたいので、dic[I] を共有する方法はありますか?ステートメントを3回繰り返し印刷しません

dic = {}
for con in csp0.constraints:
    for var in con.scope:
        dic[var] = var.domain

for x in dic[X]:
    for y in dic[Y]:
        for z in dic[Z]:
            print(x,y,z)
            if x < y and y < z:
                print('the solution is: ', x,y,z)
for i in dic:
    for p in dic[i]:
        for f in dic[i]:
            for a in dic[i]:
                if p < f and f < a:
                    print('the solution is:', p,f,a)
                if p==4 and f==4 and a==4:
                    break

変数は XYZ です。変数のドメインは {1,2,3,4} であり、制約は X < Y < Z です。出力は次のようになります。

1 1 1
1 1 2
1 1 3
1 1 4
1 2 1
1 2 2
1 2 3
the solution is:  1 2 3
1 2 4
the solution is:  1 2 4
1 3 1
1 3 2
1 3 3
1 3 4
the solution is:  1 3 4
1 4 1
1 4 2
1 4 3
1 4 4
2 1 1
2 1 2
2 1 3
2 1 4
2 2 1
2 2 2
2 2 3
2 2 4
2 3 1
2 3 2
2 3 3
2 3 4
the solution is:  2 3 4
2 4 1
2 4 2
2 4 3
2 4 4
3 1 1
3 1 2
3 1 3
3 1 4
3 2 1
3 2 2
3 2 3
3 2 4
3 3 1
3 3 2
3 3 3
3 3 4
3 4 1
3 4 2
3 4 3
3 4 4
4 1 1
4 1 2
4 1 3
4 1 4
4 2 1
4 2 2
4 2 3
4 2 4
4 3 1
4 3 2
4 3 3
4 3 4
4 4 1
4 4 2
4 4 3
4 4 4
4

0 に答える 0