← All Duels

deepseek-reasoner_vs_grok-4_20260124_225740.jsonl — 10 puzzles

deepseek-reasoner
0
vs
grok-4
-1
#1 Solved
def mystery(x):
    # Convert to integer if possible
    if isinstance(x, str):
        if not x.isdigit():
            return False
        n = int(x)
    else:
        n = int(x)
    
    # Must be greater than 1,000,000
    if n <= 1000000:
        return False
    
    # Check primality of n
    if n < 2:
        return False
    i = 2
    while i * i <= n:
        if n % i == 0:
            return False
        i += 1
    
    # Check if n is a Fibonacci number using the perfect square test
    a = 5 * n * n
    s1 = int((a + 4) ** 0.5)
    s2 = int((a - 4) ** 0.5)
    if not (s1 * s1 == a + 4 or s2 * s2 == a - 4):
        return False
    
    # Find the index of n in the Fibonacci sequence (F1=1, F2=1)
    fib1, fib2 = 1, 1
    idx = 1
    while fib1 < n:
        fib1, fib2 = fib2, fib1 + fib2
        idx += 1
    if fib1 != n:  # should not happen
        return False
    
    # Check primality of the index
    if idx < 2:
        return False
    j = 2
    while j * j <= idx:
        if idx % j == 0:
            return False
        j += 1
    
    # Check primality of the sum of digits of n
    digit_sum = sum(int(d) for d in str(n))
    if digit_sum < 2:
        return False
    k = 2
    while k * k <= digit_sum:
        if digit_sum % k == 0:
            return False
        k += 1
    
    return True
433494437
433494437
Proposer: deepseek-reasoner Solver: grok-4
0 vs 0
#2 Solved
def mystery(x):
    # Convert to integer if possible
    if isinstance(x, str):
        if not x.isdigit():
            return False
        n = int(x)
    else:
        n = int(x)
    
    # Must be greater than 1,000,000,000
    if n <= 1000000000:
        return False
    
    # Check primality of n
    if n < 2:
        return False
    i = 2
    while i * i <= n:
        if n % i == 0:
            return False
        i += 1
    
    # Check if n is a Fibonacci number using the perfect square test
    a = 5 * n * n
    s1 = int((a + 4) ** 0.5)
    s2 = int((a - 4) ** 0.5)
    if not (s1 * s1 == a + 4 or s2 * s2 == a - 4):
        return False
    
    # Find the index of n in the Fibonacci sequence (F1=1, F2=1)
    fib1, fib2 = 1, 1
    idx = 1
    while fib1 < n:
        fib1, fib2 = fib2, fib1 + fib2
        idx += 1
    if fib1 != n:  # should not happen
        return False
    
    # Check primality of the index
    if idx < 2:
        return False
    j = 2
    while j * j <= idx:
        if idx % j == 0:
            return False
        j += 1
    
    # Check primality of the sum of squares of digits of n
    sum_squares = sum(int(d) ** 2 for d in str(n))
    if sum_squares < 2:
        return False
    k = 2
    while k * k <= sum_squares:
        if sum_squares % k == 0:
            return False
        k += 1
    
    return True
2971215073
2971215073
Proposer: grok-4 Solver: deepseek-reasoner
0 vs 0
#3 Solved
def mystery(x):
    # Convert to integer
    if isinstance(x, str):
        if not x.isdigit():
            return False
        n = int(x)
    else:
        n = int(x)
    
    # Condition: n > 10^9
    if n <= 10**9:
        return False
    
    # Check that n+1 is a power of two
    m = n + 1
    if m <= 0 or (m & (m - 1)) != 0:
        return False
    
    # Get exponent p
    p = m.bit_length() - 1
    
    # Check that p is prime (small)
    if p < 2:
        return False
    i = 2
    while i * i <= p:
        if p % i == 0:
            return False
        i += 1
    
    # Now check that n is indeed 2^p - 1
    if (1 << p) != m:
        return False
    
    # Lucas-Lehmer test for Mersenne prime 2^p - 1
    s = 4
    M = n  # which should be 2^p - 1
    for _ in range(p - 2):
        s = (s * s - 2) % M
    if s != 0:
        return False
    
    # Check sum of digits of n is prime
    digit_sum = sum(int(d) for d in str(n))
    if digit_sum < 2:
        return False
    j = 2
    while j * j <= digit_sum:
        if digit_sum % j == 0:
            return False
        j += 1
    
    return True
