← All Duels

claude-sonnet-4-5-20250929_vs_deepseek-reasoner_20260124_192732.jsonl — 10 puzzles

claude-sonnet-4-5-20250929
0
vs
deepseek-reasoner
1
#1 Solved
def mystery(x):
    s = str(x)
    if len(s) < 2:
        return False
    # Check if palindrome
    if s != s[::-1]:
        return False
    # Check if sum of digits is prime
    digits = [int(c) for c in s if c.isdigit()]
    if not digits:
        return False
    digit_sum = sum(digits)
    if digit_sum < 2:
        return False
    for i in range(2, int(digit_sum**0.5) + 1):
        if digit_sum % i == 0:
            return False
    return True
11
"11"
Proposer: claude-sonnet-4-5-20250929 Solver: deepseek-reasoner
0 vs 0
#2 Solved
def mystery(x):
    s = str(x)
    if len(s) != 9:
        return False
    if not s.isdigit():
        return False
    n = int(s)
    if n < 2:
        return False
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            return False
    a, b = 0, 1
    idx = 1
    while b < n:
        a, b = b, a + b
        idx += 1
    if b != n:
        return False
    if idx < 2:
        return False
    for i in range(2, int(idx**0.5) + 1):
        if idx % i == 0:
            return False
    dsum = sum(int(c) for c in s)
    if dsum < 2:
        return False
    for i in range(2, int(dsum**0.5) + 1):
        if dsum % i == 0:
            return False
    return True
433494437
433494437
Proposer: deepseek-reasoner Solver: claude-sonnet-4-5-20250929
0 vs 0
#3 Solved
def mystery(x):
    s = str(x)
    if not s.isdigit():
        return False
    if len(s) < 3:
        return False
    
    n = int(s)
    digit_sum = sum(int(c) for c in s)
    
    if n != digit_sum ** 3:
        return False
    
    if digit_sum < 4:
        return False
    
    is_prime = True
    if digit_sum < 2:
        is_prime = False
    for i in range(2, int(digit_sum**0.5) + 1):
        if digit_sum % i == 0:
            is_prime = False
            break
    
    if is_prime:
        return False
    
    return True
512
5832
Proposer: claude-sonnet-4-5-20250929 Solver: deepseek-reasoner
0 vs 0
#4 Solved
def mystery(x):
    # Convert to string to handle both int and str
    s = str(x)
    if not s.isdigit():
        return False
    n = int(s)
    if n < 2:
        return False
    # Must be odd
    if n % 2 == 0:
        return False

    # Helper: primality test
    def is_prime(m):
        if m < 2:
            return False
        if m == 2:
            return True
        if m % 2 == 0:
            return False
        for i in range(3, int(m**0.5) + 1, 2):
            if m % i == 0:
                return False
        return True

    # Not prime (composite)
    if is_prime(n):
        return False

    # Digit sum and product
    digits = [int(c) for c in s]
    digit_sum = sum(digits)

    # Check digit sum is Fibonacci
    def is_fibonacci(num):
        v = 5 * num * num
        def is_sq(k):
            r = int(k**0.5)
            return r * r == k
        return is_sq(v + 4) or is_sq(v - 4)

    if not is_fibonacci(digit_sum):
        return False

    # Digit product perfect square
    prod_val = 1
    for d in digits:
        prod_val *= d
    def is_perfect_square(k):
        if k < 0:
            return False
        r = int(k**0.5)
        return r * r == k
    if not is_perfect_square(prod_val):
        return False

    # Check Carmichael number using Korselt's criterion
    def is_carmichael(num):
        if is_prime(num):
            return False
        factors = []
        temp = num
        p = 2
        while p * p <= temp:
            if temp % p == 0:
                factors.append(p)
                while temp % p == 0:
                    temp //= p
            p += 1 if p == 2 else 2
        if temp > 1:
            factors.append(temp)
        for p in factors:
            if (num - 1) % (p - 1) != 0:
                return False
        return True

    if not is_carmichael(n):
        return False

    # Number of distinct prime factors must be prime
    def distinct_prime_factors(num):
        factors = set()
        temp = num
        p = 2
        while p * p <= temp:
            if temp % p == 0:
                factors.add(p)
                while temp % p == 0:
                    temp //= p
            p += 1 if p == 2 else 2
        if temp > 1:
            factors.add(temp)
        return factors

    factors_set = distinct_prime_factors(n)
    num_factors = len(factors_set)
    if not is_prime(num_factors):
        return False

    return True
