∇ ssub←{
[1] ∨/⍺=0 1:((⍺!⍵),⍺)⍴⍳⍵
[2] X←(⍳N)∘.>⍨,1↑⍉T←1+(⍺-1)∇ N←⍵-1
[3] ((,X)/(⍴,X)⍴⍳N),(+/X)⌿T
[4] }
∇
7 ssub 12
1 2 3 4 5 6 7
1 2 3 4 5 6 8
1 2 3 4 5 7 8
1 2 3 4 6 7 8
1 2 3 5 6 7 8
1 2 4 5 6 7 8
...
1 7 8 9 10 11 12
2 7 8 9 10 11 12
3 7 8 9 10 11 12
4 7 8 9 10 11 12
5 7 8 9 10 11 12
6 7 8 9 10 11 12
⍴ 7 ssub 12
792 7
7!12
792
强行写成一行也不是不行
3{({((,X)/(⍴,X)⍴⍳N),(+/X←(,1↑⍉T)∘.>⍳N←I+≢⍉⍵)⌿T←1+⍵}⍣(⍺-1))⍪⍳1+I←⍵-⍺}5
1 2 3
1 2 4
1 3 4
2 3 4
1 2 5
1 3 5
2 3 5
1 4 5
2 4 5
3 4 5
用 April
CL-USER> (setf (symbol-function 'ssub) (april:april "{({((,X)/(⍴,X)⍴⍳N),(+/X←(T[;1])∘.>⍳N←I+≢⍉⍵)⌿T←1+⍵}⍣(⍺-1))⍪⍳1+I←⍵-⍺}"))
#<COMPILED-LEXICAL-CLOSURE #x30200158614F>
CL-USER> (ssub 5 3)
#2A((1 2 3)
(1 2 4)
(1 3 4)
(2 3 4)
(1 2 5)
(1 3 5)
(2 3 5)
(1 4 5)
(2 4 5)
(3 4 5))