コマンド: 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: 組むことができない

補足: 置くミノ数とパターンのミノ数

sample_001

上の組み方に対して、パターンとして7種のミノすべて(*p7)を指定したとします、

このとき、JT を使わずに ILSZO を置くことができるパターンが成功となります。

たとえば、ホールドが許可されている場合であれば JILSZOT は成功となります(J をホールドしたまま ILSZO を置けるため)。 一方で、JTILSZO は失敗となります(JT のどちらかを置く必要があるため)。

また、ミノが足りないパターン(*p4 など)を指定した場合は、最後まで置けるパターンが存在しないため 0% になります。

オプション一覧

short

long

default

-t

--tetfu

なし

-p

--patterns

なし

-H

--hold

use

-d

--drop

softdrop

-m

--mirror

no

-M

--mode

normal

-sb

--starting-b2b

0

-P

--priority

no

-l

--last-sd

0

-ms

--max-softdrop

-1

-mc

--max-clearline

-1

-o

--output-base

output/cover.csv

-lp

--log-path

output/last_output.txt

-fp

--field-path

input/field.txt

-pp

--patterns-path

input/patterns.txt

-t, --tetfu [default: なし]

フィールドやオプションなどを指定したテト譜データを指定する。

テト譜を複数個同時に指定する場合は --tetfu v115@vhAAgH v115@vhAAgH のように指定する。

v115のテト譜データにのみ対応。

-p, --patterns [default: なし]

探索したいミノ順を指定する。

最大で22個のミノまで指定できる。

パターンを変更したい場合は --pattern IOSZLJTIO のように指定します。

-H, --hold [default: use]

ホールドの有無を指定する。

ホールドなしで探索する場合は --hold avoid を指定する。

-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, --mirror [default: no]

yes の場合、入力した組み方を左右に反転させた組み方も対象に加える。

複数のテト譜を同時に指定した場合、すべての組み方が左右反転されます。

-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]

modeany-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]

組み合わせパターンを定義するファイルのパスを指定する。