6601
6601
Proposer: deepseek-reasoner Solver: claude-sonnet-4-5-20250929
0 vs 0
#5 Solved
def mystery(x):
    s = str(x)
    if not s.isdigit():
        return False
    if len(s) < 2:
        return False
    
    n = int(s)
    
    # Check if it's a Kaprekar number
    n_squared = n * n
    s_squared = str(n_squared)
    
    # Try all possible splits of the squared number
    is_kaprekar = False
    for i in range(1, len(s_squared)):
        left = s_squared[:i]
        right = s_squared[i:]
        left_num = int(left) if left else 0
        right_num = int(right) if right else 0
        if right_num > 0 and left_num + right_num == n:
            is_kaprekar = True
            break
    
    if not is_kaprekar:
        return False
    
    # Number must be odd
    if n % 2 == 0:
        return False
    
    return True
45
297
Proposer: claude-sonnet-4-5-20250929 Solver: deepseek-reasoner
0 vs 0
#6 Solved
def mystery(x):
    s = str(x)
    # Must be all digits
    if not s.isdigit():
        return False
    
    # Palindrome check
    if s != s[::-1]:
        return False
    
    # Number of digits prime
    num_digits = len(s)
    if num_digits < 2:
        return False
    def is_prime(n):
        if n < 2:
            return False
        if n == 2:
            return True
        if n % 2 == 0:
            return False
        for i in range(3, int(n**0.5) + 1, 2):
            if n % i == 0:
                return False
        return True
    if not is_prime(num_digits):
        return False
    
    # Sum of digits prime
    digits = [int(c) for c in s]
    digit_sum = sum(digits)
    if not is_prime(digit_sum):
        return False
    
    # Product of digits perfect square
    product = 1
    for d in digits:
        product *= d
    if product < 0:
        return False
    root = int(product**0.5)
    if root * root != product:
        return False
    
    # Binary representation palindrome
    n = int(s)
    binary = bin(n)[2:]
    if binary != binary[::-1]:
        return False
    
    # Number of ones in binary prime
    ones = binary.count('1')
    if not is_prime(ones):
        return False
    
    # Number of zeros in binary perfect square
    zeros = binary.count('0')
    root_z = int(zeros**0.5)
    if root_z * root_z != zeros:
        return False
    
    return True
313
313
Proposer: deepseek-reasoner Solver: claude-sonnet-4-5-20250929
0 vs 0
#7 Solved
def mystery(x):
    s = str(x)
    if not s.isdigit():
        return False
    n = int(s)
    if n < 2:
        return False
    
    def is_prime(num):
        if num < 2:
            return False
        if num == 2:
            return True
        if num % 2 == 0:
            return False
        for i in range(3, int(num**0.5) + 1, 2):
            if num % i == 0:
                return False
        return True
    
    # Check if n can be expressed as sum of two cubes in at least two ways
    ways = []
    limit = int(n**(1/3)) + 1
    for a in range(1, limit):
        for b in range(a, limit):
            if a**3 + b**3 == n:
                ways.append((a, b))
    
    if len(ways) < 2:
        return False
    
    # Sum of digits must be prime
    digit_sum = sum(int(c) for c in s)
    if not is_prime(digit_sum):
        return False
    
    # Number must be odd
    if n % 2 == 0:
        return False
    
    # Count divisors - must be a perfect cube
    divisor_count = 0
    for i in range(1, int(n**0.5) + 1):
        if n % i == 0:
            divisor_count += 1
            if i != n // i:
                divisor_count += 1
    
    # Check if divisor_count is a perfect cube
    cube_root = round(divisor_count**(1/3))
    if cube_root**3 != divisor_count:
        return False
    
    return True
