두 공식이 동등한 지 아닌지 평가해야합니다. 여기서 접두어 수식 인 수식의 간단한 정의를 사용합니다. And(Atom("b"), Or(Atom("c"), Not(Atom("c"))))
내 아이디어는 간단하다 (b and (c or not c))
OCaml에서 가능한 모든 해석을 평가하십시오.
, 내 경우에 (모든 조합을 적용, 모든 원자를 얻을 의미 예를 들어
이 And(Atom("b"), True)
내가 진정한-해당하는 4 조합을해야합니다, b and true
의미, true- false, false-true 및 false-false). 것은, 나는이 조합을 만드는 방법을 모른다.
현재로서는 모든 원자를 얻는 방법을 알고 있으므로 원자 수가 5 개인 경우 32 조합을 만들어야합니다. 어떻게 OCaml에서 그것을 할 수 있습니까?
이것은 놀라운 것입니다! 거기에 @의 의미를 설명해 주시겠습니까? List.append와 같습니까? 그리고 하나 더, 재미의 의미는 무엇입니까 l--> false :: l? – zfm
@zfm : 확실히'@'는'List.append'의 바로 가기입니다 (http://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html 참조). 'fun l -> false :: l'은 익명의 함수입니다. ''List.map ff rest'에''let ff l = false :: l '을 쓸 수 있습니다. 대신에 위와 같이 함수를 "인라인"할 수 있습니다. 희망이 도움이됩니다. – akoprowski
메모리에있는 모든 조합을 보유 할 수 없다면 사전에 조합 색인을 작성하기 위해 잠시 전에 만든 게시물 (일부 ocaml과 함께)을 확인하십시오. http://stackoverflow.com/questions/127704/algorithm-to -return-all-k-elements-of-n/127856 # 127856 – nlucaroni