Common list elements: Difference between revisions
m
syntax highlighting fixup automation
(J) |
Thundergnat (talk | contribs) m (syntax highlighting fixup automation) |
||
Line 13:
=={{header|11l}}==
<
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]]))</
{{out}}
Line 28:
=={{header|Action!}}==
{{libheader|Action! Tool Kit}}
<
DEFINE PTR="CARD"
Line 135:
arrays(2)=a7
Test(arrays,lengths,3)
RETURN</
{{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}}==
<
with Ada.Containers.Vectors;
Line 202:
R := Common_Elements (R, C);
Put (R);
end Common;</
{{out}}
<pre>[ 3 9 6 ]</pre>
Line 209:
APL has the built-in intersection function <code>∩</code>
<
3 9 6 </
=={{header|AppleScript}}==
===AppleScriptObjC===
<
use framework "Foundation"
use sorter : script "Insertion Sort" -- <https://www.rosettacode.org/wiki/Sorting_algorithms/Insertion_sort#AppleScript>
Line 229:
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</
{{output}}
<syntaxhighlight lang
===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.
<
use sorter : script "Insertion Sort" -- <https://www.rosettacode.org/wiki/Sorting_algorithms/Insertion_sort#AppleScript>
Line 262:
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</
=={{header|Arturo}}==
<
if zero? size subsets -> return []
if 1 = size subsets -> return first subsets
Line 282:
[3 5 6 2 9 8 4]
[1 3 7 6 9]
]</
{{out}}
Line 289:
=={{header|AutoHotkey}}==
<
counter := [], output := []
for i, num in nums
Line 297:
return output
}
</syntaxhighlight>
Examples:<
output := Common_list_elements(nums)
return</
{{out}}
<pre>[3, 6, 9]</pre>
=={{header|AWK}}==
<syntaxhighlight lang="awk">
# syntax: GAWK -f COMMON_LIST_ELEMENTS.AWK
BEGIN {
Line 327:
exit(0)
}
</syntaxhighlight>
{{out}}
<pre>
Line 333:
</pre>
=={{header|CLU}}==
<
where T has equal: proctype (T,T) returns (bool)
for i: T in array[T]$elements(a) do
Line 374:
stream$puts(po, int$unparse(i) || " ")
end
end start_up</
{{out}}
<pre>3 6 9</pre>
Line 386:
{{Works with|Office 365 Betas 2021}}
<
=LAMBDA(xs,
LAMBDA(ys,
Line 410:
xs
)
)</
and also assuming the following generic bindings in Name Manager:
<
=LAMBDA(x,
LAMBDA(xs,
Line 453:
)
)
)</
{{Out}}
Line 544:
=={{header|F_Sharp|F#}}==
Of course it is possible to use sets but I thought the idea was not to?
<
// 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>
{{out}}
<pre>
Line 557:
Note: in older versions of Factor, <code>intersect-all</code> was called <code>intersection</code>.
{{works with|Factor|0.99 2021-02-05}}
<
{ { 2 5 1 3 8 9 4 6 } { 3 5 6 2 9 8 4 } { 1 3 7 6 9 } } intersect-all .</
{{out}}
<pre>
Line 566:
=={{header|FreeBASIC}}==
<
redim as integer outp(0)
dim as integer i, j
Line 591:
for i = 1 to ubound(outp)
print outp(i);" ";
next i</
{{out}}<pre>3 9 6</pre>
=={{header|Go}}==
{{trans|Wren}}
<
import "fmt"
Line 657:
fmt.Println()
}
}</
{{out}}
Line 669:
=={{header|Haskell}}==
<
task :: Ord a => [[a]] -> [a]
Line 675:
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]]</
{{out}}
<pre>[3,6,9]</pre>
Line 681:
=={{header|J}}==
<
3 9 6</
Or,
<
3 9 6</
=={{header|jq}}==
Line 696:
on the arrays whose intersection is sought. The helper function, `ios`,
might be independently useful and so is defined as a top-level filter.
<
# then [a,b] | ios will emit the stream of elements in the set-intersection of a and b.
def ios:
Line 716:
elif any(.[]; length == 0) then []
else sort_by(length) | go
end;</
<
[[2,5,1,3,8,9,4,6], [3,5,6,2,9,8,4], [1,3,7,6,9]]</
{{out}}
<pre>
Line 725:
=={{header|Ksh}}==
<
#!/bin/ksh
Line 768:
done
print "( ${output[@]} )"</
{{out}}
<pre>( 3 9 6 )</pre>
=={{header|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 779:
9
6
</syntaxhighlight>
=={{header|Lambdatalk}}==
<syntaxhighlight lang="scheme">
{def intersection
Line 805:
}
-> [3,6,9]
</syntaxhighlight>
=={{header|Mathematica}}/{{header|Wolfram Language}}==
<
{{out}}
<pre>{3, 6, 9}</pre>
=={{header|Nim}}==
<
proc commonElements(list: openArray[seq[int]]): seq[int] =
Line 824:
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]])</
{{out}}
Line 830:
=={{header|Perl}}==
<
map { print "$_ " if @nums == ++$c{$_} } @$_ for @nums;</
{{out}}
<pre>3 6 9</pre>
=={{header|Phix}}==
<!--<
<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 856:
<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>
<!--</
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 867:
===Without Duplicates===
<
def common_list_elements(*lists):
Line 882:
result = common_list_elements(*case)
print(f"Intersection of {case} is {result}")
</syntaxhighlight>
{{out}}
Line 891:
===With Duplicates===
<
from collections import Counter
Line 913:
result = common_list_elements(*case)
print(f"Intersection of {case} is {result}")
</syntaxhighlight>
{{out}}
Line 923:
=={{header|Quackery}}==
<
[ sort [] temp put
[ over [] !=
Line 937:
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</
{{out}}
Line 944:
=={{header|Raku}}==
<syntaxhighlight lang="raku"
{{out}}
<pre>6 9 3</pre>
Line 950:
=={{header|REXX}}==
This REXX version properly handles the case of duplicate entries in a list (which shouldn't happen in a true list).
<
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 967:
end /*k*/
/*stick a fork in it, we're all done. */
say 'the list of common elements in all sets: ' "["translate(space($), ',', " ")']'</
{{out|output|text= when using the default inputs:}}
<pre>
Line 974:
=={{header|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,027:
txt = txt + "]"
see txt
</syntaxhighlight>
{{out}}
<pre>
Line 1,034:
=={{header|Ruby}}==
<
p nums.inject(&:intersection) # or nums.inject(:&)
</syntaxhighlight>
{{out}}
<pre>[3, 9, 6]
Line 1,043:
=={{header|Vlang}}==
{{trans|go}}
<
for i in 0..l.len {
if l[i] == n {
Line 1,099:
println('')
}
}</
{{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,108:
'''Alternative:'''
<
{
lls := [
Line 1,136:
}
return output
}</
{{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,147:
{{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.
<
var common2 = Fn.new { |l1, l2|
Line 1,185:
System.print(commonN.call(ll))
System.print()
}</
{{out}}
Line 1,197:
<br>
Since the above was written, we can also now offer a library based solution.
<
var lls = [
Line 1,206:
for (ll in lls) {
System.print(Lst.intersect(ll[0], Lst.intersect(ll[1], ll[2])))
}</
{{out}}
Line 1,217:
A 32-bit integer is used to specify a set of values 0..31.
The [-1] terminator helps determine the number of lists.
<
[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,237:
I:= I+1;
];
]</
{{out}}
|