Re: boolean function, interpolation
- To: mathgroup at smc.vnet.net
- Subject: [mg61893] Re: boolean function, interpolation
- From: Maxim <ab_def at prontomail.com>
- Date: Thu, 3 Nov 2005 04:59:17 -0500 (EST)
- References: <dj2719$bgb$1@smc.vnet.net><djcpvk$cao$1@smc.vnet.net> <dk9vpn$6sf$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
On Wed, 2 Nov 2005 09:10:15 +0000 (UTC), xxxxyz at abv.bg <xxxxyz at abv.bg>
wrote:
> But this does not work when the system does not have solution. For
> example
> boolint[{{{1,1,1},0},{{1,1,1},1}}] returns solution. Any suggestions in
> this case?
>
Sure, if you want a more fool-proof version, it is easy to add the
necessary checks:
Clear[boolint]
boolint[$Lvecval: {{{(0|1)..}, 0|1}..}] /;
MatrixQ@ $Lvecval[[All, 1]] :=
Module[{conj, Lvecval = $Lvecval},
conj[Lbool_] := Times @@ MapThread[
If[# == 0, 1 - #2, #2]&,
{Lbool, Array[Slot, Length@ Lbool]}];
Lvecval = Union@ Lvecval;
(Total@ Cases[Lvecval, {v_, 1} :> conj[v]] //
Evaluate // Function) /;
!MatchQ[Lvecval, {___, {v_, _}, {v_, _}, ___}]
]
This checks that all the vectors in the input are the same length, all the
values are 0/1, different values don't correspond to the same vector, and
can handle inputs with repeated elements.
Maxim Rytin
m.r at inbox.ru