Common list elements: Difference between revisions

Added XPL0 example.
(Added XPL0 example.)
Line 954:
Intersection of [[2, 2, 1, 3, 8, 9, 4, 6], [3, 5, 6, 2, 2, 2, 4], [2, 3, 7, 6, 2]] is:
[2, 3, 6, 2]
</pre>
 
=={{header|XPL0}}==
A 32-bit integer is used to specify a set of values 0..31.
The [-1] terminator helps determine the number of lists.
<lang XPL0>int IntSize, Nums, Sets, Ans, N, ListSize, Set, I;
[IntSize:= @Nums - @IntSize; \number of bytes in an integer
Nums:= [[2,5,1,3,8,9,4,6], [3,5,6,2,9,8,4], [1,3,7,6,9], [-1]];
Sets:= 0; \find the number of lists = number of Sets
while Nums(Sets, 0) > 0 do Sets:= Sets+1;
Ans:= -1;
for N:= 0 to Sets-1 do
[ListSize:= (Nums(N+1) - Nums(N)) / IntSize;
Set:= 0;
for I:= 0 to ListSize-1 do \Set = union (or) of list elements
Set:= Set or 1<<Nums(N, I);
Ans:= Ans & Set; \Answer is intersection (&) of Sets
];
I:= 0;
while Ans do \show common list elements
[if Ans & 1 then
[IntOut(0, I); ChOut(0, ^ )];
Ans:= Ans>>1;
I:= I+1;
];
]</lang>
 
{{out}}
<pre>
3 6 9
</pre>
295

edits