Jump to content

Cartesian product of two or more lists: Difference between revisions

m (→‎{{header|Groovy}}: cosmetic changes)
Line 3,172:
</pre>
 
 
=={{header|Visual Basic .NET}}==
{{trans|C#}}
<lang vbnet>Imports System.Runtime.CompilerServices
 
Module Module1
 
<Extension()>
Function CartesianProduct(Of T)(sequences As IEnumerable(Of IEnumerable(Of T))) As IEnumerable(Of IEnumerable(Of T))
Dim emptyProduct As IEnumerable(Of IEnumerable(Of T)) = {Enumerable.Empty(Of T)}
Return sequences.Aggregate(emptyProduct, Function(accumulator, sequence) From acc In accumulator From item In sequence Select acc.Concat({item}))
End Function
 
Sub Main()
Dim empty(-1) As Integer
Dim list1 = {1, 2}
Dim list2 = {3, 4}
Dim list3 = {1776, 1789}
Dim list4 = {7, 12}
Dim list5 = {4, 14, 23}
Dim list6 = {0, 1}
Dim list7 = {1, 2, 3}
Dim list8 = {30}
Dim list9 = {500, 100}
 
For Each sequnceList As Integer()() In {
({list1, list2}),
({list2, list1}),
({list1, empty}),
({empty, list1}),
({list3, list4, list5, list6}),
({list7, list8, list9}),
({list7, empty, list9})
}
Dim cart = sequnceList.CartesianProduct().Select(Function(tuple) $"({String.Join(", ", tuple)})")
Console.WriteLine($"{{{String.Join(", ", cart)}}}")
Next
End Sub
 
End Module</lang>
{{out}}
<pre>{(1, 3), (1, 4), (2, 3), (2, 4)}
{(3, 1), (3, 2), (4, 1), (4, 2)}
{}
{}
{(1776, 7, 4, 0), (1776, 7, 4, 1), (1776, 7, 14, 0), (1776, 7, 14, 1), (1776, 7, 23, 0), (1776, 7, 23, 1), (1776, 12, 4, 0), (1776, 12, 4, 1), (1776, 12, 14, 0), (1776, 12, 14, 1), (1776, 12, 23, 0), (1776, 12, 23, 1), (1789, 7, 4, 0), (1789, 7, 4, 1), (1789, 7, 14, 0), (1789, 7, 14, 1), (1789, 7, 23, 0), (1789, 7, 23, 1), (1789, 12, 4, 0), (1789, 12, 4, 1), (1789, 12, 14, 0), (1789, 12, 14, 1), (1789, 12, 23, 0), (1789, 12, 23, 1)}
{(1, 30, 500), (1, 30, 100), (2, 30, 500), (2, 30, 100), (3, 30, 500), (3, 30, 100)}
{}</pre>
 
=={{header|zkl}}==
1,452

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.