ミノの組み合わせ¶
概要¶
このページでは、探索したいミノの組み合わせを指定する方法について説明します。
ミノの組み合わせは、パターンファイルやテト譜のコメント、コマンドライン引数から指定できます。
例えば 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残り