うしブログ

うしブログ

趣味で運営する、GeoGebraの専門ブログ。

(作業メモ)StartPoint要検証(2行の場合;テキスト変更時未定義問題)

(要修復)ToggleButton・RollPolygonWithoutSlipping・貯金時計・直感力トレーニング

nPr(順列)、nCr(組合せ)のパターンを返すオリジナルツール

ggtファイルのダウンロード

nPrList tool - GeoGebra

nCrList tool - GeoGebra

構文

nPrList[ <数値n>, <数値r>, <index> ]

は、自然数1〜nの中から、r個を取り出して、順番を考慮して並べる場合のパターンを返す。各パターンは、index(1〜nPrの範囲内で指定してください)と、1対1に対応している。

たとえば、

nPrList[5, 2, 1]

nPrList[5, 2, 2]

nPrList[5, 2, 3]

・・・

nPrList[5, 2, 19]

nPrList[5, 2, 20]

は、それぞれ、リスト

{1,2}

{1,3}

{1,4}

・・・

{5,3}

{5,4}

を返す。このようにに、第3引数(index)を、1から20(=5P2)まで変化させれば、自然数1〜5の中から、2個を取り出して、順番を考慮して並べる場合の20のパターンを、すべて得られる。

 

nCrList[ <数値n>, <数値r>, <index> ]

は、自然数1〜nの中から、r個を選ぶ組合せ(順番を考慮しない)のパターンを返す。各パターンは、index(1〜nCrの範囲内で指定してください)と、1対1に対応している。

たとえば、

nCrList[5, 2, 1]

nCrList[5, 2, 2]

nCrList[5, 2, 3]

・・・

nCrList[5, 2, 9]

nCrList[5, 2, 10]

は、それぞれ、リスト

{1,2}

{1,3}

{1,4}

・・・

{3,5}

{4,5}

を返す。このように、第3引数(index)を、1から10(=5C2)まで変化させれば、自然数1〜5の中から、2個を選ぶ組合せ(順番を考慮しない)のパターンを、すべて得られる。

参考:ツールの中身

nPrList

Element[Iteration[{RemoveUndefined[Join[{Take[Element[a, 1], 1, Element[Element[a, 2], 1] - 1], Take[Element[a, 1], Element[Element[a, 2], 1] + 1]}]], Take[Element[a, 2], 2], Join[{Element[a, 3], {Element[Element[a, 1], Element[Element[a, 2], 1]]}}]}, a, {{Sequence[α, α, 1, n], Sequence[If[Mod[Div[index - 1, Element[Sequence[nPr[n - β, r - β], β, 0, r], γ + 1]] + 1, Element[Sequence[nPr[n - β, r - β], β, 0, r], γ] / Element[Sequence[nPr[n - β, r - β], β, 0, r], γ + 1]] ≟ 0, Element[Sequence[nPr[n - β, r - β], β, 0, r], γ] / Element[Sequence[nPr[n - β, r - β], β, 0, r], γ + 1], Mod[Div[index - 1, Element[Sequence[nPr[n - β, r - β], β, 0, r], γ + 1]] + 1, Element[Sequence[nPr[n - β, r - β], β, 0, r], γ] / Element[Sequence[nPr[n - β, r - β], β, 0, r], γ + 1]]], γ, 1, r], {}}}, Length[Sequence[If[Mod[Div[index - 1, Element[Sequence[nPr[n - β, r - β], β, 0, r], γ + 1]] + 1, Element[Sequence[nPr[n - β, r - β], β, 0, r], γ] / Element[Sequence[nPr[n - β, r - β], β, 0, r], γ + 1]] ≟ 0, Element[Sequence[nPr[n - β, r - β], β, 0, r], γ] / Element[Sequence[nPr[n - β, r - β], β, 0, r], γ + 1], Mod[Div[index - 1, Element[Sequence[nPr[n - β, r - β], β, 0, r], γ + 1]] + 1, Element[Sequence[nPr[n - β, r - β], β, 0, r], γ] / Element[Sequence[nPr[n - β, r - β], β, 0, r], γ + 1]]], γ, 1, r]]], 3]

