Re: Pure Function for String Selection
- To: mathgroup at smc.vnet.net
- Subject: [mg60954] Re: Pure Function for String Selection
- From: "Jens-Peer Kuska" <kuska at informatik.uni-leipzig.de>
- Date: Wed, 5 Oct 2005 02:27:54 -0400 (EDT)
- Organization: Uni Leipzig
- References: <dht479$hl1$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi,
SelectStringQ[str_String] :=
Module[{ch = Characters[str]},
ch = {First[#], Length[#]} & /@ Split[ch];
Max[Last /@ Select[ch, MatchQ[#, {"X", _}] &]] <
6 &&
Max[Last /@ Select[ch, MatchQ[#, {"2", _}] &]] <
6 &&
Max[Last /@ Select[ch, MatchQ[#, {"1", _}] &]] <
8
]
may help you.
Regards
Jens
"Edson Ferreira" <edsferr at uol.com.br> schrieb im
Newsbeitrag news:dht479$hl1$1 at smc.vnet.net...
| Dear members,
|
| I want to define a pure function to filter a set
of strings.
|
| The strings that compose the set have all the
same length and the only characters in these
strings are "1", "X" and "2".
|
| The function that I want is like the one bellow:
|
| In[1]:=
| Unprotect[D];
| In[2]:=
| U={"2","X"};
| In[3]:=
| M={"1","2"};
| In[4]:=
| D={"1","X"};
| In[5]:=
| T={"1","2","X"};
| In[6]:=
| L=Flatten[Outer[StringJoin,T,T,T,D]];
| In[7]:=
| L = Select[L, Count[Characters[#], "1"] > 1 &];
|
| In this case, it counts the number of characters
"1" in each string and select the ones that have
more than one "1".
|
| I want a pure function, to be applied like the
one in the example above, but for a different
task.
|
| For each string, I want it to count the maximum
number of repeated characters for each character.
|
| In other words, It must count the maximum number
of repeated "1", "X" and "2" for each string.
|
| The string must be "selected" if:
|
| The longest run of repeated "1" is shorter than
8 characters
| AND
| The longest run of repeated "X" is shorter than
6 characters
| AND
| The longest run of repeated "2" is shorter than
6 characters
|
| For example:
| "11112X122X1XXX" should be "selected"
| (there are four "1" in sequence, 3 "X" in
sequence and 2 "2" in sequence)
|
| "122XXXXXX222XX" should NOT be "selected"
| (there are six "X" in sequence)
|
| "11111111222112" should NOT be "selected"
| (there are 8 "1" in sequence)
|
| Thanks a lot !!!!!
|
| Edson Ferreira
|
|