how to count number of letters with std.algorithm.count / std.algorithm.reduce / std.algorithm.map ?
bearophile
bearophileHUGS at lycos.com
Fri Nov 16 08:13:39 PST 2012
bioinfornatics:
> I would like to count number of one ore more letter into a
> string or list of string (string[]) without use a for loop but
> instead using std.algorithm to compute efficiently.
If it's speed you look for, then most times std.algorithm is not
the solution. Basic loops are usually faster. Iterating on two
chars at a time with a 2^16 table is probably fast enough for
most purposes.
> if you have:
> string seq1 = "ACGATCGATCGATCGCGCTAGCTAGCTAG";
> string[] seq2 = ["ACGATCGATCGATCGCGCTAGCTAGCTAG",
> "ACGATGACGATCGATGCTAGCTAG"];
>
> i try :
>
> reduce!( (seq) => seq.count("G"),
> seq.count("C"))(tuple(0LU,0LU),seq1)
This code is a mess. You are not creating a tuple, you are
scanning the string more than once, and such counting is not a
valid reduction function. So you have to start over and think
better what you want to do, why and how.
What do you mean by counting those in a list of strings? Do you
want the total or an array/range with the partials?
Bye,
bearophile
More information about the Digitalmars-d-learn
mailing list