「上海」シリーズに共通するテクニック


目次

   1. 基本となる考え方
   2. 代表的な手詰まりの形
     2.1 縦かぶり
     2.2 縦入れ子
     2.3 横並び
     2.4 横入れ子
   3. 確実に安全な取り方
     3.1 4枚取る
     3.2 いつ取っても問題の無い1枚を残す
     3.3 他の牌を妨害しない2枚を残す
     3.4 同時に取れるようになる2枚を残す
     3.5 手順が1通りしか無い場合
     3.6 2組目でないと取れない牌がすぐに取れるようになる場合
     3.7 片側を妨害されている1段目の牌がすぐに取れるようになる場合
     3.8 1つの牌が妨害している全ての牌を他の牌が同順に妨害していて、残り2枚をペアで取れない場合
     3.9 一方から取ると残りの2枚が同時に取れるようになり、他方から取るには現状取れる牌が必要になる場合
     3.10 取ることもできるが、残り1枚も取らないと取れる牌が増えない牌を残せる場合
     3.11 取ることもできるが、残り1枚を取れるようにしないと取れる牌が増えない牌を残せる場合
     3.12 その他の組み合わせ
     3.13 安全手順のもう少し詳しい説明
   4. 比較的安全な取り方を見つける方法
     4.1 取ることのメリットを評価して取る
     4.2 より多くの牌を妨害している牌を取る
     4.3 同じ順序で並んでいる場所を探す
     4.4 ハマりを構成している牌をまとめて取る
     4.5 1つの列に同種の牌が2枚以上ある牌に注目する
     4.6 4枚取れそうな牌の手順を考える
     4.7 残り1枚を待つ必要の無い状況での決断

2014/01/27 3.93.10追加
2014/02/02 3.10修正、3.11追加
2014/02/07 3.11修正
2023/01/22 3.3修正、3.11追加、3.11を3.12に変更して修正
2023/02/08 3.12修正、3.13追加

1. 基本となる考え方

上海というゲームは一部の牌が他の牌の下に隠されていて絵柄が見えないため、もとより画面に見えている情報のみから論理的に解ききるのはほとんどの場合不可能なゲームである。
例えば牌を取り進めた結果下図のような状況が残った場合、どの一萬の下に残りの一萬が隠されているかわからないので、見えている情報から安全に取りきる方法は存在しない。

従って、クリア率を上げていくためには見えている情報からの推論に加え、さらに何らかの手段が必要になる。具体的には以下のような方法が考えられる。

  1. (もし表示されるなら)面が始まる時に並べられている牌を覚えておく
  2. (もしあれば)BACKやRESTART、PEEPなどを活用する
  3. 配列生成ロジックの傾向を把握し、見えている配列から見えていない部分の配列を推測する
しかし、わずか数秒の間に並べられていく牌をすべて覚えきれる人はほとんどいないだろうし、BACKやRESTARTなどを使える回数には限りがある。ロジックを把握するにしても生成される配列からロジックを推定していくしかない以上、100%安全にはなり得ない。
そこで、これらの手法を組み合わせつつ、より確率の高い解き方を探っていくのがこのゲームの攻略の要となる。

上記で挙げた手法の中で、最もイメージしにくいのがロジックを推定する方法だろう。実際に配列からロジックを推定していくには最低でも百通り余り、できれば数千通りの配列を見ていく必要があるため、かなりの時間と労力が必要になる。また、配列生成ロジックはゲームごとに異なっている可能性が高いので、ある作品の知識が別の作品に応用できるとも限らない。
しかし、多くの「上海」ゲームで「解ける配列を生成している」という点だけは共通している。

そもそも上海というゲームは、牌を完全にでたらめに配置しているとかなりの確率でどのような手順でも絶対に解けない配列が生成されてしまう。

上図は単純な「解けない配列」の例だが、他にも様々な形が想定できる。実際のゲームではこのような配列が生成されないよう、何かしらの仕掛けが入っている場合が多い。
具体的な手法としては以下の3通りが考えられる。

  1. 生成された配列を解いてみて、解けない配列であれば再生成する
  2. あらかじめいくつかの配列パターンを用意しておき、部分的にシャッフルするなどして生成する
  3. 山の形に合わせて特定の手順を想定し、手順に合わせて牌を配置する
