Common list elements: Difference between revisions

added RPL
(adding lambdatalk)
(added RPL)
 
(17 intermediate revisions by 10 users not shown)
Line 13:
 
=={{header|11l}}==
<langsyntaxhighlight lang="11l">F cle(nums)
V r = Set(nums[0])
L(num) nums[1..]
Line 19:
R r
 
print(cle([[2, 5, 1, 3, 8, 9, 4, 6], [3, 5, 6, 2, 9, 8, 4], [1, 3, 7, 6, 9]]))</langsyntaxhighlight>
 
{{out}}
Line 28:
=={{header|Action!}}==
{{libheader|Action! Tool Kit}}
<langsyntaxhighlight Actionlang="action!">INCLUDE "D2:SORT.ACT" ;from the Action! Tool Kit
 
DEFINE PTR="CARD"
Line 135:
arrays(2)=a7
Test(arrays,lengths,3)
RETURN</langsyntaxhighlight>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Common_list_elements.png Screenshot from Atari 8-bit computer]
Line 162:
 
=={{header|Ada}}==
<langsyntaxhighlight Adalang="ada">with Ada.Text_Io;
with Ada.Containers.Vectors;
 
Line 202:
R := Common_Elements (R, C);
Put (R);
end Common;</langsyntaxhighlight>
{{out}}
<pre>[ 3 9 6 ]</pre>
 
=={{header|ALGOL 68}}==
<syntaxhighlight lang="algol68">
BEGIN # find common elements of lists #
 
PRIO COMMON = 1;
# returns the common elements of a and b #
OP COMMON = ( []INT a, b )[]INT:
IF INT a len = ( UPB a - LWB a ) + 1;
INT b len = ( UPB b - LWB b ) + 1;
a len < 1 OR b len < 1
THEN # one or both lists is/are empty #
[]INT()
ELIF a len < b len
THEN # both lists are non-empty, b is shorter #
b COMMON a
ELSE # both lists are non-empty, a is at most as long as b #
[ 1 : b len ]INT result;
[ LWB a : UPB a ]BOOL used;
FOR i FROM LWB a TO UPB a DO used[ i ] := FALSE OD;
INT r pos := 0;
FOR b pos FROM LWB b TO UPB b DO
BOOL found := FALSE;
FOR a pos FROM LWB a TO UPB a WHILE NOT found DO
IF NOT used[ a pos ] THEN
IF ( found := a[ a pos ] = b[ b pos ] ) THEN
result[ r pos +:= 1 ] := b[ b pos ];
used[ a pos ] := TRUE
FI
FI
OD
OD;
result[ : r pos ]
FI # COMMON # ;
# returns the common elements in the lists in nums #
OP COMMON = ( [][]INT nums )[]INT:
IF 1 UPB nums < 1 LWB nums THEN # no lists #
[]INT()
ELIF 1 UPB nums = 1 LWB nums THEN # only one list #
nums[ LWB nums ]
ELSE # two or more lists #
FLEX[ 1 : 0 ]INT result;
result := nums[ LWB nums ] COMMON nums[ LWB nums + 1 ];
FOR i FROM LWB nums + 2 TO UPB nums DO
result := result COMMON nums[ i ]
OD;
result
FI # COMMON # ;
 
print( ( COMMON [][]INT( ( 2, 5, 1, 3, 8, 9, 4, 6 )
, ( 3, 5, 6, 2, 9, 8, 4 )
, ( 1, 3, 7, 6, 9 )
)
)
)
END
</syntaxhighlight>
{{out}}
<pre>
+3 +6 +9
</pre>
 
=={{header|APL}}==
APL has the built-in intersection function <code>∩</code>
 
<langsyntaxhighlight APLlang="apl"> ∩/ (2 5 1 3 8 9 4 6) (3 5 6 2 9 8 4) (1 3 7 9 6)
3 9 6 </langsyntaxhighlight>
 
=={{header|AppleScript}}==
===AppleScriptObjC===
<langsyntaxhighlight lang="applescript">use AppleScript version "2.4" -- OS X 10.10 (Yosemite) or later
use framework "Foundation"
use sorter : script "Insertion Sort" -- <https://www.rosettacode.org/wiki/Sorting_algorithms/Insertion_sort#AppleScript>
Line 229 ⟶ 290:
set commonElements to commonListElements({{2, 5, 1, 3, 8, 9, 4, 6}, {3, 5, 6, 2, 9, 8, 4}, {1, 3, 7, 6, 9}})
tell sorter to sort(commonElements, 1, -1)
return commonElements</langsyntaxhighlight>
 
