I would like to determine all partitions of a given list of integers {1,...,n}, where the elements of the partitions possess a specific cardinality k in {1,Nmin,...,Nmax}.
For example: given a list of integers {1,2,3,4} all partitions should be determined, for which the elements of the partitions posses a cardinality in {1,Nmin=2,...,Nmax=3}, i.e. P1 = {{1,2},{3,4}}, P2={{1,3},{2,4}}, P3={{2,3},{1,4}},P4={{1},{2,3,4}},P5={{2},{1,3,4}}, P6={{3},{1,2,3}}, P7={{4},{1,2,3}}, P8={{1,2},{3},{4}}, P9={{2,3},{1},{4}}, P10={{3,4},{1},{2}}, P11={{1,4},{2},{3}}.
The function should look like:
def detPartSpecSubSize(n: Int,Nmin: Int,Nmax:int) : List[List[List[Int]]] {
...
}
In the example above n = 4, Nmin=2 and Nmax = 3 and the output P={P1,P2,...,P11}.
I would like to do it in Scala in a recursive manner...