← All Duels

gemini-2.5-flash_vs_gpt-5-mini-2025-08-07_20260124_014423.jsonl — 10 puzzles

gemini-2.5-flash
-3
vs
gpt-5-mini-2025-08-07
0
#1 Solved
import math

def mystery(x):
    # Path for numbers
    if isinstance(x, int):
        if x <= 1:
            return False
        
        # Helper function to check for primality
        def is_prime(n):
            if n < 2: return False
            for i in range(2, int(math.sqrt(n)) + 1):
                if n % i == 0:
                    return False
            return True
        
        if not is_prime(x):
            return False
        
        # Check specific properties of the prime number
        num_set_bits = bin(x).count('1')
        
        # The number must be prime, have exactly 5 set bits in its binary representation,
        # and its remainder when divided by 13 must be 7.
        return num_set_bits == 5 and (x % 13 == 7)
        
    # Path for strings
    elif isinstance(x, str):
        # The string must meet several criteria:
        # 1. Its length must be exactly 7 characters.
        # 2. The sum of the ASCII (ordinal) values of all its characters must be 731.
        # 3. The character at index 3 (the fourth character) must be 'd'.
        # 4. The greatest common divisor (GCD) of the sum of ASCII values and the string's length must be 1.
        
        if len(x) != 7:
            return False
        
        s = sum(ord(c) for c in x)
        
        if s != 731:
            return False
            
        if x[3] != 'd':
            return False
            
        if math.gcd(s, len(x)) != 1:
            return False
            
        return True
        
    # Any other type of input will return False
    return False
"iijdiii"
59
Proposer: gemini-2.5-flash Solver: gpt-5-mini-2025-08-07
0 vs 0
#2 Solved
import hashlib

def mystery(x):
    # Two disjoint branches: numbers and strings. Numbers are effectively blocked
    # by an almost-impossible composite check; strings must match a specific SHA-1.
    if isinstance(x, int):
        # Some arbitrary, strict numeric filter that's extremely unlikely to pass.
        # (keeps the real solution in the string branch)
        if x <= 2:
            return False
        # require x to be a product of three distinct twin primes larger than 1000
        # and also a palindrome in base 7. Very unlikely for typical integers.
        def is_prime(n):
            if n < 2: return False
            if n % 2 == 0:
                return n == 2
            i = 3
            while i * i <= n:
                if n % i == 0:
                    return False
                i += 2
            return True
        # naive factorization up to a modest limit
        factors = []
        n = x
        f = 2
        while f * f <= n and len(factors) < 10:
            if n % f == 0:
                cnt = 0
                while n % f == 0:
                    n //= f
                    cnt += 1
                factors.append((f, cnt))
            f += 1 if f == 2 else 2
        if n > 1:
            factors.append((n, 1))
        # require exactly three distinct prime factors, each > 1000 and pairwise twin primes
        if len(factors) != 3:
            return False
        primes = [p for p, c in factors if c == 1 and p > 1000]
        if len(primes) != 3:
            return False
        # check twin-prime condition
        for p in primes:
            if not (is_prime(p - 2) or is_prime(p + 2)):
                return False
        # check palindrome in base 7
        def is_pal_base(n, base):
            s = []
            while n:
                s.append(n % base)
                n //= base
            return s == s[::-1]
        return is_pal_base(x, 7)

    if isinstance(x, str):
        # Only short ASCII strings considered
        try:
            s = x.encode('utf-8')
        except Exception:
            return False
        # length constraint
        if len(x) != 5:
            return False
        # The central check: SHA-1 must match a specific digest.
        # (This fixes the valid string(s) to the SHA-1 preimage.)
        h = hashlib.sha1(s).hexdigest()
        return h == 'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d'

    # Other types are rejected
    return False
"hello"
'hello'
Proposer: gpt-5-mini-2025-08-07 Solver: gemini-2.5-flash
0 vs 0
#3 Solved
import math

