Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,5 @@
|
|||
>> [setdiff([1 2 3],[2 3 4]) setdiff([2 3 4],[1 2 3])]
|
||||
|
||||
ans =
|
||||
|
||||
1 4
|
||||
91
Task/Symmetric-difference/MATLAB/symmetric-difference-2.m
Normal file
91
Task/Symmetric-difference/MATLAB/symmetric-difference-2.m
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
function resultantSet = symmetricDifference(set1,set2)
|
||||
|
||||
assert( ~xor(iscell(set1),iscell(set2)), 'Both sets must be of the same type, either cells or matricies, but not a combination of the two' );
|
||||
%% Helper function definitions
|
||||
|
||||
%Define what set equality means for cell arrays
|
||||
function trueFalse = equality(set1,set2)
|
||||
if xor(iscell(set1),iscell(set2)) %set1 or set2 is a set and the other isn't
|
||||
trueFalse = false;
|
||||
return
|
||||
elseif ~(iscell(set1) || iscell(set2)) %set1 and set2 are not sets
|
||||
if ischar(set1) && ischar(set2) %set1 and set2 are chars or strings
|
||||
trueFalse = strcmp(set1,set2);
|
||||
elseif xor(ischar(set1),ischar(set2)) %set1 or set2 is a string but the other isn't
|
||||
trueFalse = false;
|
||||
else %set1 and set2 are not strings
|
||||
if numel(set1) == numel(set2) %Since they must be matricies if the are of equal cardinality then they can be compaired
|
||||
trueFalse = all((set1 == set2));
|
||||
else %If they aren't of equal cardinality then they can't be equal
|
||||
trueFalse = false;
|
||||
end
|
||||
end
|
||||
return
|
||||
else %set1 and set2 are both sets
|
||||
|
||||
for x = (1:numel(set1))
|
||||
trueFalse = false;
|
||||
for y = (1:numel(set2))
|
||||
|
||||
%Compair the current element of set1 with every element
|
||||
%in set2
|
||||
trueFalse = equality(set1{x},set2{y});
|
||||
|
||||
%If the element of set1 is equal to the current element
|
||||
%of set2 remove that element from set2 and break out of
|
||||
%this inner loop
|
||||
if trueFalse
|
||||
set2(y) = [];
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
%If the loop completes without breaking then the current
|
||||
%element of set1 is not contained in set2 therefore the two
|
||||
%sets are not equal and we can return an equality of false
|
||||
if (~trueFalse)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
%If, after checking every element in both sets, there are still
|
||||
%elements in set2 then the two sets are not equivalent
|
||||
if ~isempty(set2)
|
||||
trueFalse = false;
|
||||
end
|
||||
%If the executation makes it here without the previous if
|
||||
%statement evaluating to true, then this function will return
|
||||
%true.
|
||||
end
|
||||
end %equality
|
||||
|
||||
%Define the relative complement for cell arrays
|
||||
function set1 = relativeComplement(set1,set2)
|
||||
|
||||
for k = (1:numel(set2))
|
||||
|
||||
if numel(set1) == 0
|
||||
return
|
||||
end
|
||||
|
||||
j = 1;
|
||||
while j <= numel(set1)
|
||||
if equality(set1{j},set2{k})
|
||||
set1(j) = [];
|
||||
j = j-1;
|
||||
end
|
||||
j = j+1;
|
||||
end
|
||||
end
|
||||
end %relativeComplement
|
||||
|
||||
%% The Symmetric Difference Algorithm
|
||||
if iscell(set1) && iscell(set2)
|
||||
resultantSet = [relativeComplement(set1,set2) relativeComplement(set2,set1)];
|
||||
else
|
||||
resultantSet = [setdiff(set1,set2) setdiff(set2,set1)];
|
||||
end
|
||||
|
||||
resultantSet = unique(resultantSet); %Make sure there are not duplicates
|
||||
|
||||
end %symmetricDifference
|
||||
23
Task/Symmetric-difference/MATLAB/symmetric-difference-3.m
Normal file
23
Task/Symmetric-difference/MATLAB/symmetric-difference-3.m
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
>> A = {'John','Bob','Mary','Serena'}
|
||||
|
||||
A =
|
||||
|
||||
'John' 'Bob' 'Mary' 'Serena'
|
||||
|
||||
>> B = {'Jim','Mary','John','Bob'}
|
||||
|
||||
B =
|
||||
|
||||
'Jim' 'Mary' 'John' 'Bob'
|
||||
|
||||
>> symmetricDifference(A,B)
|
||||
|
||||
ans =
|
||||
|
||||
'Serena' 'Jim' %Correct
|
||||
|
||||
>> symmetricDifference([1 2 3],[2 3 4])
|
||||
|
||||
ans =
|
||||
|
||||
1 4 %Correct
|
||||
Loading…
Add table
Add a link
Reference in a new issue