RosettaCodeData/Task/Symmetric-difference/UNIX-Shell/symmetric-difference.sh

44 lines
830 B
Bash

uniq() {
u=("$@")
for ((i=0;i<${#u[@]};i++)); do
for ((j=i+1;j<=${#u[@]};j++)); do
[ "${u[$i]}" = "${u[$j]}" ] && unset u[$i]
done
done
u=("${u[@]}")
}
a=(John Serena Bob Mary Serena)
b=(Jim Mary John Jim Bob)
uniq "${a[@]}"
au=("${u[@]}")
uniq "${b[@]}"
bu=("${u[@]}")
ab=("${au[@]}")
for ((i=0;i<=${#au[@]};i++)); do
for ((j=0;j<=${#bu[@]};j++)); do
[ "${ab[$i]}" = "${bu[$j]}" ] && unset ab[$i]
done
done
ab=("${ab[@]}")
ba=("${bu[@]}")
for ((i=0;i<=${#bu[@]};i++)); do
for ((j=0;j<=${#au[@]};j++)); do
[ "${ba[$i]}" = "${au[$j]}" ] && unset ba[$i]
done
done
ba=("${ba[@]}")
sd=("${ab[@]}" "${ba[@]}")
echo "Set A = ${a[@]}"
echo " = ${au[@]}"
echo "Set B = ${b[@]}"
echo " = ${bu[@]}"
echo "A - B = ${ab[@]}"
echo "B - A = ${ba[@]}"
echo "Symmetric difference = ${sd[@]}"