私は 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