与えた条件を満たす候補
Posted feedbacks - Ruby
こんな感じ。prodloop のところはもう少しましにしたかったけど、うーん。 > solve(['and', 'or', 'not', 'and']) [true, true, true, true] [true, true, false, true] [true, false, false, true] [false, true, false, true] [false, false, false, true]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | def prodloop(count, arg=[])
if count > 0
(prodloop count-1, arg + [true]) + (prodloop count-1, arg + [false])
else
[arg]
end
end
def solve(list)
expression = ""
idx = 0
list.each do |op|
if op == "not"
expression += " not "
else
expression += " arg[#{idx}] #{op} "
idx += 1
end
end
expression += " arg[#{idx}] "
prodloop(idx+1).each do |arg|
p arg if eval(expression)
end
end
|



にしお
#3399()
Rating0/0=0.00
元ネタの 充足可能性問題 - Wikipedia は、 同じリテラル(x1とかnot x2とか)が複数回出てくることを想定しているので、 今回の問題のようにそれぞれ別の変数でだと乗法標準形 - Wikipediaにした場合に、答えが…と色々悩みどころでした。
[ reply ]