This comment is reply for 2114 iwk: nskj77さんのコードを参考に修正して...(与えた条件を満たす候補). Go to thread root.
iwk #2119(2007/08/13 14:36 GMT) [ OCaml ] Rating0/0=0.00
さらにモナドを使わずに書き直してみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#light let rec satisfy prev bs cmds = match bs, cmds with | b::[], _ -> prev b | b::bs, cmd::cmds -> match cmd with | "not" -> satisfy prev ((not b)::bs) cmds | "and" -> satisfy ((&&) (prev b)) bs cmds | "or" -> satisfy ((||) (prev b)) bs cmds let rec all_comb = function | 0 -> [[]] | n -> [ for res in all_comb (n-1) ->> [true::res;false::res] ] let get_combs cmds = let len = 1 + (List.length (List.filter ((<>) "not") cmds)) [for bs in all_comb len when satisfy (fun x -> x) bs cmds -> bs] do get_combs ["and";"or";"not";"and"] |> (print_any >> print_newline)
Rating0/0=0.00-0+
[ reply ]
iwk
#2119()
[
OCaml
]
Rating0/0=0.00
Rating0/0=0.00-0+