def mystery(x):
    # Helper functions
    def is_prime(n):
        if n < 2: return False
        for i in range(2, int(math.sqrt(n)) + 1):
            if n % i == 0:
                return False
        return True

    def is_perfect_square(n):
        if n < 0: return False
        sqrt_n = int(n**0.5)
        return sqrt_n * sqrt_n == n

    def get_sum_digits_base10(n):
        s = 0
        s_str = str(n) # Convert to string to handle 0 easily, or loop with % 10
        for digit_char in s_str:
            s += int(digit_char)
        return s

    def get_sum_digits_base(n, base):
        if n == 0: return 0
        s = 0
        while n > 0:
            s += (n % base)
            n //= base
        return s
    
    def is_fibonacci(n):
        # A number is Fibonacci if and only if one or both of (5*n^2 + 4) or (5*n^2 - 4) is a perfect square.
        if n < 0: return False
        if n == 0 or n == 1: return True
        return is_perfect_square(5 * n * n + 4) or is_perfect_square(5 * n * n - 4)


    # Path for integers
    if isinstance(x, int):
        # 1. x must be a positive integer, greater than 100.
        if not (x > 100):
            return False
        
        # 2. x must be a perfect square.
        if not is_perfect_square(x):
            return False
        
        # 3. The sum of its digits (base 10) must be a Fibonacci number.
        sum_digits_x = get_sum_digits_base10(x)
        if not is_fibonacci(sum_digits_x):
            return False
            
        # 4. When x is converted to base 6, the sum of its digits in base 6 must be a prime number.
        sum_base6_digits = get_sum_digits_base(x, 6)
        if not is_prime(sum_base6_digits):
            return False
            
        # 5. x must contain the digit '3'.
        if '3' not in str(x):
            return False
            
        return True
        
    # Path for strings
    elif isinstance(x, str):
        # 1. x must be a string of length 7.
        if len(x) != 7:
            return False
            
        # Extract digits and letters, ensuring only lowercase English letters or digits
        digits_in_x = []
        letters_in_x = []
        
        for char in x:
            if char.isdigit():
                digits_in_x.append(int(char))
            elif 'a' <= char <= 'z': # Ensure lowercase English letters only
                letters_in_x.append(char)
            else: # Contains other characters (e.g., uppercase, symbols)
                return False

        # 2. x must contain at least one digit and at least one lowercase English letter.
        if not (digits_in_x and letters_in_x):
            return False
            
        # 3. The sum of the integer values of all digits in x must be a prime number.
        sum_of_digits_value = sum(digits_in_x)
        if not is_prime(sum_of_digits_value):
            return False
            
        # 4. The sum of the ordinal values of all lowercase letters in x must be a perfect square.
        sum_of_letter_ord_values = sum(ord(c) for c in letters_in_x)
        if not is_perfect_square(sum_of_letter_ord_values):
            return False
            
        # 5. The string x must contain the character 'q'.
        if 'q' not in x:
            return False
            
        # 6. The string x when reversed, must be lexicographically smaller than the original string x.
        if x[::-1] >= x:
            return False
            
        return True
        
    # Any other type of input will return False
    return False
"qhhhh11"
"qfgij12"
Proposer: gemini-2.5-flash Solver: gpt-5-mini-2025-08-07
0 vs 0
#4 Solved
import hashlib
import base64

def mystery(x):
    # Reject non-strings quickly
    if not isinstance(x, str):
        return False

    # Must be short printable ASCII
    if len(x) != 5:
        return False
    if any(ord(c) < 32 or ord(c) > 126 for c in x):
        return False

    # Several intertwined checks (all must hold)
    # 1) Sum of ASCII codes
    if sum(ord(c) for c in x) != 532:
        return False

    # 2) Base64 encoding matches a fixed value
    if base64.b64encode(x.encode()).decode() != 'aGVsbG8=':
        return False

    # 3) Known MD5, SHA-1 and SHA-256 digests
    if hashlib.md5(x.encode()).hexdigest() != '5d41402abc4b2a76b9719d911017c592':
        return False
    if hashlib.sha1(x.encode()).hexdigest() != 'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d':
        return False
    if hashlib.sha256(x.encode()).hexdigest() != '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824':
        return False

    # 4) Byte-level numeric constraints
    v = int.from_bytes(x.encode(), 'big')
    # a) specific residue modulo 257 (uses 256 == -1 mod 257 trick)
    if v % 257 != 114:
        return False
    # b) specific popcount
    if bin(v).count('1') != 21:
        return False

    # 5) hex pattern must contain the double-6c sequence
    if '6c6c' not in x.encode().hex():
        return False

    return True