1番目の生成された配列を解いてみるという方法は実はかなり時間のかかる処理で、配列によっては数分から数十分ほどもかかってしまうことがあるためゲームで使用するにはあまり現実的でない。
2番目の配列パターンを用意しておく方法は他のパズルゲームでも使用されている簡便な手法だが、この場合は100種類ほどの配列データを収集して分析することで、この方法をとっているかどうかが確認できる。
3番目の方法が使用されているかどうかの推定はかなり難しいが、ある程度の数の配列データを収集・分析した際に特定の位置に同種の牌が積まれる確率が高くなっているなど、完全な乱数とは明らかに異なる傾向が見られる場合にはこの方法がとられていると推定できる。

アーケード版のいくつかの「上海」ゲームにおいては、これらの手法のうち3番目の方法を使用していることが推定できている。
この場合プレイヤーとしては配列生成ロジックの推定と、実際に生成された配列から想定されている手順や見えない部分の配列を推測する技術が攻略を進める上で重要な要素となる。

2. 代表的な手詰まりの形

まずは推論によって「取ってはいけない牌」を見つけるために必要な、残した場合に手詰まりになる形を概説する。
なお、ここで挙げているのはあくまで代表的な形のみであり、他にも組み合わせによって様々な手詰まりの形があり得る。

2.1 縦かぶり


最も単純な手詰まり形で、唯一1種類の牌のみで手詰まりになる形。
解除するには上の牌から順に取っていくしかないので、見つけられさえすればむしろ手順が読みやすくなることも多い。

逆に下の牌が完全に隠れていて見えない場所で縦かぶりになっていると、解除は非常に困難になる。
ただし下図の例のように見えていない牌が1つしか無い状況まで取り進められれば縦かぶりを確定できることもあるので、終盤は見えていない牌の残りの数にも注意を払う必要がある。

なお、同種の牌が2カ所で縦かぶりになっている場合は取り方が1通りしかなくなるので手順を安全に確定できるようになる。

2.2 縦入れ子


2種類の牌が互いに逆順で縦に並んでいる形。
2種類の牌のどちらでも解除できるので、図の例だと発で解除できる見込みがあるなら中は残り2枚のペアで取ってもかまわない。

下の牌が完全に隠れていると解除が困難になるのは縦かぶりと同様。下の例では縦かぶりの場合と縦入れ子の場合で手順が変わるため、見えている情報だけでは手順を確定できない。

3種類以上の牌が絡んでいる場合も縦入れ子と呼ぶことがある。構成している牌の種類が増えるほど、発見も困難になっていく。

2.3 横並び


横一列に2種類の牌が2枚ずつ、左右非対称に並ぶ形。横ハマりとも呼ぶ。
一直線に並ぶ場合は最低でも横幅4つ分が必要だが、半分ずれた位置に並ぶ場合は下図のように横幅3でハマりになることもある。

横並びも2種類のいずれか片方の牌のみで解除できる。
ただし、一方の牌が3枚以上一列に並んでいる場合は他方の牌でないと解除できない場合がある。

3種類以上の牌が横並びになる場合は、並び方や牌の選び方によって解除に必要な牌の数が変わる。

横並びの場合も、一部の牌が隠れていると解除が困難になるケースがある。下図の例では横並びと縦かぶりで手順が変わるために手順を確定できない。

2.4 横入れ子


独立した2つの列で2種の牌が逆順で並び、他の牌と組み合わせになることで手詰まりとなる形。
入れ子を構成している牌だけでなく組み合わせになっている牌(図の例では一萬や二萬)からでも解除できるが、長い列の端など手順の起点になる場所に入れ子がある場合は優先して解除する必要がある。

牌が一直線に並んでいる場合、横幅3以下の列だけで手詰まりになることは無いが、横幅5以上の列がある場合は他の列が全て横幅3以下でも手詰まりになることがある。

また、横入れ子の場合は一列に同種の牌が2枚無い場合であっても手詰まりになることがある。

3. 確実に安全な取り方

この項では画面に見えている情報から、推論によって「取ってよい牌」を見つける方法を解説する。

3.1 4枚取る


現状で4枚取れる牌は、全てを安全に取ることができる。
上図の右2つの例のように、1組目の牌を取ることによって2組目の牌が取れるようになる場合も同様である。

