ミノの組み合わせ

概要

このページでは、探索したいミノの組み合わせを指定する方法について説明します。

ミノの組み合わせは、パターンファイルやテト譜のコメント、コマンドライン引数から指定できます。

例えば 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通り

注釈

  • 要素を繋げるコンマは省略することもできます。

  • 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 *)を全て使う組み合わせとなります。[]の中をよく変更する場合に指定すると便利です。

注釈

  • 要素を繋げるコンマは省略することもできます。

  • T, I, O → TIO

  • S, Z, *p3 → SZ, *p3

注意

Windowsのコマンドプロンプトで ^ をそのまま使用した場合、プログラムに入力することができません。 その場合は、以下のように入力文字列を変更してください。

  • ダブルクォーテーションで囲む ex) "[^TI]"

  • ^ を2つにする ex) [^^TI]

ちなみにPowerShellでは、そのまま利用することができます。

注意

Macのターミナルで *! が含まれる場合、うまくプログラムを実行開始できないことがあります。 その場合はパターンの指定をシングルクォーテーションで囲んでください。 ex) "*!,*!"

書き方: パターンファイルの場合

指定したファイルに組み合わせを記述しておくことで、ミノの組み合わせを変更することができます。

デフォルトのパターンファイルの位置は input/patterns.txt になります。

パターンファイルの位置はオプションから変更することができます。詳細は コマンドについて を参照してください。

パターンファイルには、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

注釈

  • 空白を入れたい場合は ' で囲ってください( '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残り