2305843009213693951
2305843009213693951
Proposer: deepseek-reasoner Solver: grok-4
0 vs 0
#4 Solved
def mystery(x):
    if isinstance(x, str):
        if not x.isdigit():
            return False
        n = int(x)
    else:
        n = int(x)
    
    if n <= 10**12:
        return False
    
    # Check if n is a perfect square
    s = int(n ** 0.5)
    if s * s != n:
        return False
    
    # Check primality of s
    if s < 2:
        return False
    i = 2
    while i * i <= s:
        if s % i == 0:
            return False
        i += 1
    
    # Compute sums
    ds = str(n)
    digit_sum = sum(int(d) for d in ds)
    sum_squares = sum(int(d) ** 2 for d in ds)
    sum_cubes = sum(int(d) ** 3 for d in ds)
    
    # Check primality of digit_sum
    if digit_sum < 2:
        return False
    k = 2
    while k * k <= digit_sum:
        if digit_sum % k == 0:
            return False
        k += 1
    
    # Check primality of sum_squares
    if sum_squares < 2:
        return False
    m = 2
    while m * m <= sum_squares:
        if sum_squares % m == 0:
            return False
        m += 1
    
    # Check primality of sum_cubes
    if sum_cubes < 2:
        return False
    p = 2
    while p * p <= sum_cubes:
        if sum_cubes % p == 0:
            return False
        p += 1
    
    return True
1000074001369
1000074001369
Proposer: grok-4 Solver: deepseek-reasoner
0 vs 0
#5 Solved
def mystery(x):
    # Convert to integer if possible
    if isinstance(x, str):
        if not x.isdigit():
            return False
        n = int(x)
    else:
        n = int(x)
    
    # Must be greater than 10^11
    if n <= 10**11:
        return False
    
    # Check primality of n
    if n < 2:
        return False
    i = 2
    while i * i <= n:
        if n % i == 0:
            return False
        i += 1
    
    # Check if n is a Lucas number and get its index
    # Lucas sequence: L0=2, L1=1, Ln = Ln-1 + Ln-2 for n>=2
    if n == 2:
        idx = 0
    elif n == 1:
        idx = 1
    else:
        a, b = 2, 1  # L0, L1
        idx = 1
        while b < n:
            a, b = b, a + b
            idx += 1
        if b != n:
            return False
    
    # Check primality of index
    if idx < 2:
        return False
    j = 2
    while j * j <= idx:
        if idx % j == 0:
            return False
        j += 1
    
    # Check primality of sum of digits
    digit_sum = sum(int(d) for d in str(n))
    if digit_sum < 2:
        return False
    k = 2
    while k * k <= digit_sum:
        if digit_sum % k == 0:
            return False
        k += 1
    
    # Check that digit_sum is also a Lucas number
    if digit_sum == 2:
        pass
    elif digit_sum == 1:
        pass
    else:
        a, b = 2, 1
        found = False
        while b <= digit_sum:
            if b == digit_sum:
                found = True
                break
            a, b = b, a + b
        if not found:
            return False
    
    # Check primality of last two digits
    last_two = n % 100
    if last_two < 2:
        return False
    m = 2
    while m * m <= last_two:
        if last_two % m == 0:
            return False
        m += 1
    
    return True