nCrList

Zip[Sum[Element[ζ, 1]], ζ, Sequence[Element[IterationList[{Join[{Element[Ω, 1], {Length[KeepIf[x < Element[Ω, 2], Zip[Sum[Join[{{0}, Element[Ω, 3]}], α], α, Sequence[β, β, 1, Length[Join[{{0}, Element[Ω, 3]}]]]]]]}}], Element[Ω, 2] - Element[Zip[Sum[Join[{{0}, Element[Ω, 3]}], α], α, Sequence[β, β, 1, Length[Join[{{0}, Element[Ω, 3]}]]]], Length[KeepIf[x < Element[Ω, 2], Zip[Sum[Join[{{0}, Element[Ω, 3]}], α], α, Sequence[β, β, 1, Length[Join[{{0}, Element[Ω, 3]}]]]]]]], Sequence[nPr[n - Sum[Join[{Element[Ω, 1], {Length[KeepIf[x < Element[Ω, 2], Zip[Sum[Join[{{0}, Element[Ω, 3]}], α], α, Sequence[β, β, 1, Length[Join[{{0}, Element[Ω, 3]}]]]]]]}}]] - γ, r - Element[Ω, 4]] / (r - Element[Ω, 4])!, γ, 1, n - Sum[Join[{Element[Ω, 1], {Length[KeepIf[x < Element[Ω, 2], Zip[Sum[Join[{{0}, Element[Ω, 3]}], α], α, Sequence[β, β, 1, Length[Join[{{0}, Element[Ω, 3]}]]]]]]}}]] - (r - Element[Ω, 4])], Element[Ω, 4] + 1}, Ω, {{{Length[KeepIf[x < index, Zip[Sum[Join[{{0}, Sequence[nPr[n - δ, r - 1] / (r - 1)!, δ, 1, n - (r - 1)]}], α], α, Sequence[β, β, 1, Length[Join[{{0}, Sequence[nPr[n - δ, r - 1] / (r - 1)!, δ, 1, n - (r - 1)]}]]]]]]}, index - Element[Zip[Sum[Join[{{0}, Sequence[nPr[n - δ, r - 1] / (r - 1)!, δ, 1, n - (r - 1)]}], α], α, Sequence[β, β, 1, Length[Join[{{0}, Sequence[nPr[n - δ, r - 1] / (r - 1)!, δ, 1, n - (r - 1)]}]]]], Length[KeepIf[x < index, Zip[Sum[Join[{{0}, Sequence[nPr[n - δ, r - 1] / (r - 1)!, δ, 1, n - (r - 1)]}], α], α, Sequence[β, β, 1, Length[Join[{{0}, Sequence[nPr[n - δ, r - 1] / (r - 1)!, δ, 1, n - (r - 1)]}]]]]]]], Sequence[nPr[n - Sum[{Length[KeepIf[x < index, Zip[Sum[Join[{{0}, Sequence[nPr[n - δ, r - 1] / (r - 1)!, δ, 1, n - (r - 1)]}], α], α, Sequence[β, β, 1, Length[Join[{{0}, Sequence[nPr[n - δ, r - 1] / (r - 1)!, δ, 1, n - (r - 1)]}]]]]]]}] - γ, r - 2] / (r - 2)!, γ, 1, n - Sum[{Length[KeepIf[x < index, Zip[Sum[Join[{{0}, Sequence[nPr[n - δ, r - 1] / (r - 1)!, δ, 1, n - (r - 1)]}], α], α, Sequence[β, β, 1, Length[Join[{{0}, Sequence[nPr[n - δ, r - 1] / (r - 1)!, δ, 1, n - (r - 1)]}]]]]]]}] - (r - 2)], 3}}, r - 1], ε], ε, 1, r]]