============================================================ ミノの組み合わせ ============================================================ 概要 ============================================================ このページでは、探索したいミノの組み合わせを指定する方法について説明します。 ミノの組み合わせは、パターンファイルやテト譜のコメント、コマンドライン引数から指定できます。 例えば ``I , [TIJLSZO]p4`` をミノの組み合わせとして指定した場合、 ``ITIJL, ITIJS, ITIJZ, ..., IJSZO, ILSZO`` のように「先頭I」と 「7種から4つを取り出した順列」 をつなげた 7P4=840 通りを探索対象にします。 基本ルール ============================================================ 要素1 , 要素2 , 要素3 , ... とコンマで繋げていきます。 全体の探索個数は 「要素1の総数 × 要素2の総数 × 要素3の総数 × ...」 となります。 例) * ``I, T, S, Z`` → ITSZ 1通り * ``[SZ] , O, [JL]`` → SOJ, SOL, ZOJ, ZOL 4通り * ``L , *`` → LT, LI, LJ, LL, LS, LZ, LO 7通り .. note:: - 要素を繋げるコンマは省略することもできます。 - ``T, I, O`` → ``TIO`` - ``S, Z, *p3`` → ``SZ, *p3`` 要素ルール ============================================================ 各要素は次のように指定します。 例) * ``I`` : Iのみ : 1通り * ``[SZLJ]`` : SZJLから1つを選択 : 4通り * ``[^TI]`` : TI以外から1つを選択 : 5通り * ``[SZLJ]p2`` : SZLJから2つを選択する順列 : 12通り * ``*`` (アスタリスク) : [TIJLSZO]と同等 : 7通り * ``*p3`` : [TIJLSZO]p3と同等 : 7P3=210通り * ``[SZLJ]!`` : [SZLJ]p4と同等 : 4P4=4!=24通り * ``*!`` : [TIJLSZO]p7と同等 : 7P7=7!=5040通り ``*`` は [TIJLSZO] と同じように解釈されます。 ``!`` は 左側で指定したミノ ([] or \*)を全て使う組み合わせとなります。[]の中をよく変更する場合に指定すると便利です。 .. note:: - 要素を繋げるコンマは省略することもできます。 - ``T, I, O`` → ``TIO`` - ``S, Z, *p3`` → ``SZ, *p3`` .. Attention:: Windowsのコマンドプロンプトで ^ をそのまま使用した場合、プログラムに入力することができません。 その場合は、以下のように入力文字列を変更してください。 - ダブルクォーテーションで囲む ex) ``"[^TI]"`` - ``^`` を2つにする ex) ``[^^TI]`` ちなみにPowerShellでは、そのまま利用することができます。 .. Attention:: Macのターミナルで ``*`` や ``!`` が含まれる場合、うまくプログラムを実行開始できないことがあります。 その場合はパターンの指定をシングルクォーテーションで囲んでください。 ex) ``"*!,*!"`` 書き方: パターンファイルの場合 ============================================================ 指定したファイルに組み合わせを記述しておくことで、ミノの組み合わせを変更することができます。 デフォルトのパターンファイルの位置は ``input/patterns.txt`` になります。 パターンファイルの位置はオプションから変更することができます。詳細は :doc:`command` を参照してください。 パターンファイルには、1行につき上記の1つのパターンを記述します。 なお、複数行に渡って複数個のパターンを書くことができます。 その場合は、各パターンを足し合わせた探索候補から探索します。 例) patterns.txtに次の3行が書かれたとき :: T, I S, Z L, O この場合 TI, SZ, LO の3通りを探索します。 ただし、T と I,J のようにブロック数が違うパターンは並べることができません。 また、 ``#`` をつけることでパターン内にコメントを残すことができます。 例) コメントの例 :: # ここはコメントなのでパターンに影響を与えません I, [TSZL]p3 T, [OIJL]p3 # ここにもコメントをかけます 書き方: テト譜の場合 ============================================================ テト譜からミノの組み合わせを変更する場合、テト譜のコメント部分にパターン or Quizを記述します。 例) 消去ライン数が4ラインで、パターンを*p4で指定する場合 / `サンプル1 `_ :: 4 --patterns *p4 複数パターンを同時に指定する場合は ``;`` で連結してください。 例) 消去ライン数が4ラインで、パターンを T,* と I,* で指定する場合 :: 4 --patterns T,*;I,* 例) Quiz形式で ZILJTOS を指定する場合 / `サンプル2 `_ :: #Q=[](Z)ILJTOS .. note:: - 空白を入れたい場合は ``'`` で囲ってください( ``'T,*; I,*'`` ) - ``--patterns`` は ``-p`` に省略できます - コマンドライン側からオプションを指定することで、テト譜のコメント編集せずに設定することもできます 書き方: コマンドラインの場合 ============================================================ 基本的にテト譜と同様です。オプションにパターンを指定してください。 例) :: java -jar sfinder.jar percent --patterns T,*;I,* サンプル: コマンド集 ============================================================ * ``*p7`` → すべてのミノを1つずつ使用する5040通り * ``I, *p4`` → Iをホールドした状態から新たな4種類のミノをひく840通り ※ 開幕パフェ1巡目のパフェテンプレ * ``[IOSL]!, *p7`` → IOSLミノを1つずつ引いた(840通り)後に、新たな7種類のミノを1つずつ使用する計840*5040通り ※ 開幕パフェ2巡目 IOSL残り