119218851371
119218851371
Proposer: deepseek-reasoner Solver: grok-4
0 vs 0
#6 Solved
def mystery(x):
    # Convert to integer if possible
    if isinstance(x, str):
        if not x.isdigit():
            return False
        n = int(x)
    else:
        n = int(x)
    
    # Must be greater than 10^12
    if n <= 10**12:
        return False
    
    # Find if perfect cube and get cube root
    low = 1
    high = n
    found = False
    m = 0
    while low <= high:
        mid = (low + high) // 2
        cube = mid * mid * mid
        if cube == n:
            found = True
            m = mid
            break
        elif cube < n:
            low = mid + 1
        else:
            high = mid - 1
    if not found:
        return False
    
    # Check primality of m
    if m < 2:
        return False
    i = 2
    while i * i <= m:
        if m % i == 0:
            return False
        i += 1
    
    # Get string representation
    ds = str(n)
    dl = len(ds)
    
    # Check primality of number of digits
    if dl < 2:
        return False
    j = 2
    while j * j <= dl:
        if dl % j == 0:
            return False
        j += 1
    
    # Compute sums
    digit_sum = sum(int(d) for d in ds)
    sum_cubes = sum(int(d) ** 3 for d in ds)
    
    # Check primality of digit_sum
    if digit_sum < 2:
        return False
    k = 2
    while k * k <= digit_sum:
        if digit_sum % k == 0:
            return False
        k += 1
    
    # Check primality of sum_cubes
    if sum_cubes < 2:
        return False
    p = 2
    while p * p <= sum_cubes:
        if sum_cubes % p == 0:
            return False
        p += 1
    
    return True
1002702430729
"1002702430729"
Proposer: grok-4 Solver: deepseek-reasoner
0 vs 0
#7 Solved
def is_prime(n: int) -> bool:
    if n < 2:
        return False
    # small primes
    small_primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
    for p in small_primes:
        if n % p == 0:
            return n == p
    # Miller–Rabin deterministic for n < 2^64
    d = n - 1
    s = 0
    while d % 2 == 0:
        d //= 2
        s += 1
    for a in [2, 325, 9375, 28178, 450775, 9780504, 1795265022]:
        if a % n == 0:
            continue
        x = pow(a, d, n)
        if x == 1 or x == n - 1:
            continue
        for _ in range(s - 1):
            x = (x * x) % n
            if x == n - 1:
                break
        else:
            return False
    return True

def mystery(x):
    # Convert to integer
    if isinstance(x, str):
        if not x.isdigit():
            return False
        n = int(x)
    else:
        n = int(x)

    # Must be greater than 10^13
    if n <= 10**13:
        return False

    # Check that either 3n+1 or 3n-1 is a power of two
    m1 = 3 * n + 1
    m2 = 3 * n - 1
    is_pow1 = m1 > 0 and (m1 & (m1 - 1)) == 0
    is_pow2 = m2 > 0 and (m2 & (m2 - 1)) == 0
    if not (is_pow1 or is_pow2):
        return False

    # Determine which one is the power of two and get the exponent p
    m = m2 if is_pow2 else m1
    p = m.bit_length() - 1   # because m is a power of two

    # Check that p is prime
    if p < 2:
        return False
    for i in range(2, int(p**0.5) + 1):
        if p % i == 0:
            return False

    # Check that n itself is prime
    if not is_prime(n):
        return False

    # Check that the sum of decimal digits of n is prime
    digit_sum = sum(int(d) for d in str(n))
    if digit_sum < 2:
        return False
    for i in range(2, int(digit_sum**0.5) + 1):
        if digit_sum % i == 0:
            return False

    # Check that the binary weight (number of 1's) of n is prime
    binary_weight = bin(n).count('1')
    if binary_weight < 2:
        return False
    for i in range(2, int(binary_weight**0.5) + 1):
        if binary_weight % i == 0:
            return False

    return True
768614336404564651
768614336404564651
Proposer: deepseek-reasoner Solver: grok-4
0 vs 0
#8 Sample Solution Wrong
def is_prime(n: int) -> bool:
    if n < 2:
        return False
    # small primes
    small_primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
    for p in small_primes:
        if n % p == 0:
            return n == p
    # Miller–Rabin deterministic for n < 2^64
    d = n - 1
    s = 0
    while d % 2 == 0:
        d //= 2
        s += 1
    for a in [2, 325, 9375, 28178, 450775, 9780504, 1795265022]:
        if a % n == 0:
            continue
        x = pow(a, d, n)
        if x == 1 or x == n - 1:
            continue
        for _ in range(s - 1):
            x = (x * x) % n
            if x == n - 1:
                break
        else:
            return False
    return True

def find_sqrt(n):
    if n < 0:
        return None
    low = 0
    high = n + 1
    while low < high:
        mid = (low + high) // 2
        sq = mid * mid
        if sq == n:
            return mid
        elif sq < n:
            low = mid + 1
        else:
            high = mid
    return None

