2
シャッフルの数
リフルシャッフルはシャッフルの一種で、デッキが2つのパーティションに分割された後、パーティションがスプライスされて新しいシャッフルデッキが作成されます。 カードは、カードがメンバーであるパーティション内で相対的な順序を維持するように接続されます。たとえば、カードAがデッキのカードBの前にあり、カードAとBが同じパーティションにある場合、カードAが最終結果のカードBの前にある必要があります。場合はAとBが異なるパーティションにある、彼らは最終的な結果に関係なく、自分の順番の、任意の順序にすることができます。 各リフルシャッフルは、カードの元のデッキの順列として見ることができます。たとえば、順列 1,2,3 -> 1,3,2 リフルシャッフルです。このようにデッキを分割すると 1, 2 | 3 のすべてのカード1,3,2は、パーティション内の他のすべてのカードと同じ相対的な順序を持っていることがわかります。 2まだ後1です。 一方、次の順列はリフルシャッフルではありません。 1,2,3 -> 3,2,1 これは、2つの(重要な)パーティションすべてに対して 1, 2 | 3 1 | 2, 3 相対的な順序を維持しないカードのペアがあります。最初のパーティション1で2順序を変更し、2番目のパーティション2で3順序を変更します。 ただし3, 2, 1、2つのリッフルシャッフルを作成することで作成できることがわかります。 1, 3, 2 + 2, 3, 1 = 3, 2, 1 実際、証明すべき非常に単純な事実は、いくつかのリフルシャッフル順列を組み合わせて、順列を作成できることです。 仕事 あなたの仕事は、入力として(サイズNの)順列を取り、入力順列を形成するために組み合わせることができる(サイズNの)最小数のリフルシャッフル順列を出力するプログラムまたは関数を作成することです。リッフルシャッフル自体を出力する必要はありません。 これはコードゴルフであるため、回答はバイト単位でスコアリングされ、バイト数は少ない方が良いでしょう。 恒等置換の場合、1または0を出力できます。 テストケース 1,3,2 -> 1 …