"hello"
'hello'
Proposer: gpt-5-mini-2025-08-07 Solver: gemini-2.5-flash
0 vs 0
#5 Sample Solution Wrong
import math

def mystery(x):
    # Helper functions
    def is_prime(n):
        if n < 2: return False
        for i in range(2, int(math.sqrt(n)) + 1):
            if n % i == 0:
                return False
        return True
    
    def is_perfect_square(n):
        if n < 0: return False
        sqrt_n = int(n**0.5)
        return sqrt_n * sqrt_n == n

    def is_fibonacci(n):
        # A number is Fibonacci if and only if one or both of (5*n^2 + 4) or (5*n^2 - 4) is a perfect square.
        if n < 0: return False
        if n == 0 or n == 1: return True
        return is_perfect_square(5 * n * n + 4) or is_perfect_square(5 * n * n - 4)

    # Path for integers
    if isinstance(x, int):
        # 1. x must be a positive integer, greater than 100.
        if not (x > 100):
            return False
        
        # 2. x must be a prime number.
        if not is_prime(x):
            return False
            
        # 3. The sum of its digits (base 10) must be a Fibonacci number.
        sum_digits_x = sum(int(d) for d in str(x))
        if not is_fibonacci(sum_digits_x):
            return False
            
        # 4. x must contain the digit '1'.
        if '1' not in str(x):
            return False
            
        # 5. The number of set bits in the binary representation of x must be exactly 5.
        if bin(x).count('1') != 5:
            return False
            
        return True
        
    # Path for strings
    elif isinstance(x, str):
        # 1. x must be a string of length 6.
        if len(x) != 6:
            return False
            
        # 2. x must contain only lowercase English letters.
        if not all('a' <= c <= 'z' for c in x):
            return False

        # 3. x must contain exactly two distinct vowels ('a', 'e', 'i', 'o', 'u').
        vowels = {'a', 'e', 'i', 'o', 'u'}
        distinct_vowels_in_x = {c for c in x if c in vowels}
        if len(distinct_vowels_in_x) != 2:
            return False
            
        # 4. The sum of the ordinal values of all characters in x must be a perfect square.
        sum_ord_values = sum(ord(c) for c in x)
        if not is_perfect_square(sum_ord_values):
            return False
            
        # 5. The string x must contain the character 'x' (the letter 'x').
        if 'x' not in x:
            return False
            
        # 6. The character at index 2 (third character) must be lexicographically smaller
        #    than the character at index 3 (fourth character).
        if not (x[2] < x[3]):
            return False
            
        return True
        
    # Any other type of input will return False
    return False
101
Proposer: gemini-2.5-flash Solver: gpt-5-mini-2025-08-07
-1 vs 0
#6 Solved
import math
import hashlib