1組目の牌を取った後、安全な手順を挟んで2組目の牌が取れるようになる場合も同様に安全である。

また、既に2枚取った牌の残り2枚が取れるようになった場合も、安全に取ることができる。
この場合は、1組目のペアを取ったことを覚えていられるかが重要になる。

3.2 いつ取っても問題の無い1枚を残す


ここでいう「いつ取っても問題の無い牌」とは、以下の2つの条件を両方とも満たす牌をさす。

  1. 取ることができる状態にある
  2. 他の牌を妨害していない
「他の牌を妨害する」というのは、単に他の牌を取れないように塞いでいるというだけでなく、その牌を取らなければ塞がれている牌を安全に取る手順が確定しない、という状況をさす。
安全に取る手順が確定している牌のみを塞いでいる例としては以下のような例がある。これらの例では上列の2枚の中は安全に取れる。

1組目の牌を取ってから安全な手順を挟んだ後に、いつ取っても問題の無い牌が残る場合も同様に安全である。

3.3 他の牌を妨害しない2枚を残す


3.2と違い残り2枚が取れない状態だが、2枚とも他の牌を妨害していない場合は1組目を安全に取ることができる。

1組目の牌を取ってから安全な手順を挟んだ後に、残りの2枚が他の牌を妨害しないようになる場合も同様に安全である。

3.4 同時に取れるようになる2枚を残す


残りの2枚を妨害している牌をどのような手順で取ったとしても必ずその2枚が同時に取れるようになる場合は、現状取れる2枚を安全に取ることができる。

この方法は、「どのような手順で取ったとしても」という部分に注意が必要である。
下図の例は三萬を取ると秋と冬が同時に取れるようになるが、四萬や六萬を取った場合は一方のみが取れるので、春と夏を取る手順は安全にはならない。

3.5 手順が1通りしか無い場合


そもそも現状取れる2枚を取らないと残りの牌が取れるようにならない場合は、現状取れる牌を安全に取ることができる。

特定の手順で取らないと他の牌が要因で手詰まりになる場合も同様である。

3.6 2組目でないと取れない牌がすぐに取れるようになる場合


現状取れる2枚のうち最低1枚を取らないと残り2枚のうち1枚が取れず、取れる2枚を取ると塞がれていた牌がすぐに取れるようになる場合は、取れる2枚を安全に取ることができる。

3.7 片側を妨害されている1段目の牌がすぐに取れるようになる場合


現状取れる2枚が1段目にある残りの1枚の左右の片側を妨害していて、取れる2枚を取ると妨害されていた牌がすぐに取れるようになる場合は、安全に取ることができる。
上図右の例の場合は秋の左側を直接妨害している訳ではないが、冬を取らない限り左側からは取れないので、間接的に妨害しているといえる。

この方法は、「残りの1枚の左右の片側を妨害している」という部分に注意が必要である。
下図の例は春と夏を取ると安全な手順を挟んで秋が取れるようになるが、春と夏が秋の左側を妨害している訳ではない(梅は蘭とペアにして取ることもできる)ので安全な手順にはならない。

なお理論上は、残りの1枚が「1段目にある」という条件を「その牌が含まれる山の中でその牌より低い位置にある全ての牌を安全に取る手順が確定している」という条件に緩和できるが、現実的に2段目以上でそのような状況になることはほとんどない。

3.8 1つの牌が妨害している全ての牌を他の牌が同順に妨害していて、残り2枚をペアで取れない場合


上図左の例では夏がその左の3枚の牌(春、四萬、伍萬の下の牌)を妨害しているが、春もこの3枚の牌を同じ方向から妨害している。また冬と秋が縦かぶりになっていてペアでは取れない状態になっている。この場合には、春と冬を安全に取ることができる。
右端の例では2列目の中がそれぞれ間の3枚の牌を逆側から妨害しているが、間の牌が左右対称に並んでいるためどちらの中も間の牌を同じ順序で妨害していると見なせる。この場合も現状取れる中を安全に取ることができる。

「残り2枚をペアで取れない場合」としているが、正確には残り2枚を取る順序まで確定していないと安全にはならない。
以下の例では秋冬と発が入れ子になっているため春と夏をペアにして取ることができないが、春と夏の順序が確定しないため秋と夏(あるいは秋と春)で取る手は安全にはならない。

