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.
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
yes!
function y = CountSeq(x)
ele=[];
cnt=[];
ele=[ele x(1)];
cnt=ones(1,20);
L=length(x);
k=1;
for i=2:L
if x(i)==x(i-1)
cnt(k)=cnt(k)+1;
else
ele=[ele x(i)];
k=k+1;
end
end
L1=length(ele);
y=zeros(1,2*L1);
for i=1:L1
y(2*i-1)=cnt(i);
y(2*i)=ele(i);
end
end
can't understandable
Smart !
Doesn't work with [1 2 2 1] for example.
Thanks for the additional test question!
Test case 5 answer is wrong. the correct answer is [2 1 2 2]. Change the test case 5 answer
i need the code part of 3rd test case ..
can anyone help
does not work if numbers have 2 digits , for example : if x = [1 5 8 9 15 14 8 15]
Yes, it only works for 1 to 9, but that is what the problem specified. It is a good solution.
Solutions like this look much more elegant to me than the regexp expressions; and although using 'ans' would shorten it slightly, who would do that in serious code?
Project Euler: Problem 10, Sum of Primes
660 Solvers
714 Solvers
487 Solvers
Flag largest magnitude swings as they occur
700 Solvers
1891 Solvers