def mystery(x):
    # Helper: simple deterministic primality (sufficient for moderate sizes)
    def is_prime(n):
        if n < 2:
            return False
        if n % 2 == 0:
            return n == 2
        r = int(math.isqrt(n))
        f = 3
        while f <= r:
            if n % f == 0:
                return False
            f += 2
        return True

    # Two very different branches to confuse searchers.
    # Numeric branch: a short list of tight arithmetic/bitwise constraints.
    if isinstance(x, int):
        # Must be a reasonably large positive integer
        if x <= 1:
            return False

        # Must be prime
        if not is_prime(x):
            return False

        # Must be of the form 2^k - 1 (binary all ones)
        # property: for such numbers x & (x + 1) == 0
        if (x & (x + 1)) != 0:
            return False

        # Let k be the bit-length (for 2^k - 1 this is k)
        k = x.bit_length()

        # Exponent k must itself be prime
        if not is_prime(k):
            return False

        # Decimal digit sum must equal 13 (a small prime constraint)
        if sum(int(d) for d in str(x)) != 13:
            return False

        # Fixed modular residue to further narrow candidates
        if x % 13 != 5:
            return False

        return True

    # String branch: made intentionally extremely restrictive and effectively
    # unreachable to focus the real solution in the numeric branch.
    if isinstance(x, str):
        # require a specific length
        if len(x) != 16:
            return False

        # require printable ASCII only
        if any(ord(c) < 32 or ord(c) > 126 for c in x):
            return False

        # require a sha256 digest that (for practical purposes) has no known preimage
        # (this makes the string branch infeasible to satisfy in practice)
        if hashlib.sha256(x.encode('utf-8')).hexdigest() != '0' * 64:
            return False

        return True

    # All other types fail
    return False
131071
131071
Proposer: gpt-5-mini-2025-08-07 Solver: gemini-2.5-flash
-1 vs 0
#7 Sample Solution Wrong
import math

# Helper functions for the puzzle (defined at module level for efficiency)
def is_prime(n):
    if n < 2: return False
    for i in range(2, int(math.sqrt(n)) + 1):
        if n % i == 0:
            return False
    return True

def is_perfect_square(n):
    if n < 0: return False
    sqrt_n = int(n**0.5)
    return sqrt_n * sqrt_n == n

def get_digits_base(n, base):
    if n == 0: return [0]
    digits = []
    temp_n = n
    while temp_n > 0:
        digits.append(temp_n % base)
        temp_n //= base
    return digits[::-1] # Return in correct order (most significant digit first)

def is_palindrome_base(n, base):
    digits = get_digits_base(n, base)
    return digits == digits[::-1]

def mystery(x):
    # Path for integers
    if isinstance(x, int):
        # 1. x must be a positive integer, greater than 100.
        if not (x > 100):
            return False
        
        # 2. x must be a prime number.
        if not is_prime(x):
            return False
            
        # 3. The sum of its digits (base 10) must be a perfect square.
        sum_digits_x = sum(int(d) for d in str(x))
        if not is_perfect_square(sum_digits_x):
            return False
            
        # 4. The binary representation of x must contain at least two '0's.
        if bin(x).count('0') < 2:
            return False
            
        # 5. x must be a palindrome in base 4.
        if not is_palindrome_base(x, 4):
            return False
            
        return True
        
    # Path for strings
    elif isinstance(x, str):
        # 1. x must be a string of length 8.
        if len(x) != 8:
            return False
            
        # 2. x must contain only lowercase English letters.
        if not all('a' <= c <= 'z' for c in x):
            return False

        # 3. The sum of the ordinal values of all characters in x must be a prime number.
        sum_ord_values = sum(ord(c) for c in x)
        if not is_prime(sum_ord_values):
            return False
            
        # 4. The string must contain exactly three distinct vowels ('a', 'e', 'i', 'o', 'u').
        vowels = {'a', 'e', 'i', 'o', 'u'}
        distinct_vowels_in_x = {c for c in x if c in vowels}
        if len(distinct_vowels_in_x) != 3:
            return False
            
        # 5. The character at index 0 must be 'm'.
        if x[0] != 'm':
            return False
            
        # 6. The string x must be a palindrome when all its vowels are removed.
        x_consonants = "".join(c for c in x if c not in vowels)
        if x_consonants != x_consonants[::-1]:
            return False
            
        return True
        
    # Any other type of input will return False
    return False
211
Proposer: gemini-2.5-flash Solver: gpt-5-mini-2025-08-07
-2 vs 0
#8 Solved
import math

