1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| Class arrangements
Private Iterator Function Prepend(Of T)(first As T, rest As IEnumerable(Of T)) As IEnumerable(Of T)
Yield first
For Each item As T In rest
Yield item
Next
End Function
Private Iterator Function M(p As Integer, t1 As Integer, t2 As Integer) As IEnumerable(Of IEnumerable(Of Integer))
If p = 0 Then
Yield Enumerable.Empty(Of Integer)()
Else
For first As Integer = t1 To t2
For Each rest As IEnumerable(Of Integer) In M(p - 1, first, t2)
Yield Prepend(first, rest)
Next
Next
End If
End Function
Public Sub Main(p As Integer, T1 As Integer, T2 As Integer)
For Each sequence As IEnumerable(Of Integer) In M(p, T1, T2)
' Console.WriteLine(String.Join(", ", sequence))
Console.WriteLine(String.Concat(sequence))
Next
End Sub
End Class |
Partager