3.9 一方から取ると残りの2枚が同時に取れるようになり、他方から取るには現状取れる牌が必要になる場合


上図左の例では上の列を右から取ろうとすると夏と秋が同時に取れるようになり、左から取ろうとすると春を先に取る必要がある。この場合には、春と冬を安全に取ることができる。

正確には「同時に取れるようになる」というだけでなく、「同時に取れるような取り方以外の手順が存在しない」必要がある。
下図の例では夏を右から取るために発を取ると同時に秋が取れるようになるが、三萬を取ると秋だけが先に取れるようになるので、春と冬を取る手順は安全にはならない。

3.10 取ることもできるが、残り1枚も取らないと取れる牌が増えない牌を残せる場合


上図左の例では秋が取れる位置にあるが、右の発を取るには夏も取らなければならない。さらに秋は発とその右側以外に妨害している牌が無い。この場合には、春と冬を安全に取ることができる。

3.11 取ることもできるが、残り1枚を取れるようにしないと取れる牌が増えない牌を残せる場合


上図の例では一索を取らないと夏を取れるようにならないが、この一索を取らないと秋を取った後に取れる牌が増えない。この場合には春と冬を安全に取ることができる。

3.12 その他の組み合わせ

ここまで様々な取り方を挙げてきたが、これらは全て以下の条件の組み合わせになっている。

  1. 取ることができる、もしくは1組目のペアを取ることによって取れるようになる
  2. 1組目のペアの少なくとも片方を取らないと取れない
  3. 残す牌が他の牌を妨害しない
  4. 同種の別の牌を取らないと、もしくは取れるようにしないと取れる牌が増えない
  5. 取ることによって取れるようになる牌が1組目のペアの片方を取ることによって取れる牌に含まれる
  6. 残り2枚をどのような手順で取ろうとしても、必ず1組目のペアを取る手順が安全条件を満たすようになる
  7. 左から取る時と右から取る時でそれぞれ別の条件が成り立つ
ほかにも組み合わせによって多様な取り方が考えられる。
具体的には以下のような例がある。

b+c
g{b,c}+c
d+d
d+d
g{f(a+a),d+d}
g{d+d,b+b}
e+e+a
f(a+c|a+d)

3.13 安全手順のもう少し詳しい説明

同種の牌4枚のうち、先に取る牌2枚に数字の1、後に取る2枚に2を割り当てることを考える。
先に取ろうとしている牌をyと~y、残りの2枚をxと~xとすると、3.12のa~eは以下のように表現できる。
 a(x)   → x≦~x     [xを取ることができる、もしくは1組目のペアを取ることで取れるようになる]
 b(x,y) → y<x      [yを取らないとxを取れない]
 c(x)   → x=2      [xが他の牌を妨害しない]
 d(x)   → ~x≦x     [~xを取らないと、もしくは取れるようにしないとxを取っても取れる牌が増えない]
 e(x,y) → y≦x      [xを取ることによって取れるようになる牌がyを取ることによって取れる牌に含まれる]
これらを組み合わせてy=~yになるなら、yと~yのペアは安全に取ることができる。

4. 比較的安全な取り方を見つける方法

2項3項では確実な手法を挙げてきたが、現実の配列ではほとんどの場合こうした確実な手法のみでは手順を確定できない。
そのため確実とはいえないものの比較的安全といえる手法を考えていく必要があるが、そのような手法は配列生成ロジックの特徴によって有効性が変わるため、どの作品にも必ず利用できるような手法というのは原理的には存在し得ない。例えば高確率で縦かぶりを生成するようなロジックであれば高い山を優先して崩す戦略が有効になるだろうが、高確率で横入れ子を生成するようなロジックであれば横に長い列を優先した方がいいだろう。
この項では、どの作品にも通用するとは言えないが、対象としている作品に通用する戦略を探る上で候補となりうる手法をいくつか挙げることとする。

4.1 取ることのメリットを評価して取る

下図の例では東南西北のどの牌も取れるが、それぞれの牌ごとにメリットは大きく異なる。

