順列と組合せの関数を書いてみました。
1.さらに短くなるのかご指導願います。
2.組み合わせの関数で、combinatorics ([1,2,3,4,5,6],1) の時に、[1,2,3,4,5,6]の戻り値を返す方法が思いつきません。
何かよい方法はないでしょうか?
js
1//順列を配列にして返す 2const permutations=((f=(A,B=A.length,C=[])=>--B?A.reduce((a,b,c,[...d],_=d.splice(c,1))=>[...a,...f(d,B,[...C,b])],[]):A.map(a=>[...C,a]))=>f)(); 3 4/* 5function combinatorics (a, n = a.length, rst = []) { 6 return 1 === n 7 ? a 8 : a.reduce ((r,b,i)=> 9 r.concat(combinatorics (a.slice (i+1), n-1).map (c=> [b].concat(c))) 10 , rst); 11} 12*/ 13//組み合わせを配列にして返す 14const combinatorics=((f=(a,n=2,r=[])=>--n?a.reduce((r,b,i)=>r.concat(f(a.slice(i+1),n).map(c=>[b].concat(c))),r):a)=>f)(); 15 16console.log (combinatorics ([1,2,3,4,5,6], 2)); 17
回答1件
あなたの回答
tips
プレビュー