{{output}}
<syntaxhighlight lang ="applescript">{3, 6, 9}</langsyntaxhighlight>
 
===Core language only===
The requirement for AppleScript 2.3.1 is only for the 'use' command which loads the "Insertion Sort" script. If the sort's instead loaded with the older 'load script' command or copied into the code, this will work on systems as far back as Mac OS X 10.5 (Leopard) or earlier. Same output as above.
<langsyntaxhighlight lang="applescript">use AppleScript version "2.3.1" -- Mac OS X 10.9 (Mavericks) or later.
use sorter : script "Insertion Sort" -- <https://www.rosettacode.org/wiki/Sorting_algorithms/Insertion_sort#AppleScript>
 
Line 262 ⟶ 323:
set commonElements to commonListElements({{2, 5, 1, 3, 8, 9, 4, 6}, {3, 5, 6, 2, 9, 8, 4}, {1, 3, 7, 6, 9}})
tell sorter to sort(commonElements, 1, -1)
return commonElements</langsyntaxhighlight>
 
=={{header|Arturo}}==
 
<langsyntaxhighlight lang="rebol">commonElements: function [subsets][
if zero? size subsets -> return []
if 1 = size subsets -> return first subsets
Line 282 ⟶ 343:
[3 5 6 2 9 8 4]
[1 3 7 6 9]
]</langsyntaxhighlight>
 
{{out}}
Line 289 ⟶ 350:
 
=={{header|AutoHotkey}}==
<langsyntaxhighlight AutoHotkeylang="autohotkey">Common_list_elements(nums){
counter := [], output := []
for i, num in nums
Line 297 ⟶ 358:
return output
}
</syntaxhighlight>
</lang>
Examples:<langsyntaxhighlight AutoHotkeylang="autohotkey">nums := [[2,5,1,3,8,9,4,6], [3,5,6,2,9,8,4], [1,3,7,6,9]]
output := Common_list_elements(nums)
return</langsyntaxhighlight>
{{out}}
<pre>[3, 6, 9]</pre>
 
=={{header|AWK}}==
<syntaxhighlight lang="awk">
<lang AWK>
# syntax: GAWK -f COMMON_LIST_ELEMENTS.AWK
BEGIN {
Line 327 ⟶ 388:
exit(0)
}
</syntaxhighlight>
</lang>
{{out}}
<pre>
[2,5,1,3,8,9,4,6],[3,5,6,2,9,8,4],[1,3,7,6,9] : 3 6 9
</pre>
 
=={{header|BQN}}==
<syntaxhighlight lang="bqn">(∊/⊣)´ ⟨2,5,1,3,8,9,4,6⟩‿⟨3,5,6,2,9,8,4⟩‿⟨1,3,7,6,9⟩</syntaxhighlight>
{{out}}
<pre>⟨ 3 9 6 ⟩</pre>
 
=={{header|CLU}}==
<langsyntaxhighlight lang="clu">contains = proc [T: type] (a: array[T], v: T) returns (bool)
where T has equal: proctype (T,T) returns (bool)
for i: T in array[T]$elements(a) do
Line 374 ⟶ 441:
stream$puts(po, int$unparse(i) || " ")
end
end start_up</langsyntaxhighlight>
{{out}}
<pre>3 6 9</pre>
Line 386 ⟶ 453:
 
{{Works with|Office 365 Betas 2021}}
<langsyntaxhighlight lang="lisp">INTERSECT
=LAMBDA(xs,
LAMBDA(ys,
Line 410 ⟶ 477:
xs
)
)</langsyntaxhighlight>
 
and also assuming the following generic bindings in Name Manager:
<langsyntaxhighlight lang="lisp">ELEM
=LAMBDA(x,
LAMBDA(xs,
Line 453 ⟶ 520:
)
)
)</langsyntaxhighlight>
 
{{Out}}
Line 541 ⟶ 608:
|
|}
 