1729
1729
Proposer: claude-sonnet-4-5-20250929 Solver: deepseek-reasoner
0 vs 0
#8 Solver Failed
def mystery(x):
    s = str(x)
    if not s.isdigit():
        return False
    n = int(s)
    if n <= 0:
        return False
    # Must be odd
    if n % 2 == 0:
        return False
    # Decimal palindrome
    if s != s[::-1]:
        return False
    # Number of digits prime
    def is_prime(num):
        if num < 2:
            return False
        if num == 2:
            return True
        if num % 2 == 0:
            return False
        for i in range(3, int(num**0.5) + 1, 2):
            if num % i == 0:
                return False
        return True
    num_digits = len(s)
    if not is_prime(num_digits):
        return False
    # Composite (not prime)
    if is_prime(n):
        return False
    # Product of digits perfect square
    digits = [int(c) for c in s]
    prod = 1
    for d in digits:
        prod *= d
    def is_square(k):
        if k < 0:
            return False
        r = int(k**0.5)
        return r * r == k
    if not is_square(prod):
        return False
    # Binary palindrome
    binary = bin(n)[2:]
    if binary != binary[::-1]:
        return False
    # Number of ones and zeros perfect cubes
    ones = binary.count('1')
    zeros = binary.count('0')
    def is_cube(k):
        if k < 0:
            return False
        r = int(round(k ** (1/3)))
        return r ** 3 == k
    if not is_cube(ones):
        return False
    if not is_cube(zeros):
        return False
    return True
585
39993
Proposer: deepseek-reasoner Solver: claude-sonnet-4-5-20250929
0 vs 1
#9 Solved
def mystery(x):
    s = str(x)
    if not s.isdigit():
        return False
    n = int(s)
    if n < 10:
        return False
    
    # Must be odd
    if n % 2 == 0:
        return False
    
    # Helper: check if triangular and return index
    def triangular_index(num):
        # Triangular: num = k(k+1)/2
        # Solving: k = (-1 + sqrt(1 + 8*num)) / 2
        k = int((-1 + (1 + 8*num)**0.5) / 2)
        if k * (k + 1) // 2 == num:
            return k
        return None
    
    k = triangular_index(n)
    if k is None:
        return False
    
    # Triangular index must be even
    if k % 2 != 0:
        return False
    
    # Number must be palindrome
    if s != s[::-1]:
        return False
    
    # Sum of digits must be prime
    def is_prime(num):
        if num < 2:
            return False
        if num == 2:
            return True
        if num % 2 == 0:
            return False
        for i in range(3, int(num**0.5) + 1, 2):
            if num % i == 0:
                return False
        return True
    
    digit_sum = sum(int(c) for c in s)
    if not is_prime(digit_sum):
        return False
    
    # Product of digits must be perfect square
    prod = 1
    for c in s:
        prod *= int(c)
    root = int(prod**0.5)
    if root * root != prod:
        return False
    
    return True
595
595
Proposer: claude-sonnet-4-5-20250929 Solver: deepseek-reasoner
0 vs 1
#10 Solved
def mystery(x):
    s = str(x)
    if not s.isdigit():
        return False
    n = int(s)
    if n < 10:
        return False
    # Odd
    if n % 2 == 0:
        return False
    # Decimal palindrome
    if s != s[::-1]:
        return False
    # Number of digits prime
    def is_prime(num):
        if num < 2:
            return False
        if num == 2:
            return True
        if num % 2 == 0:
            return False
        for i in range(3, int(num**0.5) + 1, 2):
            if num % i == 0:
                return False
        return True
    num_digits = len(s)
    if not is_prime(num_digits):
        return False
    # Composite
    if is_prime(n):
        return False
    # Sum of digits triangular
    digits = [int(c) for c in s]
    digit_sum = sum(digits)
    def is_triangular(num):
        k = int((2 * num) ** 0.5)
        return k * (k + 1) // 2 == num
    if not is_triangular(digit_sum):
        return False
    # Product of digits perfect square
    prod = 1
    for d in digits:
        prod *= d
    def is_perfect_square(num):
        if num < 0:
            return False
        r = int(num ** 0.5)
        return r * r == num
    if not is_perfect_square(prod):
        return False
    # Binary palindrome
    binary = bin(n)[2:]
    if binary != binary[::-1]:
        return False
    # Number of ones in binary is perfect number
    ones = binary.count('1')
    def is_perfect_number(num):
        if num < 2:
            return False
        div_sum = 1
        for i in range(2, int(num ** 0.5) + 1):
            if num % i == 0:
                div_sum += i
                if i != num // i:
                    div_sum += num // i
        return div_sum == num
    if not is_perfect_number(ones):
        return False
    # Number of zeros in binary is perfect square
    zeros = binary.count('0')
    if not is_perfect_square(zeros):
        return False
    return True
717
717
Proposer: deepseek-reasoner Solver: claude-sonnet-4-5-20250929
0 vs 1