So you have some vector that contains 1's and 0's, and the goal is to return a vector that gives the number of 0's between each one. for example:
Input = [0 1 0 0 0 1 0 1 1 1 0 0 0 1 0 1 1 0 0]
Output = [1 3 1 0 0 3 1 0 2]
Solution Stats
Problem Comments
5 Comments
Solution Comments
Show comments
Loading...
Problem Recent Solvers518
Suggested Problems
-
Replace NaNs with the number that appears to its left in the row.
3064 Solvers
-
Remove the two elements next to NaN value
703 Solvers
-
Circular Primes (based on Project Euler, problem 35)
651 Solvers
-
18083 Solvers
-
1214 Solvers
More from this Author17
Problem Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
My opinion is that the answers for this problem are wrong. The problem is asking for counting zeros between values 1. So for example for Input = [0 1 0 0 0 1 0 1 1 1 0 0 0 1 0 1 1 0 0] the correct Output is [3 1 0 0 3 1 0] and not [1 3 1 0 0 3 1 0 2]. Reasoning that there is no 1 at the beginning and at the end of the vector and so the beginning and end zeros should not be counted.
How about adding a test case in which vector x starts with a 1, such as x = [1 0 0 1 0] ? (Several of the submitted/approved solutions would give the answer as y = [0 2 1] instead of y = [2 1] . )
The starting or the trailing zeros in the array shouldn't be counted.
I think your first test case is wrong: when x = [1], then there are no pairs of consecutive ones, and the proper answer is y = [] rather than y = [0]. In contrast, y = [0] is correct when x = [1 1], where there are two ones that have no zeros in between.
I think you should revise your test cases.
The question is to find the number of zeroes between consecutive ones. Leading and trailing zeroes in x should not count.
E.g.
x=[1] -> y=[]
x=[0] -> y=[]
x=[0 1] -> y=[]
x =[1 0] -> y=[]
x = [0 1 0] -> y=[]
but
x = [1 1] -> y=[0]
x = [1 1 1] -> y=[0 0]
x = [1 0 1] -> y=[1]
etc.