Re: use of orderless
- To: mathgroup at smc.vnet.net
- Subject: [mg52538] Re: use of orderless
- From: Peter Pein <petsie at arcor.de>
- Date: Wed, 1 Dec 2004 05:58:04 -0500 (EST)
- References: <cohj5k$1nb$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
borges2003xx at yahoo.it wrote: > i'm trying to implement a mark all binary lists in which three non > overlapping sublists of the same length(of length >= 3) a, b, and c , > where > c is the result of xor of a and b, in all way they can present > (orderless). > But it don't work . somebody can help me? > > ZeroPad[x__] :=(*Takes Transpose after zero - padding*)Module[{l, y = > Map[(# > /. d_Integer :> IntegerDigits[d, 2]) &, {x}]}, l = Map[Length, y]; > Transpose[MapThread[Join[Table[0, {Max[l] - #1}], #2] &, {l, y}]]] > > BitwiseXor[x__] := Flatten[Apply[Mod[Plus[##], 2] &, ZeroPad[x], {1}]] > << DiscreteMath`Combinatorica` > SetAttributes[mm, Orderless] > mmQ[t1, t2, t3] := True /; (BitwiseXor[t1, t2] == t3) && (Length[t1] > = 3) && (Length[t2] = 3) && (Length[t3] = 3) > m[{x1___, a1__, x2___, a2__, x3___, a3__, x4___}] := {} /; mmQ[{a1}, { > a2}, {a3}] > m[l_] := l > t1 = Strings[{0, 1}, 10]; > Rest[Union[Map[m, t1]]] > > > Length[%] > 1023 > Hi, I'm sorry but from <<..Combinatrica on I don't understand your code. (What is mm?) How should Mathematica determine, which arguments of m[] should be assigned to which argument? I would prefer Lists as arguments. The functions ZeroPad and BitwiseXor can be written easier: In[1]:= ZeroPad[x__] := Module[{l, y = IntegerDigits[#, 2] & /@ {x}}, l = Max[Length /@ y]; Transpose[PadLeft[#, l] & /@ y] ] In[2]:= ZeroPad[1, 2, 3, 4, 5] Out[2]= {{0, 0, 0, 1, 1}, {0, 1, 1, 0, 0}, {1, 0, 1, 0, 1}} In[3]:= BitwiseXor[x__] := PadLeft[IntegerDigits[BitXor[x], 2], If[# == 0, 1, 1 + Floor[Log[2, #]]] &[Max[x]]] In[4]:= BitwiseXor[1, 2, 3, 4, 5] Out[4]= {0, 0, 1} -- Peter Pein 10245 Berlin