Excluded Digits from vector
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Harish Maradana
le 22 Août 2014
Commenté : Guillaume
le 22 Août 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 commentaire
the cyclist
le 22 Août 2014
Modifié(e) : the cyclist
le 22 Août 2014
I posted this as a Cody problem . As you may know, Cody rewards brevity of code over all other things.
Réponse acceptée
the cyclist
le 22 Août 2014
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 commentaires
Plus de réponses (2)
Guillaume
le 22 Août 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 commentaires
the cyclist
le 22 Août 2014
I stole this solution and posted it to Cody. As I write this, it is the leader.
Guillaume
le 22 Août 2014
What? No fair! I should so rightly be the leader! ;)
Ha! Beaten with a variant on my regexp one-line :)
the cyclist
le 22 Août 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 commentaires
Voir également
Catégories
En savoir plus sur Performance Profiling dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!