だから、私はn
質問の合計を持っている、各質問いくつかの点があります。Pythonの逆戻り辞書
私はu
とv
質問の間、蓄積x
とy
ポイント間を持っている質問のすべての可能なセットを作成する必要がある、と私はバックトラックを使用していることを行う必要があります。 012 = "" Q1:5、 "Q2":3、 "Q3":4、 "Q4":10、 "Q5":6、 "Q6" ":7}、6つの質問があるので、最初の質問(" Q1 ")は5点などあります
私はコーディングを開始しましたが、バックトラック機能自体を作成する方法はわかりません。それが意味をなさなければ、すべての可能性をどのように通過するのか。
questions = {"Q1":5, "Q2":3, "Q3": 4, "Q4" : 10, "Q5" : 6, "Q6" : 7}
u = 3 #
v = 5 # between u and v questions
x = 5 #
y = 100 #between x and y points
def get_points(ar):
s = 0
for key, value in ar.items():
s = s + int(value)
return s
def get_NOQuestions(ar):
return len(ar)
def reject(candidate):
if (get_points(candidate) > y and get_NOQuestions(candidate) < v) or (get_NOQuestions(candidate) >= v and get_points(candidate) < x):
return False
return True
def accept(candidate):
if get_points(candidate) >= x and get_points (candidate) <= y and get_NOQuestions(candidate) >= u and get_NOQuestions(candidate) <= v:
return True
return False
def output(candidate):
print(candidate)
ar = {}
def backtracking(k):
for key, value in questions.items():
ar[key] = value
if not reject(ar):
if accept(ar):
output(ar)
else:
backtracking(k+1)
backtracking(0)
これは、それが(それはこの形式で、それだけのためだなければならないことではない)あらゆる可能性を経由しないので、明らかに「バックトラッキング」機能が動作しない、私がこれまで持っているものである
私はおそらく、辞書のすべての項目を並べ替えることを考えています(長さの置換はu
とv
の間にあります)、「受け入れる」機能の条件を満たすものを手に入れることを考えています。
実際のバックトラッキング機能自体はすべての可能性を通り抜けていると言っていますが、受け入れ機能と拒否機能は悪いですか?私はそれが疑わしいので、 提案のおかげでbtw :) – Hansewl