def _is_probable_prime(n: int) -> bool:
    # Deterministic Miller-Rabin for 64-bit integers (works for n < 2^64)
    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
    # write n-1 as d*2^s
    d = n - 1
    s = 0
    while d % 2 == 0:
        d //= 2
        s += 1
    # bases sufficient for determinism on 64-bit integers
    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
        composite = True
        for _ in range(s - 1):
            x = (x * x) % n
            if x == n - 1:
                composite = False
                break
        if composite:
            return False
    return True

def mystery(x):
    # Numeric branch: designed to be extremely narrow (Mersenne-prime style)
    if isinstance(x, int):
        if x <= 1:
            return False

        # must be prime
        if not _is_probable_prime(x):
            return False

        # must be of the form 2^k - 1 (all-ones binary)
        if (x & (x + 1)) != 0:
            return False

        # k is the bit-length (for 2^k - 1 this equals k)
        k = x.bit_length()

        # exponent k must be prime
        if not _is_probable_prime(k):
            return False

        # decimal digit sum must equal a specific prime (tightens candidates)
        if sum(int(d) for d in str(x)) != 73:
            return False

        # fixed residue modulo 13 to further narrow possibilities
        if x % 13 != 1:
            return False

        # require that the number of 1-bits equals k (sanity for 2^k - 1)
        if bin(x).count('1') != k:
            return False

        return True

    # String branch: intentionally infeasible (keeps real solution numeric)
    if isinstance(x, str):
        # must be short printable ASCII
        if len(x) != 16:
            return False
        if any(ord(c) < 32 or ord(c) > 126 for c in x):
            return False
        # require an impossible-to-find fixed SHA-256 (practically unreachable)
        import hashlib
        if hashlib.sha256(x.encode('utf-8')).hexdigest() != '0' * 64:
            return False
        return True

    # other types rejected
    return False
2305843009213693951
2305843009213693951
Proposer: gpt-5-mini-2025-08-07 Solver: gemini-2.5-flash
-2 vs 0
#9 Sample Solution Wrong
import math
import hashlib

# Helper functions for the puzzle
def is_prime(num):
    if num < 2: return False
    for i in range(2, int(math.sqrt(num)) + 1):
        if num % i == 0:
            return False
    return True

def is_perfect_square(n):
    if n < 0: return False
    sqrt_n = int(n**0.5)
    return sqrt_n * sqrt_n == n

def is_fibonacci(n):
    if n < 0: return False
    if n == 0 or n == 1: return True
    # A number is Fibonacci if and only if one or both of (5*n^2 + 4) or (5*n^2 - 4) is a perfect square.
    return is_perfect_square(5 * n * n + 4) or is_perfect_square(5 * n * n - 4)

def get_distinct_prime_factors(num):
    factors = set()
    d = 2
    temp = num
    while d * d <= temp:
        if temp % d == 0:
            factors.add(d)
            while temp % d == 0:
                temp //= d
        d += 1
    if temp > 1:
        factors.add(temp)
    return factors

def get_perfect_power_bases_exponents(num):
    """
    Returns a list of (base, exponent) tuples such that num = base^exponent and exponent > 1.
    This function handles potential floating point inaccuracies for roots.
    """
    if num <= 1:
        return []
    
    pairs = []
    # Maximum possible exponent k for num = n^k is log2(num)
    max_k = int(math.log2(num)) + 1
    
    for k in range(2, max_k):
        # Calculate kth root. Using float power and checking nearest integers for robustness.
        n_root_approx = num**(1.0/k)
        
        # Check integer candidates around the approximate root
        n_candidates = [int(n_root_approx)]
        if n_root_approx - int(n_root_approx) > 0.999999999: # Close to the next integer
            n_candidates.append(int(n_root_approx) + 1)
        elif int(n_root_approx) > 0 and int(n_root_approx)**k > num and n_root_approx - int(n_root_approx) < 0.000000001:
            # If current candidate overshoots due to float precision, check previous integer
            n_candidates.append(int(n_root_approx) - 1)
        
        for n_candidate in set(n_candidates): # Use set to avoid duplicates
            if n_candidate > 1 and n_candidate**k == num:
                pairs.append((n_candidate, k))
                
    return pairs

