ソリティアのクリア率は何で決まるのか:配り方と選択
遊びを見つける執筆にClaudeを使用しています。

ソリティア(ここでは一人で遊ぶ代表的な形の、7列の場札と山札を使うクロンダイク型を想定します)で負けたとき、「配りが悪かった」と「あの手が悪かった」のどちらだったのか、振り返って区別できているでしょうか。どちらも一理あるので、感覚で言い合うほど話が曖昧になります。 この問いは、記録の取り方を変えると切り分けられます。同じ配りを、遊び方を変えて何度か遊び、結果を並べるのです。配りが同じなら、結果の差は選択の差です。どの遊び方でも勝てない配りがあるなら、それは配りの重さを疑う手がかりになります。 この記事は結果を報告するものではなく、読者が自分の手元で行う分析の設計書です。札順を固定する方法、記録する単位、結果の読み方、起こりやすい誤りを順に見ていきます。
この記事の目次
クリア率を「配りの上限」と「取りこぼし」に分ける
クリア率を二つに分けて考えてみます。一つ目は、その配りが勝てる配りかどうかです。ソリティアには、どんな順序で手を選んでも勝てない配りが存在することが知られています。二つ目は、勝てる配りだったときに、自分がそれを拾えたかどうかです。
実際のクリア率 = 勝てる配りの割合 × そのうち自分が拾えた割合前者は運の領域で、遊ぶ人の腕では動きません。後者が選択の領域で、練習や方針で動く余地があります。「クリア率を上げたい」という願いは、実際には後者を伸ばしたいという意味です。前者の割合を自分で変えることはできません。
もう一つ注意が必要なのは、山札と伏せ札の中身が見えないことです。見えない札があるので、選択の良し悪しは遊んでいる最中には判定できません。結果を見てから「別の手なら勝てた」と言えても、その時点では分からなかったはずです。選択の評価は、情報が足りなかったせいなのか、読みが甘かったせいなのかを分けて考える必要があります。そこで、札順を知った状態で遊ぶ方法が役に立ちます。
準備:配りを固定して、再現できるようにする
分析の前提は、同じ配りを何度でも作れることです。方法は三つあります。
- 実物のトランプ:よく切った直後に、山の上から順に札を書き写してから配ります。あとで同じ順に並べ直せば再現できます。52枚の書き写しは手間ですが、確実です。
- 配り番号を指定できるアプリ:番号を控えておけば同じ配りに戻れます。ただし、同じ番号が別のアプリで同じ配りになるとは限りません。使うアプリを一つに決めておきます。
- 自作の配りシート:次の短いコードは、番号から札順を作って、列ごとの配りと山札を表示します。保存してブラウザで開くだけで動き、外部通信はありません。
<!doctype html>
<meta charset="utf-8">
<pre id="o"></pre>
<script>
function rng(s){return function(){s|=0;s=s+0x6D2B79F5|0;
let t=Math.imul(s^s>>>15,1|s);
t=t+Math.imul(t^t>>>7,61|t)^t;
return((t^t>>>14)>>>0)/4294967296}}
function deal(seed){
const S=['♠','♥','♦','♣'];
const R=['A','2','3','4','5','6','7','8','9','10','J','Q','K'];
const d=[];for(const s of S)for(const r of R)d.push(s+r);
const f=rng(seed);
for(let i=d.length-1;i>0;i--){
const j=Math.floor(f()*(i+1));[d[i],d[j]]=[d[j],d[i]];}
return d;
}
function show(seed){
const d=deal(seed);let k=0,out='配り番号 '+seed+'\n';
for(let c=1;c<=7;c++){
const col=d.slice(k,k+c);k+=c;
out+='列'+c+'(伏せ'+(c-1)+'枚)表: '+col[c-1]+' 全体: '+col.join(' ')+'\n';}
return out+'山札(上から): '+d.slice(k).join(' ');
}
document.getElementById('o').textContent=show(287);
</script>末尾の 287 を書き換えると別の配りになります。列に1枚から7枚を配り、残りの24枚が山札です。各列の最後の札が表向きで、それ以外は伏せ札として扱います。出力を紙に写して番号とともに保管しておけば、何度でも同じ配りを並べられます。
手順:一つの配りを三つの遊び方で遊ぶ
集計の単位は「配り1つ」です。1配りにつき1行の記録を作り、次の三つの遊び方の結果を横に並べます。
- 普段どおり(A):札順を見ずに、いつもの感覚で遊びます。
- 方針固定(B):事前に方針を一つ決めて、それだけに従います。たとえば「伏せ札を開ける手があれば、山札をめくる前にまずそれを選ぶ」のような一文にします。迷う場面でも方針を優先します。
- 全札公開(C):配りシートを見て、伏せ札と山札の順を知ったうえで、時間をかけて遊びます。
各遊び方の結果は「勝ち/負け」で記録します。加えて、負けのときは終了時点で土台(Aから順に積む場所)に上がった札の枚数を書きます。勝ち負けだけでは見えない、惜しさの度合いを読めるからです。
迷った場面の数も数えます。「合法な手が2つ以上あって、どれにするか考えた場面」を1回と数え、1配りあたりの回数を残します。この数が多い配りほど選択の影響が大きいはずです。仮説として検証できます。
配りの数は、20配り以上を目安にします。ただし20配りでは、1配りの違いが割合で5ポイント分動きます。数字が細かく動くのは自然なことです。結果は優劣の断定ではなく、傾向として読むほうが安全です。
引く枚数(山札から1枚ずつか、3枚ずつか)、山札を何周まで回してよいか、元に戻す操作を許すかは、最初に決めて全配りで揃えます。途中で変えると、比較の土台が崩れます。
結果の読み方:4つの組み合わせ
1配りごとに、AとCの結果から次のように読みます。
- Cで勝ち、Aで負け、読み方:勝てる配りだったのに拾えなかった例です。選択の取りこぼしを示します。
- CもAも勝ち、読み方:比較的素直な配りだった可能性があります。
- CもAも負け、読み方:配りが重い可能性があります。ただし断定はできません(下記)。
- Aで勝ち、Cで負け、読み方:Cの熟考が足りなかったか、記録の誤りの可能性があります。
「CもAも負け」を配りのせいと断定できないのは、Cで負けたことが「勝てない配り」の証明にはならないからです。自分が見つけられなかっただけかもしれません。勝てると示すには、実際に勝つ手順が一つあれば足ります。勝てないと示すには、すべての手の分岐を尽くす必要があります。その区別を心に留めておけば、結論を急がずに済みます。
最後の行はチェックにも使えます。Cはほかより条件が良いので、Aで勝てた配りでCが負けるのは通常は考えにくい状況です。この行が増えるなら、Cを雑に遊んでいないかを見直します。
集計は次のように進めます。
- 「Cで勝った配り」の数を分母にして、そのうちAで勝てた配りの割合を出します。これが選択で拾えている割合の目安です。
- 「Cで勝った配り」を全配り数で割ると、勝てる配りの割合の目安が出ます。これは運の側の数字です。
- BがAより拾えているかどうかは、同じ分母で比べます。差が数配り分なら、偶然の幅の中かもしれません。
起こりやすい誤りと、避け方
同じ配りを覚えてしまう。 同じ配りを続けて三回遊ぶと、二回目以降は展開を覚えています。対策は二つです。Cは最後に遊び、AとBは順番を配りごとに入れ替えます。AとBの間は日をあけます。
方針が曖昧で、Bが日によって変わる。 方針は一文で書き、迷った場面の判断も事前に決めておきます。決められない場面が出たら、その場面そのものを記録します。
選択の場面を数えるのを忘れる。 遊んでいる最中は、記録に気が回りません。終了後に思い出して書くと数がぶれるので、盤面の写真やメモを手順の切れ目で残すと確実です。
負けの原因を後から決めてしまう。 負けた瞬間は、直前の手が悪かったように見えます。しかし、本当の分かれ目はもっと前だった、ということもあります。原因の推測は、勝敗の集計とは別の欄に書きます。
短時間でCを打ち切る。 全札公開のCは、時間をかけるほど精度が上がります。時間の上限(たとえば1配り何分まで)を決めておき、全配りで同じにします。
次の行動
まず配りシートで5つの番号を作り、1つ目の配りをAで遊んで勝敗と土台の枚数を記録してみてください。5配り分のAがそろったら、同じ番号でBとCに進みます。20配りの表ができたとき、「運の側の割合」と「選択で拾えた割合」のどちらが大きいかが、自分の数字として見えてきます。

