Эта функциональность была недавно добавлена в аддон stats/base
.
load 'stats/base/combinatorial' NB. or just load 'stats'
permrep 2 NB. permutations of size 2 from 2 items with replacement
0 0
0 1
1 0
1 1
3 permrep 2 NB. permutations of size 3 from 2 items with replacement
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
permrep NB. display definition of permrep
$:~ :(# #: i.@^~)
Используя Qt IDE, вы можете просмотреть скрипт, определяющий permrep
и друзей, введя open 'stats/base/combinatorial'
в окне Term. В качестве альтернативы вы можете просмотреть его на Github .
Чтобы определить f
, как указано в вашем вопросе, должно быть достаточно следующего:
f=: permrep&2
f=: (# #: i.@^~)&2 NB. alternatively
f 3
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1