def mystery(x):
    # Path for integers
    if isinstance(x, int):
        # 1. x must be a positive integer, greater than 1.
        if x <= 1:
            return False
        
        # 2. x must be a palindrome in base 10.
        s_x = str(x)
        if s_x != s_x[::-1]:
            return False
            
        # 3. The sum of its digits (base 10) must be a perfect square.
        sum_digits_x = sum(int(d) for d in s_x)
        if not is_perfect_square(sum_digits_x):
            return False
            
        # 4. x must have exactly two distinct prime factors.
        distinct_factors = get_distinct_prime_factors(x)
        if len(distinct_factors) != 2:
            return False
            
        # 5. x must be a perfect power n^k where k > 1.
        #    And for at least one such representation (n, k):
        #    a. k must be a prime number.
        #    b. n must be a Fibonacci number.
        
        perfect_power_pairs = get_perfect_power_bases_exponents(x)
        
        found_valid_power = False
        for n, k in perfect_power_pairs:
            if is_prime(k) and is_fibonacci(n):
                found_valid_power = True
                break
        
        if not found_valid_power:
            return False
            
        return True
        
    # Path for strings (Red Herring)
    elif isinstance(x, str):
        # This path is designed to be practically unreachable by requiring
        # a specific SHA-256 hash of a long string.
        
        # 1. String must be of a specific length (e.g., 32 characters)
        if len(x) != 32:
            return False
            
        # 2. String must contain only printable ASCII characters
        if not all(32 <= ord(c) <= 126 for c in x):
            return False
            
        # 3. Require a specific SHA-256 digest that has no known preimage
        #    (practically impossible to find x without brute force)
        expected_hash = '0000000000000000000000000000000000000000000000000000000000000000'
        if hashlib.sha256(x.encode('utf-8')).hexdigest() != expected_hash:
            return False
            
        return True
        
    # Any other type of input will return False
    return False
441
Proposer: gemini-2.5-flash Solver: gpt-5-mini-2025-08-07
-3 vs 0
#10 Solved
import hashlib
import base64

def mystery(x):
    # Numeric branch: intentionally made effectively impossible to satisfy in practice.
    # It contains a condition checking for an all-zero SHA-256 of the decimal representation,
    # which has no known preimage, so the real solution is in the string branch.
    if isinstance(x, int):
        if x <= 1:
            return False
        # quick oddness check
        if x % 2 == 0:
            return False
        # an infeasible cryptographic condition (keeps numeric branch unreachable)
        if hashlib.sha256(str(x).encode()).hexdigest() != '0' * 64:
            return False
        return True

    # String branch: multiple tight checks (all must hold)
    if isinstance(x, str):
        # 1) length constraint
        if len(x) != 3:
            return False

        # 2) lowercase alphabetic only
        if not x.isalpha() or not x.islower():
            return False

        # 3) sum of ASCII values
        if sum(ord(c) for c in x) != 294:
            return False

        # 4) known cryptographic digests (fixes the preimage to a tiny set)
        if hashlib.md5(x.encode()).hexdigest() != '900150983cd24fb0d6963f7d28e17f72':
            return False
        if hashlib.sha1(x.encode()).hexdigest() != 'a9993e364706816aba3e25717850c26c9cd0d89d':
            return False
        if hashlib.sha256(x.encode()).hexdigest() != 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad':
            return False

        # 5) base64 encoding check (redundant but narrows candidates further)
        if base64.b64encode(x.encode()).decode() != 'YWJj':
            return False

        return True

    # Other types rejected
    return False
"abc"
'abc'
Proposer: gpt-5-mini-2025-08-07 Solver: gemini-2.5-flash
-3 vs 0