=={{header|Delphi}}==
{{works with|Delphi|6.0}}
{{libheader|SysUtils,StdCtrls}}
 
 
<syntaxhighlight lang="Delphi">
const Set1: set of byte = [2,5,1,3,8,9,4,6];
const Set2: set of byte = [3,5,6,2,9,8,4];
const Set3: set of byte = [1,3,7,6,9];
 
 
procedure CommonListElements(Memo: TMemo);
{Using Delphi "sets" to find common elements}
var I,Start,Stop: integer;
var Common: set of byte;
var S: string;
begin
{Uses "*" intersection set operator to}
{ find items common to all three sets}
Common:=Set1 * Set2 * Set3;
Memo.Lines.Add('Common Elements in');
Memo.Lines.Add(' [2,5,1,3,8,9,4,6]');
Memo.Lines.Add(' [3,5,6,2,9,8,4]');
Memo.Lines.Add(' [1,3,7,6,9]: ');
S:='';
{Display the common items}
for I:=0 to 9 do
if I in Common then S:=S+IntToStr(I)+',';
Memo.Lines.Add(S);
end;
 
</syntaxhighlight>
{{out}}
<pre>
Common Elements in
[2,5,1,3,8,9,4,6]
[3,5,6,2,9,8,4]
[1,3,7,6,9]:
3,6,9,
Elapsed Time: 5.260 ms.
</pre>
 
 
=={{header|EasyLang}}==
<syntaxhighlight>
nums[][] = [ [ 2 5 1 3 8 9 4 6 ] [ 3 5 6 2 9 8 4 ] [ 1 3 7 6 9 ] ]
#
found = 1
for e in nums[1][]
for l = 2 to len nums[][]
found = 0
for x in nums[l][]
if e = x
found = 1
break 1
.
.
if found = 0
break 1
.
.
if found = 1
r[] &= e
.
.
print r[]
</syntaxhighlight>
 
=={{header|F_Sharp|F#}}==
Of course it is possible to use sets but I thought the idea was not to?
<langsyntaxhighlight lang="fsharp">
// Common list elements. Nigel Galloway: February 25th., 2021
let nums=[|[2;5;1;3;8;9;4;6];[3;5;6;2;9;8;4];[1;3;7;6;9]|]
printfn "%A" (nums|>Array.reduce(fun n g->n@g)|>List.distinct|>List.filter(fun n->nums|>Array.forall(fun g->List.contains n g)));;
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 557 ⟶ 692:
Note: in older versions of Factor, <code>intersect-all</code> was called <code>intersection</code>.
{{works with|Factor|0.99 2021-02-05}}
<langsyntaxhighlight lang="factor">USING: prettyprint sets ;
 
{ { 2 5 1 3 8 9 4 6 } { 3 5 6 2 9 8 4 } { 1 3 7 6 9 } } intersect-all .</langsyntaxhighlight>
{{out}}
<pre>
Line 566 ⟶ 701:
 
=={{header|FreeBASIC}}==
<langsyntaxhighlight lang="freebasic">dim as integer nums(1 to 3, 1 to 8) = {{2,5,1,3,8,9,4,6}, {3,5,6,2,9,8,4}, {1,3,7,6,9} }
redim as integer outp(0)
dim as integer i, j
Line 591 ⟶ 726:
for i = 1 to ubound(outp)
print outp(i);" ";
next i</langsyntaxhighlight>
{{out}}<pre>3 9 6</pre>
 
=={{header|Go}}==
{{trans|Wren}}
<langsyntaxhighlight lang="go">package main
 
import "fmt"
Line 657 ⟶ 792:
fmt.Println()
}
}</langsyntaxhighlight>
 
{{out}}
Line 669 ⟶ 804:
 
=={{header|Haskell}}==
<langsyntaxhighlight Haskelllang="haskell">import qualified Data.Set as Set
 
task :: Ord a => [[a]] -> [a]
Line 675 ⟶ 810:
task xs = Set.toAscList . foldl1 Set.intersection . map Set.fromList $ xs
 
main = print $ task [[2,5,1,3,8,9,4,6], [3,5,6,2,9,8,4], [1,3,7,6,9]]</langsyntaxhighlight>
{{out}}
<pre>[3,6,9]</pre>
 
=={{header|J}}==
 
