コマンド: cover¶
概要¶
ミノの組み方を指定したとき、最後までその通りに置くことができるミノ順をすべて列挙します。 また、組み方を複数個同時に指定することで、パターン全体をその組み方でカバーできる割合を表示します。
結果は CSVファイル で出力されます。
基本コマンド¶
java -jar sfinder.jar cover --tetfu v115@vhFRQJUGJKJJvMJTNJGBJ v115@vhFRQJPGJKJJGMJTNJ0BJ --patterns *p7
入力フォーマット¶
組み方について¶
サンプル v115@vhERQJUGJKJJvMJTNJ
組み方の入力は、「テト譜」のみ対応しています。
入力するテト譜は、1ページごとにミノを配置して、接着フラグをオンにしてください。
接着フラグがオンになっていないミノや、途中で直接ブロックが書き加えられた地形は反映されないため、ご注意ください。
ページ指定について¶
サンプル v115@vhERQJUGJKJJvMJTNJ#1:5
テト譜の末尾に #x:y
を加えることでページを指定することができます。
ページ番号は、先頭のページが 1
となります。
また、最後に指定したページのミノも探索対象に含まれます。
#2:5
-> 2ページから5ページで指定される最大4ミノ#:5
->#1:5
と同様#2:
-> 最後のページが6ページの場合#2:6
と同様
出力フォーマット¶
コンソール表示¶
サンプル
# Output
success:
33.33 % [1680/5040]: http://fumen.zui.jp/?v115@vhFRQJUGJKJJvMJTNJGBJ#1:6
44.44 % [2240/5040]: http://fumen.zui.jp/?v115@vhFRQJPGJKJJGMJTNJ0BJ#1:6
>>>
OR = 61.67 % [3108/5040]
AND = 16.11 % [812/5040]
- x.xx % [yyyy/zzzz]
x.xx %
: 指定された組み方をできるパターンの割合yyyy
: 指定された組み方をできるパターン数zzzz
: パターン全体の数
- OR
指定された組み方のうち、どれかひとつでも組むことができるパターンの確率
- AND
指定された組み方のうち、すべてを組むことができるパターンの確率
CSV形式¶
サンプル
sequence,vhFRQJUGJKJJvMJTNJGBJ,vhFRQJPGJKJJGMJTNJ0BJ
TILJSZO,X,O
TILJSOZ,X,O
TILJZSO,X,O
TILJZOS,X,O
TILJOSZ,X,O
TILJOZS,X,O
TILSJZO,X,O
TILSJOZ,X,O
TILSZJO,O,O
TILSZOJ,O,X
TILJSZO
: パターンで指定されたツモ順O
: 組むことができるX
: 組むことができない
補足: 置くミノ数とパターンのミノ数¶
上の組み方に対して、パターンとして7種のミノすべて(*p7
)を指定したとします、
このとき、JT
を使わずに ILSZO
を置くことができるパターンが成功となります。
たとえば、ホールドが許可されている場合であれば JILSZOT
は成功となります(J
をホールドしたまま ILSZO
を置けるため)。
一方で、JTILSZO
は失敗となります(JT
のどちらかを置く必要があるため)。
また、ミノが足りないパターン(*p4
など)を指定した場合は、最後まで置けるパターンが存在しないため 0%
になります。
オプション一覧¶
short |
long |
default |
---|---|---|
|
|
なし |
|
|
なし |
|
|
use |
|
|
softdrop |
|
|
no |
|
|
normal |
|
|
0 |
|
|
no |
|
|
0 |
|
|
-1 |
|
|
-1 |
|
|
output/cover.csv |
|
|
output/last_output.txt |
|
|
input/field.txt |
|
|
input/patterns.txt |
-t
, --tetfu
[default: なし]¶
フィールドやオプションなどを指定したテト譜データを指定する。
テト譜を複数個同時に指定する場合は --tetfu v115@vhAAgH v115@vhAAgH
のように指定する。
v115のテト譜データにのみ対応。
-p
, --patterns
[default: なし]¶
探索したいミノ順を指定する。
最大で22個のミノまで指定できる。
パターンを変更したい場合は --pattern IOSZLJTIO
のように指定します。
-d
, --drop
[default: softdrop]¶
ミノの操作に制限を加える。
以下から操作方法をひとつ選択する。
softdrop: ソフトドロップ+回転入れ(制限なし)
harddrop: ハードドロップのみ
180: ソフトドロップ+180度回転入れ。180度回転は Nullpomino のStandard Wallkickに準拠します
t-softdrop: Tミノはソフトドロップ、その他のミノはハードドロップ
any-tspin (any, tspin0): Tミノは必ずT-Spin(Mini含むすべてのT-Spin)をする。その他のミノはハードドロップ
tss (tspin1): Tミノは必ずT-Spin Single,Double,Tripe(Miniは含まない)をする。その他のミノはハードドロップ
tsd (tspin2): Tミノは必ずT-Spin Double,Tripe(Miniは含まない)をする。その他のミノはハードドロップ
tst (tspin3): Tミノは必ずT-Spin Tripe(Miniは含まない)をする。その他のミノはハードドロップ
※ T-Spin系のdropでは、「T-Spinできないケース」や「ライン消去が発生しないT-Spinになるケース」ではミノを置きません。
また、Tミノを使わないケースでは harddrop
と同じになる点にご注意ください (solutionが省略されるわけではありません)。
-M
, --mode
[default: normal]¶
探索モードを変更します。モードを変更すると「成功とする条件」が変化します。 その結果、Outputに表示される数値が各条件に沿った値となります。
モードは以下からひとつ選択する。
<Normal系>
- normal
指定されたミノの置き場所通りにすべて置くことができれば成功とする
Mode: 1L
と同等のモードです
- 1L (1line, 1lines) ~ 4L (4line, 4lines)
指定されたライン数以上での消去を許可された状況下で、指定されたミノの置き場所通りにすべて置くことができれば成功とする
たとえば
3L
を指定した場合、3ライン or 4ライン が可能ですライン数は
1~4
の間で指定できます
- 1L-OR-PC (1line-OR-PC, 1lines-OR-PC) ~ 4L-OR-PC (4line-OR-PC, 4lines-OR-PC)
-通常のライン消去 (
1L ~ 4L
) に加えて、Perfect Clearも許可します - たとえば3L-OR-PC
を指定した場合、3ライン or 4ライン or 任意のライン数のPC が可能です - ライン数は1~4
の間で指定できます
※ 上の3つのモードでは --max-softdrop
--max-clearline
をさらに指定できます
<Tetris系>
- tetris
テトリス(4ライン消去)を1回以上しながら、指定されたミノの置き場所通りにすべて置くことができれば成功とする
途中でTetrisが含まれていれば、それ以外のミノでライン消去が発生しても成功となる
- tetris-end
指定されたミノの置き場所通りにすべて置きながら、かつ最後の操作がテトリス(4ライン消去)にできれば成功とする
最後がTetrisであれば、それ以外のミノでライン消去が発生しても成功となる
<T-Spin系>
- any-tspin (any, tspin0)
Tスピンを1回以上しながら、指定されたミノの置き場所通りにすべて置くことができれば成功とする
途中でTスピンが含まれていれば、それ以外のミノでライン消去が発生しても成功となる
Tスピンは TSS,TSD,TST,Mini すべてが対象となる (ライン消去を伴わないTスピンはカウントされません)
- tss (tspin1)
any-tspin
と同様ただし、TSS,TSD,TST が対象となる (Miniは含まれない)
- tsd (tspin2)
any-tspin
と同様ただし、TSD,TST が対象となる (Miniは含まれない)
- tst (tspin3)
any-tspin
と同様ただし、TST のみが対象となる (Miniは含まれない)
<B2B系>
- b2b
B2Bを継続したまま、指定されたミノの置き場所通りにすべて置くことができれば成功とする
つまり、途中でテトリス or Tスピン以外でライン消去が発生する場合は失敗となる
-sb
, --starting-b2b
[default: 0]¶
mode
が any-tspin
tss
tsd
tst
の場合に、使用されるオプションです。
このオプションで指定した回数以上、開始直後からTスピン・テトリスを連続して成功させる必要があります。
以下に -M any-tspin -sb 2
で、ライン消去が起きた場合の例を記載します。
START -> 3ライン : 失敗
START -> TSS -> 3ライン : 失敗
START -> TSS -> TSS -> 3ライン : 成功
START -> 4ライン -> TSS : 成功
START -> 4ライン -> 4ライン -> END : 失敗 (T-Spinが必須なモードを指定しているため)
START -> 4ライン -> 4ライン -> TSS : 成功
0
の場合は、開始直後にライン消去しても成功となります。
-P
, --priority
[default: no]¶
入力されるテト譜に優先度を設定し、1つのツモ順につき1つの組み方だけを成功にします。
なお、優先度はテト譜の入力順によって決まり、先頭にあるテト譜の優先度が最も高く、末尾にあるテト譜の優先度が最も低くなります。
-P yes
の場合、優先度の高い組み方から成功/失敗が判定され、一番はじめに条件を満たしたテト譜のみを成功となります。
たとえば -t テト譜A テト譜B テト譜C
を入力し、TIOSZLJ
はすべてのテト譜で組めるとします。
このとき、-P no
ではすべて成功 (TIOSZLJ,O,O,O
) となりますが、
-P yes
ではテト譜Aのみ成功 (TIOSZLJ,O,X,X
) となります。
-l
, --last-sd
[default: 0]¶
--drop
の設定によらず、ソフトドロップを有効にするタイミングを指定します。
数値には、残り何ミノでソフトドロップを有効にするかを入力します。
たとえば、このテト譜 で --drop harddrop --last-sd 1
と指定したとします。
本来 --drop harddrop
だけでは、Zミノでソフトドロップが必要となるため、組むことができません。
しかし --last-sd 1
を指定することで、残り1ミノのときだけソフトドロップを有効になります。
つまり今回の例では、Oミノを置いた後であれば、Zミノを置くことができます。
なお、テト譜ごとで必要なミノ数が異なる場合では、それぞれのテト譜で適用されるタイミングが変わります。
たとえば、4ミノと3ミノの組み方を指定したケースでは、それぞれの組み方で3ミノ・2ミノ置いた後から適用されることになります。
-ms
, --max-softdrop
[default: -1]¶
途中でSoftdropを使用できる最大の回数を指定できます。指定された回数もOKとなります。
指定された回数より多くのSoftdropを使用しないといけない置き方は失敗となります。
このオプションは normal
1L ~ 4L
1L-OR-PC ~ 4L-OR-PC
モードで有効となります。
もし -1
を指定した場合、Softdropの回数は制限されません。
-mc
, --max-clearline
[default: -1]¶
途中でライン消去しても良い最大の回数を指定できます。指定された回数もOKとなります。
指定された回数より多くのライン消去が発生する置き方は失敗となります。
このオプションは normal
1L ~ 4L
1L-OR-PC ~ 4L-OR-PC
モードで有効となります。
もし -1
を指定した場合、ライン消去の回数は制限されません。
-o
, --output-base
[default: output/cover.csv]¶
出力結果を保存するファイルのパスを指定する。
-lp
, --log-path
[default: output/last_output.txt]¶
実行時のログを保存するファイルのパスを指定する。
-fp
, --field-path
[default: input/field.txt]¶
フィールドを定義するファイルのパスを指定する。
-pp
, --patterns-path
[default: input/patterns.txt]¶
組み合わせパターンを定義するファイルのパスを指定する。