Re: list equation
- To: mathgroup at smc.vnet.net
- Subject: [mg121931] Re: list equation
- From: "Dr. Wolfgang Hintze" <weh at snafu.de>
- Date: Fri, 7 Oct 2011 04:43:15 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <j6jpek$me8$1@smc.vnet.net>
Use Sort/@ to sort each element {x,y} and then remove duplicates using Union. This is about 2.500 times faster, as you can see here: (* your function on my PC *) lst = Tuples[Range[100], 2]; Timing[lstnew = Union[lst, SameTest ->(#1 == Reverse[#2] & )]][[1]] 40.797*Second (* the improved function *) Table[lst = Tuples[Range[10^k], 2]; Timing[Union[Sort /@ lst]][[1]], {k, 1, 3}] {0.*Second, 0.016*Second, 0.828*Second} (* comparison *) 40.797/0.016 2549.8125 Wolfgang "dimitris" <dimmechan at yahoo.com> schrieb im Newsbeitrag news:j6jpek$me8$1 at smc.vnet.net... > Hello to all. > > Let > > lst = Tuples[Range[100], 2]; > > In the previous list appear elements such us {x,y} and {y,x}. (e.g. > {3,4} and {4,3}). > I want to create a new list with {y,x} dropped (that is, in the new > list appears only {3,4} > and not {4,3}). > > I use > > lstnew = Union[lst, SameTest -> (#1 == Reverse[#2] &)] > > However it is needed almost 150 sec for this procedure ($Version->5.2 > for Windows) > I know that my laptop is too old but I guess there is a more > efficient > way to > create lstnew. > > Any ideas? > > Thanks a lot > > Dimitris >