Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Excluded Digits from vector

Asked by Harish Maradana on 22 Aug 2014
Latest activity Commented on by Guillaume on 22 Aug 2014

vector=[1 2 5 13 55 23 15],excluded dig=5 then out=[1 2 13 23] ,another example vector=[3 24 7 9 18 55 67 71],excluded dig=7 then out=[3 24 9 18 55]

1 Comment

the cyclist on 22 Aug 2014

I posted this as a Cody problem . As you may know, Cody rewards brevity of code over all other things.

Harish Maradana

Products

No products are associated with this question.

3 Answers

Answer by the cyclist on 22 Aug 2014
Accepted answer

I expect there is a much cleaner method, but here is one that works:

vector = [1 2 5 13 55 23 15];
exDigit = 5;
v = vector;
hasDigit = false(1,numel(v));
while max(v>=1)
    hasDigit = hasDigit | mod(v,10)==exDigit;
    v = floor(v/10);
end
new_vector = vector(not(hasDigit))

0 Comments

the cyclist
Answer by Guillaume on 22 Aug 2014
str2num(regexprep(num2str(vector), sprintf('\\<\\d*%d\\d*\\>', digit), ''))

Is a neat one liner but may not be faster than the cyclist answer due to the conversion to/from string and the use of regular expression.

4 Comments

Guillaume on 22 Aug 2014

Another potential method, faster than regexp but still slower than the cyclist's:

vector(arrayfun(@(n) all(num2str(n)-'0' ~= digit), vector))
the cyclist on 22 Aug 2014

I stole this solution and posted it to Cody. As I write this, it is the leader.

Guillaume on 22 Aug 2014

What? No fair! I should so rightly be the leader! ;)

Ha! Beaten with a variant on my regexp one-line :)

Guillaume
Answer by the cyclist on 22 Aug 2014

Here is a solution that came out of Cody. The inputs to the function are the vector v and the excluded digit d.

function ans = digitRemove(v,d)
I = [];
for i = 1 : length(v)
    if ~any(ismember( num2str(v(i)) - '0' , d))
        I = [I i];
    end
end
v(I);
end

0 Comments

the cyclist

Contact us