Ik heb 4 arrays met duizenden elementen van strings.
Nu wil ik van die 4 arrays een nieuwe lijst maken, maar alleen een lijst met intersectie tussen de 4 arrays.
Nu heb ik op de Perl FAQ gevonden hoe je dit kunt doen met 2 arrays.
Een probleem is echter dat het voor mij een voorwaarde is dat de volgorde van de arrays bewaard blijft. Met een hash verdwijnt de ordening van de 4 arrays, wat een probleem is omdat ik een ranked list van elementen heb. Ik heb gezocht op Tweakers en Google, maar heb geen manier gevonden om dit te kunnen doen.
Nu wil ik van die 4 arrays een nieuwe lijst maken, maar alleen een lijst met intersectie tussen de 4 arrays.
Nu heb ik op de Perl FAQ gevonden hoe je dit kunt doen met 2 arrays.
code:
1
2
3
4
5
6
7
| @union = @intersection = @difference = ();
%count = ();
foreach $element (@array1, @array2) { $count{$element}++ }
foreach $element (keys %count) {
push @union, $element;
push @{ $count{$element} > 1 ? \@intersection : \@difference }, $element;
} |
Een probleem is echter dat het voor mij een voorwaarde is dat de volgorde van de arrays bewaard blijft. Met een hash verdwijnt de ordening van de 4 arrays, wat een probleem is omdat ik een ranked list van elementen heb. Ik heb gezocht op Tweakers en Google, maar heb geen manier gevonden om dit te kunnen doen.