IMHO you are not asking for permutations but for combinations.
If I am right, then the answer given about Knuth's Algorithm L doesn't cover your problem.
Assuming that you are asking indeed for combinations: there are 20 of them and here they come.
1 1 2 3
2 1 2 4
3 1 2 5
4 1 2 6
5 1 3 4
6 1 3 5
7 1 3 6
8 1 4 5
9 1 4 6
10 1 5 6
11 2 3 4
12 2 3 5
13 2 3 6
14 2 4 5
15 2 4 6
16 2 5 6
17 3 4 5
18 3 4 6
19 3 5 6
20 4 5 6
I have software for doing the same in more general cases. The gist of the coding is a nested loop, as follows (in Pascal).
Program loops;
var
tel, k1, k2, k3 : integer;
begin
tel := 0;
for k1 := 1 to 6 do
begin
for k2 := k1+1 to 6 do
begin
for k3 := k2+1 to 6 do
begin
tel := tel + 1;
Writeln(tel:2,' ',k1,' ',k2,' ',k3);
end;
end;
end;
end.
The following is the more general (recursive) program as mentioned, with the same output, though.
Program recursie;
procedure combi(n,k : integer);
{
Combinations k out of n
}
var
t : integer;
loper : array of integer;
procedure loops(var tel : integer; diep : integer);
{
Recursive nested loops
}
var
d : integer;
procedure PRINT;
var
i : integer;
begin
Write(tel+1:3,' ');
for i := 1 to k do
Write(loper[i],' ');
Writeln;
end;
begin
if diep = k then
begin
PRINT;
tel := tel + 1;
end else begin
for d := loper[diep]+1 to n do
begin
loper[diep+1] := d;
loops(tel,diep+1);
end;
end;
end;
begin
t := 0;
SetLength(loper,k+1);
loper[0] := 0;
loops(t,0);
end;
{
procedure test;
var
k : integer;
begin
for k := 0 to 6 do
begin
combi(6,k);
Writeln;
end;
end;
}
begin
combi(6,3);
end.