Re: identical rows in tables
- To: mathgroup at smc.vnet.net
- Subject: [mg97601] Re: identical rows in tables
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Mon, 16 Mar 2009 06:28:19 -0500 (EST)
- Organization: Uni Leipzig
- References: <gpl5qr$oss$1@smc.vnet.net>
- Reply-to: kuska at informatik.uni-leipzig.de
Hi, > I have a table of values > > e.g.{{1, 2, 3, 4, 5, 6, 7, 8}, {1, 4, 6, 2, 8, 3, 7, 5}, {1, 4, 2, 6, 3, > 8, 5, 7}, {1, 3, 2, 5, 4, 7, 6, 8}, {1, 3, 5, 2, 7, 4, 8, 6}, {1, 2, > 4, 3, 6, 5, 8, 7}, {1, 2, 3, 4, 5, 6, 7, 8}} > > and want to check if any rows are identical (so there are none in the above= > - I can remove last or first row which are supposed to be the same). tab = {{1, 2, 3, 4, 5, 6, 7, 8}, {1, 4, 6, 2, 8, 3, 7, 5}, {1, 4, 2, 6, 3, 8, 5, 7}, {1, 3, 2, 5, 4, 7, 6, 8}, {1, 3, 5, 2, 7, 4, 8, 6}, {1, 2, 4, 3, 6, 5, 8, 7}, {1, 2, 3, 4, 5, 6, 7, 8}} ; {Length[tab], Length[tab /. {a___, b_, c___, b_, d___} :> {a, b, c, d}]} gives {7,6} > > But in the following {{1, 2, 3, 4, 5, 6, 7, 8}, {1, 4, 6, 2, 8, 3, 7, 5}, {= > 1, 4, 2, 6, 3, > 8, 5, 7}, {1, 3, 2, 5, 4, 7, 6, 8}, {1, 3, 5, 2, 7, 4, 8, 6}, {1, 8, > 7, 6, 5, 4, 3, 2}, {1, 8, 6, 7, 4, 5, 2, 3}, {1, 3, 2, 5, 4, 7, 6, > 8}, {1, 3, 5, 2, 7, 4, 8, 6},....} > > there is a pair {1, 3, 2, 5, 4, 7, 6, > 8}, {1, 3, 5, 2, 7, 4, 8, 6} which are the same. > > In an ideal world when I print out (in say TableForm) the repeated rows ca= > n be printed in red (or some specified colour) So looks the ideal world ?? Grid[tab, ItemStyle -> {Automatic, MapIndexed[If[# > 1, #2[[1]] -> Red, #2[[1]] -> Blue] & , Count[tab, #] & /@ tab]}] > > These rows are permutations if that makes any difference. The tables can be= > of any size (but always permutations of n numbers) > > as a subsidiary question is there an easy way to convert the tables into nu= > mbers (or strings) eg > > {12345678,14628375,14263857 etc} > StringJoin @@@ Map[ToString, tab, {2}] > Alternatively is there an easy way to perform permutations on strings of ch= > aracters? > PermuteString[str_] := With[{lst = Characters[str]}, StringJoin @@ RandomSample[lst, Length[lst]]] and PermuteString["I can't read the manual!"] work as expected Regards Jens