1

A.J の「n choose k」順列でアナグラム インデックス () 関数に似たものを達成するための本当に簡単な方法はありますか?

だから、私はJが大好きA.です。私がそれを少し理解していることを示すために:

   A. 0 3 4 2 1
17
   17 A. i.5
0 3 4 2 1

17 A. thingsまた、それを使用してリストを並べ替えたり ( )、結果を使用してリストから選択したりできることも知っています (それが異なる場合(17 A. i.5) { things)。

私は、A.置換の有無にかかわらず、「n choose k」順列の選択を再作成するために、同様の数値を生成し、逆も行う関数を探しています。順序は私にとって重要なので、0 2 7とは異なりますが7 0 2、順序を気にしないバージョン (Yahtzee でサイコロを振るときなど) に興味があります。

私は自分でこれを理解し、自分の関数を書き始める準備ができていますが、特にA.プリミティブとして含まれる J のような言語では、これは解決済みの問題であると想定する必要があります。

明確にするために、「n choose k」とは、サイコロを振ること (3 つのサイコロを次々に振る「6 選択 3、置換あり」) と競馬の勝者 (「20 選択 3、置換なし」) のことです。 20頭競走の上位3頭が対象)。

4

1 に答える 1

3

「6 選択 3、置換あり」の場合、catalog{を使用できます。

{3#<i.6
┌─────┬─────┬─────┬─────┬─────┬─────┐
│0 0 0│0 0 1│0 0 2│0 0 3│0 0 4│0 0 5│
├─────┼─────┼─────┼─────┼─────┼─────┤
│0 1 0│0 1 1│0 1 2│0 1 3│0 1 4│0 1 5│
├─────┼─────┼─────┼─────┼─────┼─────┤
...

上記の行列 (解かれていない) のインデックスとして逆を使用できます。feg:

(0 0 0) I.~ >,{3#<i.6
0
(0 1 0) I.~ >,{3#<i.6
6
(5 5 5) I.~ >,{3#<i.6
215
(4 5 1) I.~ >,{3#<i.6
175

175 { >,{3#<i.6
4 5 1

jsoftware.com には、組み合わせに関するいくつかの関連するエッセイがあります: Combination IndexCombinationsなど。

于 2013-10-28T21:08:17.227 に答える