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 comentario

the cyclist
the cyclist el 22 de Ag. de 2014
Editada: the cyclist el 22 de Ag. de 2014
I posted this as a Cody problem . As you may know, Cody rewards brevity of code over all other things.

Iniciar sesión para comentar.

 Respuesta aceptada

the cyclist
the cyclist el 22 de Ag. de 2014

0 votos

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))

Más respuestas (2)

Guillaume
Guillaume el 22 de Ag. de 2014

0 votos

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 comentarios

Pierre Benoit
Pierre Benoit el 22 de Ag. de 2014
Editada: Pierre Benoit el 22 de Ag. de 2014
Yeah, I used a similar method and found that his method was around 330 times faster.
Guillaume
Guillaume el 22 de Ag. de 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
the cyclist el 22 de Ag. de 2014
I stole this solution and posted it to Cody. As I write this, it is the leader.
Guillaume
Guillaume el 22 de Ag. de 2014
What? No fair! I should so rightly be the leader! ;)
Ha! Beaten with a variant on my regexp one-line :)

Iniciar sesión para comentar.

the cyclist
the cyclist el 22 de Ag. de 2014

0 votos

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

Etiquetas

Preguntada:

el 22 de Ag. de 2014

Comentada:

el 22 de Ag. de 2014

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by