東は取ると一萬が取れるようになる上、東の下にある牌も明らかになる。一萬も取ると東の下にある牌と二萬の左側が開くため、一番上の列を大きく崩せる可能性が高い。
南は取ると下に隠れている牌が明らかになる上、その牌のペアが取れる位置にあるならその牌も取れるようになる。更に右隣の中も取れる状態になっているので、下に隠れている牌次第で手順を進められる可能性がある。
西は取ると下に隠れている牌が明らかになるが、下にある牌を直ちに取れる訳ではないので取るメリットはやや小さい。しかし下の牌は左右を九萬に挟まれているため、西を取っておくことには横並びによるハマりを検出しやすくなるメリットがある。
北は下に隠れている牌が既に明らかになっている上に四萬のペアになる牌が見えていないため、手順を考える上では取るメリットは全くない。ただし取ることによってタイマーを回復したり、卓上の牌を減らすことによって全体を見通しやすくするなど、時間を節約する目的でのメリットは考えられる。

意図的に手順を作るようなロジックでは一見取るメリットが小さい牌の下に重要な牌を隠すことが考えられるためメリットの大きさだけで手順を判断できる訳ではないが、判断基準の一つにはなり得る。

4.2 より多くの牌を妨害している牌を取る

乱数性の高いロジックであれば、高い山の頂上や横に長い島の端のように多くの牌を妨害している牌を優先して取ることは、確率的にハマりを解除する可能性が高い着手と言える。
意図的に手順を作るようなロジックの場合は単純に妨害している牌の多寡では手順を選べないが、左右の端までつながるような列の一端などは手順上早い段階で取りにいく可能性が高くなる。

4.3 同じ順序で並んでいる場所を探す

意図的に手順を作るようなロジックの場合、限られた場所に一連の手順が集中することがしばしばある。このような場合、図のような感じに複数の牌が同じ順序で取れるように並ぶことになる。

想定手順通りに手を進められているなら、こうした場所はかなりの高確率で安全に取れることになる。
また、乱数性の高いロジックであっても地形によってはこうした並びになることがある。特に面の序盤ではこういう場所を取らざるを得ない配列も多いので、狙っていく価値はある。

4.4 ハマりを構成している牌をまとめて取る

下図の例では中と発が縦入れ子になっているが、あわてて現状取れる中を取ってしまうと九索と中の横並びが残ってしまう。

ハマりを構成している中と発をどちらも4枚とも取るように考えると必然的に九索を取る手順も考えることになるため、視界に入っていないハマりについても自然と解除できるようになる。

4.5 1つの列に同種の牌が2枚以上ある牌に注目する

横に長い列に同種の牌が2枚ある場合、もしその牌をペアにして取るのであれば、その牌の外側にある牌については取り順が決まることになる。もしペアにしないのであれば、その牌の残りの2枚はペアにして取れないことになる。
その時点でどちらの取り方にするか決められないとしても、手順を考える上でのヒントになる可能性が高い。

一列に同種の牌が3枚以上ある場合は、その牌の外側にある牌は無条件で取り順が決まることになるため、より強いヒントになる。

また横に短い列に同種の牌が2枚ある場合は、その2枚かあるいはどちらか1枚を安全に残せる可能性が高くなるので、その牌の残り2枚の取り方を考える上でのヒントになりやすい。

4.6 4枚取れそうな牌の手順を考える

意図的に手順を作るロジックの場合、同種の牌が4枚とも取れそうな位置に見えているということは、想定手順上どちらのペアも早い段階で取ることになる可能性が高いといえる。
4枚とも取れるのであればその牌については手順を考慮する必要も無くなるので、安全に手を進めやすくなる。

作品によっては難易度調整のため意図的に1組目と2組目のペアを想定手順上近いタイミングで取る確率が高くなるようにしていることもあるので、そのような作品では特に有効な手段となる。

4.7 残り1枚を待つ必要の無い状況での決断

以下の図では中が3枚とも2段目にあって真下の牌を完全に隠していて、そのうち1枚は真下の牌以外は妨害していない。

このような状況では他の牌を取り進めることによって残り1枚が見えたとしても取る順序に影響を与えることが無いので、基本的には左上の2枚を取ってしまって良い。
もちろん右下の中が縦かぶりの場合には手詰まりになってしまうが、少なくとも見えている情報だけでは他の中にも縦かぶりの可能性が同等程度にあるためあえて右下の中を選ぶことに優位性が無い。
もちろん面が始まる時に残り1枚の位置が確認できていたり、配列生成ロジックのクセから残り1枚の位置が推定できているならその位置に合わせて取り進めれば良い。


戻る