Compute in one pass 3 tokens position
Era Scarecrow
rtcvb32 at yahoo.com
Mon Apr 30 20:20:04 PDT 2012
On Tuesday, 1 May 2012 at 02:49:19 UTC, bioinfornatics wrote:
> Le lundi 30 avril 2012 à 14:52 +0200, bioinfornatics a écrit :
> Anyone know how to know the position of 3 token in one sequence
> in one
> pass?
>
> tok1 = a
> tok2 = b
> tok3 = c
> seq = blah count me
> b=> 0 a=>2 c=>5
> iterate over sequence if token not yet seen count the number of
> iteration for know in which column it is located. Example own
> written on
> the fly)
I would say you are trying to way overcomplicated the solution.
For simplicity I would use an AA, then a foreach and it will do
it in 1 pass (2 if you count the inner ones). I'm not sure if
there's a better solution already in phobos, so I can't refer to
that :( This could be modified to be more generic so..
//returns AA of tokens that were found and the offset of their
first occurrence.
int[char] findTokens(const char[] input, char[] tok ...) {
int[char] offs;
foreach(i, ch; input) {
foreach(t; tok) {
if (ch == t && t !in offs)
offs[t] = i;
}
}
return offs;
}
unittest {
assert(findTokens("blah count me", 'a', 'b', 'c') == ['a':2,
'b' : 0, 'c':5]);
}
More information about the Digitalmars-d-learn
mailing list