Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

Organization

素数大富豪の初手に関する考察

素数大富豪というトランプゲームが流行っているらしい。
公式ルール

主なルール

  • n枚の手札(ルールにより異なるが7や11などの素数枚が多いらしい)を先に無くした人が勝ち
  • 場に素数を出していく
  • 10と3で103というように2枚出し、3枚出し……と任意の枚数を出すことが可能

従って、初手ですべてのカードを出して勝つことも可能らしい。
(なお、私は実際にプレイしたことがほとんどないためルールの認識が間違っているかもしれない……)

ということで確認する。

素数を作れない自明なパターン

  • 全てのカードが偶数または5
    • どのように並べ替えても2の倍数または5の倍数となる
  • 全てのカードの和が3の倍数
    • どのように並べ替えても3の倍数となる

検証ソース

def is_prime(n):
    """試し割りによる素数判定"""
    assert(isinstance(n, int))
    assert(n > 0)
    if n == 1:
        return False
    if n == 2:
        return True
    divisor = 2
    while divisor ** 2 <= n:
        if n % divisor == 0:
            return False
        divisor += 1
    return True
def is_all_even_or_five(tefuda):
    return all([x % 2 == 0 or x == 5 for x in tefuda])
def is_three_multiple(tefuda):
    return sum(tefuda) % 3 == 0
import random
from collections import defaultdict

result_dict = defaultdict(int)

def can_zendashi(tefuda, precision=10000):
    if is_all_even_or_five(tefuda):
        result_dict['全部偶数か5'] += 1
        return False
    if is_three_multiple(tefuda):
        result_dict['3の倍数'] += 1
        return False
    for _ in range(precision):
        # 適当に並べ替えて素数かどうか判定する
        random.shuffle(tefuda)
        num = int(''.join(list(map(str, tefuda))))
        if is_prime(num):
            result_dict['素数'] += 1
            return True
    result_dict['たぶん無理'] += 1
    return False

適当に1000回ほど回してみた。

{'素数': 678, '全部偶数か5': 8, '3の倍数': 314}

結論

かなり雑に検証したが、およそ2/3の確率で(理論上)ワンターンキルできてしまう。
ジョーカーや山札から手札に加える行為を考慮していないため、上記の確率はさらに上がりそう。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1
Help us understand the problem. What are the problem?