def mystery(x):
    # Convert to integer if possible
    if isinstance(x, str):
        if not x.isdigit():
            return False
        n = int(x)
    else:
        n = int(x)
    
    # Must be greater than 10^15
    if n <= 10**15:
        return False
    
    # Check if perfect square and get square root
    s = find_sqrt(n)
    if s is None:
        return False
    
    # Check if s is perfect square and get fourth root m
    m = find_sqrt(s)
    if m is None:
        return False
    
    # Check primality of m
    if not is_prime(m):
        return False
    
    # Get string representation
    ds = str(n)
    dl = len(ds)
    
    # Check primality of number of digits
    if not is_prime(dl):
        return False
    
    # Compute sums
    digit_sum = sum(int(d) for d in ds)
    sum_cubes = sum(int(d) ** 3 for d in ds)
    
    # Check primality of digit_sum
    if not is_prime(digit_sum):
        return False
    
    # Check primality of sum_cubes
    if not is_prime(sum_cubes):
        return False
    
    return True
10043368719659281
Proposer: grok-4 Solver: deepseek-reasoner
0 vs -1
#9 Solved
def is_prime(n: int) -> bool:
    if n < 2:
        return False
    small_primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
    for p in small_primes:
        if n % p == 0:
            return n == p
    d = n - 1
    s = 0
    while d % 2 == 0:
        d //= 2
        s += 1
    for a in [2, 325, 9375, 28178, 450775, 9780504, 1795265022]:
        if a % n == 0:
            continue
        x = pow(a, d, n)
        if x == 1 or x == n - 1:
            continue
        for _ in range(s - 1):
            x = (x * x) % n
            if x == n - 1:
                break
        else:
            return False
    return True

def mystery(x):
    if isinstance(x, str):
        if not x.isdigit():
            return False
        n = int(x)
    else:
        n = int(x)
    
    if n <= 10**15:
        return False
    
    if not is_prime(n):
        return False
    
    if n == 0:
        index = 0
    elif n == 1:
        index = 1
    else:
        a, b = 0, 1
        index = 1
        while b < n:
            a, b = b, 2 * b + a
            index += 1
        if b != n:
            return False
    
    if index < 2 or not is_prime(index):
        return False
    
    digit_sum = sum(int(d) for d in str(n))
    if digit_sum < 2 or not is_prime(digit_sum):
        return False
    
    last_three = n % 1000
    if last_three < 2 or not is_prime(last_three):
        return False
    
    idx_digit_sum = sum(int(d) for d in str(index))
    if idx_digit_sum < 2 or not is_prime(idx_digit_sum):
        return False
    
    return True
1746860020068409
1746860020068409
Proposer: deepseek-reasoner Solver: grok-4
0 vs -1
#10 Solved
def mystery(x):
    # Convert to integer
    if isinstance(x, str):
        if not x.isdigit():
            return False
        n = int(x)
    else:
        n = int(x)
    
    # Condition: n > 10^18
    if n <= 10**18:
        return False
    
    # Check that n+1 is a power of two
    m = n + 1
    if m <= 0 or (m & (m - 1)) != 0:
        return False
    
    # Get exponent p
    p = m.bit_length() - 1
    
    # Check that p is prime (small)
    if p < 2:
        return False
    i = 2
    while i * i <= p:
        if p % i == 0:
            return False
        i += 1
    
    # Now check that n is indeed 2^p - 1
    if (1 << p) != m:
        return False
    
    # Lucas-Lehmer test for Mersenne prime 2^p - 1
    s = 4
    M = n  # which should be 2^p - 1
    for _ in range(p - 2):
        s = (s * s - 2) % M
    if s != 0:
        return False
    
    # Check sum of digits of n is prime
    digit_sum = sum(int(d) for d in str(n))
    if digit_sum < 2:
        return False
    j = 2
    while j * j <= digit_sum:
        if digit_sum % j == 0:
            return False
        j += 1

    # Check number of digits is prime
    dl = len(str(n))
    if dl < 2:
        return False
    k = 2
    while k * k <= dl:
        if dl % k == 0:
            return False
        k += 1
    
    return True
2305843009213693951
2305843009213693951
Proposer: grok-4 Solver: deepseek-reasoner
0 vs -1