<syntaxhighlight lang="j"> 2 5 1 3 8 9 4 6([-.-.)3 5 6 2 9 8 4([-.-.)1 3 7 6 9
3 9 6</syntaxhighlight>
 
Or,
 
<syntaxhighlight lang="j"> ;([-.-.)&.>/2 5 1 3 8 9 4 6;3 5 6 2 9 8 4;1 3 7 6 9
3 9 6</syntaxhighlight>
 
=={{header|jq}}==
Line 686 ⟶ 831:
on the arrays whose intersection is sought. The helper function, `ios`,
might be independently useful and so is defined as a top-level filter.
<langsyntaxhighlight lang="jq"># If a and b are sorted lists, and if all the elements respectively of a and b are distinct,
# then [a,b] | ios will emit the stream of elements in the set-intersection of a and b.
def ios:
Line 706 ⟶ 851:
elif any(.[]; length == 0) then []
else sort_by(length) | go
end;</langsyntaxhighlight>
<langsyntaxhighlight lang="jq"># The task:
[[2,5,1,3,8,9,4,6], [3,5,6,2,9,8,4], [1,3,7,6,9]]</langsyntaxhighlight>
{{out}}
<pre>
[3,6,9]
</pre>
 
=={{header|K}}==
{{works with|ngn/k}}<syntaxhighlight lang=K>{x^x^y}/(2 5 1 3 8 9 4 6;1 3 7 6 9;3 5 6 2 9 8 4)
3 9 6</syntaxhighlight>
 
=={{header|Ksh}}==
<langsyntaxhighlight lang="ksh">
#!/bin/ksh
 
Line 758 ⟶ 907:
done
 
print "( ${output[@]} )"</langsyntaxhighlight>
{{out}}
<pre>( 3 9 6 )</pre>
 
=={{header|Julia}}==
<langsyntaxhighlight lang="julia">
julia> intersect([2,5,1,3,8,9,4,6], [3,5,6,2,9,8,4], [1,3,7,6,9])
3-element Array{Int64,1}:
Line 769 ⟶ 918:
9
6
</syntaxhighlight>
</lang>
 
=={{header|Lambdatalk}}==
<syntaxhighlight lang="scheme">
<lang Scheme>
{def intersection
Line 795 ⟶ 944:
}
-> [3,6,9]
</syntaxhighlight>
</lang>
 
=={{header|Mathematica}}/{{header|Wolfram Language}}==
<langsyntaxhighlight Mathematicalang="mathematica">Intersection[{2, 5, 1, 3, 8, 9, 4, 6}, {3, 5, 6, 2, 9, 8, 4}, {1, 3, 7, 6, 9}]</langsyntaxhighlight>
{{out}}
<pre>{3, 6, 9}</pre>
 
=={{header|Maxima}}==
<syntaxhighlight lang="maxima">
common_elems(lst):=block(map(setify,lst),apply(intersection,%%),listify(%%))$
nums:[[2,5,1,3,8,9,4,6],[3,5,6,2,9,8,4],[1,3,7,6,9]]$
common_elems(nums);
</syntaxhighlight>
{{out}}
<pre>
[3,6,9]
</pre>
 
=={{header|Nim}}==
<langsyntaxhighlight Nimlang="nim">import algorithm, sequtils
 
proc commonElements(list: openArray[seq[int]]): seq[int] =
Line 814 ⟶ 974:
result.add val
 
echo commonElements([@[2,5,1,3,8,9,4,6], @[3,5,6,2,9,8,4], @[1,3,7,6,9]])</langsyntaxhighlight>
 
{{out}}
Line 820 ⟶ 980:
 
=={{header|Perl}}==
<langsyntaxhighlight lang="perl">@nums = ([2,5,1,3,8,9,4,6], [3,5,6,2,9,8,4], [1,3,7,6,9]);
map { print "$_ " if @nums == ++$c{$_} } @$_ for @nums;</langsyntaxhighlight>
{{out}}
<pre>3 6 9</pre>
 
=={{header|Phix}}==
<!--<langsyntaxhighlight Phixlang="phix">(phixonline)-->
<span style="color: #008080;">function</span> <span style="color: #000000;">intersection</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">)</span>
<span style="color: #004080;">sequence</span> <span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{}</span>
Line 846 ⟶ 1,006:
<span style="color: #0000FF;">?</span><span style="color: #000000;">intersection</span><span style="color: #0000FF;">({{</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">5</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">8</span><span style="color: #0000FF;">,</span><span style="color: #000000;">9</span><span style="color: #0000FF;">,</span><span style="color: #000000;">4</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">},{</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">5</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">9</span><span style="color: #0000FF;">,</span><span style="color: #000000;">8</span><span style="color: #0000FF;">,</span><span style="color: #000000;">4</span><span style="color: #0000FF;">},{</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">7</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">,</span><span style="color: #000000;">9</span><span style="color: #0000FF;">}})</span>
<span style="color: #0000FF;">?</span><span style="color: #000000;">intersection</span><span style="color: #0000FF;">({{</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">8</span><span style="color: #0000FF;">,</span><span style="color: #000000;">9</span><span style="color: #0000FF;">,</span><span style="color: #000000;">4</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">},{</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">5</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">4</span><span style="color: #0000FF;">},{</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">7</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">}})</span>
<!--</langsyntaxhighlight>-->
Note that a (slightly more flexible) intersection() function is also defined in sets.e, so you could just include that instead, and use it the same way.
{{out}}
Line 857 ⟶ 1,017:
 
===Without Duplicates===
<langsyntaxhighlight lang="python">"""Find distinct common list elements using set.intersection."""
 
def common_list_elements(*lists):
Line 872 ⟶ 1,032:
result = common_list_elements(*case)
print(f"Intersection of {case} is {result}")
</syntaxhighlight>
</lang>
 
{{out}}
Line 881 ⟶ 1,041:
 
===With Duplicates===
<langsyntaxhighlight lang="python">"""Find common list elements using collections.Counter (multiset)."""
 
from collections import Counter
Line 903 ⟶ 1,063:
result = common_list_elements(*case)
print(f"Intersection of {case} is {result}")
</syntaxhighlight>
</lang>
 
{{out}}
Line 913 ⟶ 1,073:
=={{header|Quackery}}==
 
<langsyntaxhighlight Quackerylang="quackery"> [ behead sort swap witheach
[ sort [] temp put
[ over [] !=
Line 927 ⟶ 1,087:
2drop temp take ] ] is common ( [ [ --> [ )
 
' [ [ 2 5 1 3 8 9 4 6 ] [ 3 5 6 2 9 8 4 ] [ 1 3 7 6 9 ] ] common echo</langsyntaxhighlight>
 
{{out}}
Line 934 ⟶ 1,094:
 
=={{header|Raku}}==
<syntaxhighlight lang="raku" perl6line>put [∩] [2,5,1,3,8,9,4,6], [3,5,6,2,9,8,4], [1,3,7,6,9,3];</langsyntaxhighlight>
{{out}}
<pre>6 9 3</pre>
Line 940 ⟶ 1,100:
=={{header|REXX}}==
This REXX version properly handles the case of duplicate entries in a list &nbsp; (which shouldn't happen in a true list).
<langsyntaxhighlight lang="rexx">/*REXX program finds and displays the common list elements from a collection of sets. */
parse arg a /*obtain optional arguments from the CL*/
if a='' | a="," then a= '[2,5,1,3,8,9,4,6] [3,5,6,2,9,8,4] [1,3,7,6,9]' /*defaults.*/
Line 957 ⟶ 1,117:
end /*k*/
/*stick a fork in it, we're all done. */
say 'the list of common elements in all sets: ' "["translate(space($), ',', " ")']'</langsyntaxhighlight>
{{out|output|text=&nbsp; when using the default inputs:}}
<pre>
Line 964 ⟶ 1,124:
 
=={{header|Ring}}==
<langsyntaxhighlight lang="ring">
nums = [[2,5,1,3,8,9,4,6],[3,5,6,2,9,8,4],[1,3,7,6,9]]
sumNums = []
Line 1,017 ⟶ 1,177:
txt = txt + "]"
see txt
</syntaxhighlight>
</lang>
{{out}}
<pre>
common list elements are: [3,6,9]
</pre>
 
=={{header|RPL}}==
Can handle duplicates.
{{works with|HP|48}}
« SWAP LIST→ → n
« 'n' DECR DUP 3 + ROLL - 2 +
ROLL DROP n →LIST
» » '<span style="color:blue">POPL</span>' STO <span style="color:grey">@ ''( {list} idx_item_to_remove → {list} )''</span>
« '''IF''' OVER SIZE OVER SIZE < '''THEN''' SWAP '''END'''
0 → a j
« { } SWAP
'''WHILE''' 'j' INCR a SIZE ≤ '''REPEAT'''
a j GET
'''IF''' DUP2 POS '''THEN'''
LASTARG ROT SWAP <span style="color:blue">POPL</span>
ROT ROT + SWAP
'''ELSE''' DROP '''END'''
'''END''' DROP
» » '<span style="color:blue">INTER</span>' STO
 
{ 2 5 1 3 8 9 4 6 } { 3 5 6 2 9 8 4 } { 1 3 7 6 9 } <span style="color:blue">INTER</span> <span style="color:blue">INTER</span>
{ 2 2 1 3 8 9 4 6 } { 3 5 6 2 2 2 4 } { 2 3 7 6 2 } <span style="color:blue">INTER</span> <span style="color:blue">INTER</span>
{{out}}
<pre>
2: { 3 6 9 }
1: { 3 6 2 2 }
</pre>
 
=={{header|Ruby}}==
<langsyntaxhighlight lang="ruby">nums = [2,5,1,3,8,9,4,6], [3,5,6,2,9,8,4], [1,3,7,6,9]
p nums.inject(&:intersection) # or nums.inject(:&)
</syntaxhighlight>
</lang>
{{out}}
<pre>[3, 9, 6]
</pre>
 
=={{header|V (Vlang)}}==
{{trans|go}}
<syntaxhighlight lang="v (vlang)">fn index_of(l []int, n int) int {
for i in 0..l.len {
if l[i] == n {
Line 1,089 ⟶ 1,277:
println('')
}
}</langsyntaxhighlight>
{{out}}
<pre>Intersection of [[2, 5, 1, 3, 8, 9, 4, 6] [3, 5, 6, 2, 9, 8, 4] [1, 3, 7, 6, 9]] is:
Line 1,096 ⟶ 1,284:
Intersection of [[2 2 1 3 8 9 4 6] [3 5 6 2 2 2 4] [2, 3, 7, 6, 2]] is:
[3, 6, 2, 2]</pre>
 
'''Alternative:'''
<syntaxhighlight lang="vlang">fn main()
{
lls := [
[[2, 5, 1, 3, 8, 9, 4, 6], [3, 5, 6, 2, 9, 8, 4], [1, 3, 7, 6, 9]],
[[2, 2, 1, 3, 8, 9, 4, 6], [3, 5, 6, 2, 2, 2, 4], [2, 3, 7, 6, 2]],
]
for ll in lls {
println("Intersection of $ll is:")
println(common_list_elements(ll))
println('')
}
 
}
 
fn common_list_elements(md_arr [][]int) []int {
mut counter := map[int]int{}
mut output := []int{}
 
for sd_arr in md_arr {
for value in sd_arr {
if counter[value] == counter[value] {counter[value] = counter[value] + 1} else { 1 } {
if counter[value] >= md_arr.len && output.any(it == value) == false {
output << value
}
}
}
}
return output
}</syntaxhighlight>
{{out}}
<pre>Intersection of [[2, 5, 1, 3, 8, 9, 4, 6] [3, 5, 6, 2, 9, 8, 4] [1, 3, 7, 6, 9]] is:
[3, 6, 9]
 
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]</pre>
 
=={{header|Wren}}==
{{libheader|Wren-seq}}
As we're dealing here with lists rather than sets, some guidance is needed on how to deal with duplicates in each list in the general case. A drastic solution would be to remove all duplicates from the result. Instead, the following matches duplicates - so if List A contains 2 'a's and List B contains 3 'a's, there would be 2 'a's in the result.
<langsyntaxhighlight ecmascriptlang="wren">import "./seq" for Lst
 
var common2 = Fn.new { |l1, l2|
Line 1,138 ⟶ 1,363:
System.print(commonN.call(ll))
System.print()
}</langsyntaxhighlight>
 
{{out}}
Line 1,147 ⟶ 1,372:
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>
<br>
Since the above was written, we can also now offer a library based solution.
<syntaxhighlight lang="wren">import "./seq" for Lst
 
var lls = [
[[2, 5, 1, 3, 8, 9, 4, 6], [3, 5, 6, 2, 9, 8, 4], [1, 3, 7, 6, 9]],
[[2, 2, 1, 3, 8, 9, 4, 6], [3, 5, 6, 2, 2, 2, 4], [2, 3, 7, 6, 2]]
]
 
for (ll in lls) {
System.print(Lst.intersect(ll[0], Lst.intersect(ll[1], ll[2])))
}</syntaxhighlight>
 
{{out}}
<pre>
[3, 9, 6]
[2, 2, 3, 6]
</pre>
 
Line 1,152 ⟶ 1,395:
A 32-bit integer is used to specify a set of values 0..31.
The [-1] terminator helps determine the number of lists.
<langsyntaxhighlight XPL0lang="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]];
Line 1,172 ⟶ 1,415:
I:= I+1;
];
]</langsyntaxhighlight>
 
{{out}}
1,150

edits