After sending my first response I thought of a much faster method:
nbrSwitches1[x_?VectorQ] :=
Length[x //. {s___, a_, a_,e___} :> { s,a,e}]-1;
nbrSwitches1 /@
{{1,1,0,1},{1,1,0,0},{1,0,1,0,1}}
{2,1,4}
nbrSwitches2[x_?VectorQ] :=
(Length[Split[x]]-1);
nbrSwitches2 /@
{{1,1,0,1},{1,1,0,0},{1,0,1,0,1}}
{2,1,4}
data=Table[Random[Integer], {2000}];
nbrSwitches1[data]//Timing
{16.59 Second,1031}
nbrSwitches2[data]//Timing
{0.01 Second,1031}
Bob Hanlon
In article <c5j6vd$qqo$1 at smc.vnet.net>, "fake" <fake at fake.it> wrote:
<< Consider the lists {1,1,0,1} and {1,1,0,0},{1,0,1,0,1}.
The first sequence (1101) switches 2 times (#2digit~#3digit,
#3digit~#4digit}, the second (1100) 1 time, the third 10101 4 times.
I have the following problem.
Consider a list of binary digits. Which is the easiest way to count the
number of switches of the list (using Mathematica commands)?