Problem 55. Counting Sequence
Given a vector x, find the "counting sequence" y.
A counting sequence is formed by "counting" the entries in a given sequence.
For example, the sequence
x = 5, 5, 2, 1, 1, 1, 1, 3
can be read as
Two 5's, one 2, four 1's, one 3
which translates to
y = 2, 5, 1, 2, 4, 1, 1, 3
So y is the counting sequence for x.
For this problem, all elements in the sequences x and y will be in the range from 1 to 9.
Solution Stats
Problem Comments

13 Comments
The problem does not define correct solution if same number is not in consecutive order, like x = [5 5 2 1 1 5 3]; Should it be three 5's, or two 5's then one 5? If it's an encoding problem the correct solution should be the last, right?
Typical DPCM encoding removes the DC and thus starts at 0, not 1. An 11% enhancement in encoding.
Good problem.
Most of the solutions with UNIQUE don't work when same number is not in consecutive order.
in the new test case 5, with x=[1 2 2 1], the test suite answer is [2 1 2 2] (two 1's, two 2's). I would expect the correct answer to be [1 1 2 2 1 1] (one 1, two 2's, one 1). I guess I am misinterpreting the question?
No. you are right. The test case 5 is wrong.
My mistake guys. Sorry about that. By the way, these comments are very helpful for adding (and fixing) bad test cases. Thanks for taking the time to comment.
Test case 5 answer is wrong. the correct answer is [2 1 2 2]. Change the test case 5 answer
test case 5 answer is wrong
Just to clarify: test case 5 isnt wrong.
wow, last test case is so fun!
This only took me a few minutes until I saw Case 5 haha! Fun and mind boggling
I’m pretty new to programming and took on the cody counting sequence problem. My sample code is below. I wasn’t going for the most compact code and wanted the code to be generic to solve any size input vector X. My code does work, but when I submit it in the problem section, I get an error running the test scripts? Not a wrong result, just errors. Comments  suggestions? Yes, I know the codes messy. lol.
x =[ 5, 5, 2, 1,1, 1,1,3];
n = numel(x);
seqy = zeros(2*n,1);
seqpos=1;
seqcount=1;
i=1;
while i < n ;
if x(i) == x( i+1);
seqcount = seqcount+1;
else
seqy(seqpos)=seqcount;
seqpos = seqpos+1 ;
seqy(seqpos) = x(i);
seqpos = seqpos+1;
seqcount =1;
end
i = i+1;
end
seqy(seqpos) = seqcount;
seqy(seqpos+1)=x(i);
seqy;
c =numel(seqy);
h = 1;
p =0;
while h < c ;
if seqy(h) ~= 0;
else
p=h;
b =trimdata(seqy,p1);
break
end
h= h+1;
end
y = b;
y % final result
Solution Comments
Show commentsProblem Recent Solvers1985
Suggested Problems

8791 Solvers

Sum all integers from 1 to 2^n
14655 Solvers

Matrix indexing with two vectors of indices
711 Solvers

Get the elements of diagonal and antidiagonal for any mbyn matrix
470 Solvers

Find the Oldest Person in a Room
16308 Solvers
More from this Author96
Problem Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!