← All Duels

gemini-2.5-pro_vs_gemini-2.5-flash_20260124_000136.jsonl — 10 puzzles

gemini-2.5-pro
-3
vs
gemini-2.5-flash
-5
#1 Solved
def mystery(x):
    """
    This function evaluates a value x based on a hidden set of rules.
    It only returns True for a very specific subset of non-negative integers.
    """
    if not isinstance(x, int) or x < 0:
        return False

    try:
        s = str(x)
        n = len(s)

        # First condition
        if s != s[::-1]:
            return False

        # Second condition
        if n < 2 or any(n % i == 0 for i in range(2, int(n**0.5) + 1)):
            return False

        # Third condition
        digit_sum = sum(int(d) for d in s)
        if digit_sum <= 0 or (digit_sum**0.5) % 1 != 0:
            return False

    except (ValueError, TypeError):
        return False

    return True
22
121
Proposer: gemini-2.5-pro Solver: gemini-2.5-flash
0 vs 0
#2 Sample Solution Wrong
def mystery(x):
    """
    This function evaluates a value x based on a hidden set of rules.
    It returns True only for a very specific subset of positive integers.
    """
    def is_prime(num):
        if num < 2:
            return False
        for i in range(2, int(num**0.5) + 1):
            if num % i == 0:
                return False
        return True

    def prime_factorize(num):
        factors = {}
        d = 2
        temp = num
        while d * d <= temp:
            while temp % d == 0:
                factors[d] = factors.get(d, 0) + 1
                temp //= d
            d += 1
        if temp > 1:
            factors[temp] = factors.get(temp, 0) + 1
        return factors

    if not isinstance(x, int) or x <= 0:
        return False

    s = str(x)

    # Condition 1: Digit-based property
    # The product of the digits must be strictly greater than the sum of the digits,
    # and their difference must be a prime number.
    prod_digits = 1
    sum_digits = 0
    for digit_char in s:
        digit = int(digit_char)
        if digit == 0:
            # If any digit is 0, the product of digits will be 0.
            # This makes prod_digits - sum_digits negative (since sum_digits >= 1 for x > 0),
            # which will fail the is_prime check (primes are > 1).
            # So, numbers with a '0' digit are implicitly excluded.
            prod_digits = 0
            break
        prod_digits *= digit
        sum_digits += digit

    if prod_digits <= sum_digits:
        return False

    diff = prod_digits - sum_digits
    if not is_prime(diff):
        return False

    # Condition 2: Binary representation property
    # The binary representation of x must contain the substring "101",
    # and the total count of set bits ('1's) must be odd.
    bin_x = bin(x)[2:]  # Remove "0b" prefix
    if "101" not in bin_x:
        return False

    if bin_x.count('1') % 2 == 0:
        return False

    # Condition 3: Number theory property ("powerful number")
    # x must be a "powerful number", meaning that for every prime factor p of x,
    # p^2 must also be a factor of x (i.e., every prime factor has an exponent of at least 2).
    factors = prime_factorize(x)
    for p, exp in factors.items():
        if exp < 2:
            return False

    return True
25
Proposer: gemini-2.5-flash Solver: gemini-2.5-pro
0 vs -1
#3 Sample Solution Wrong
import zlib
import math

def mystery(x):
    """
    This function evaluates a value x based on a hidden set of rules.
    It returns True only for a very specific subset of strings.
    """
    if not isinstance(x, str) or len(x) <= 1:
        return False

    # Condition 1: A special kind of palindrome property
    MAPPING = {
        'b': 'd', 'd': 'b',
        'p': 'q', 'q': 'p',
        'n': 'u', 'u': 'n',
        'm': 'w', 'w': 'm',
        'o': 'o', 's': 's',
        'x': 'x', 'z': 'z',
    }
    try:
        # Build the mirrored-and-reversed string
        mirrored_reversed = "".join([MAPPING[c] for c in x[::-1]])
        if x != mirrored_reversed:
            return False
    except KeyError:
        # x contains characters not in our special alphabet
        return False

    # Condition 2: A property based on character composition
    n_unique = len(set(x))
    if n_unique == 0:
        return False
    # A number k is triangular if and only if 8k + 1 is a perfect square.
    val = 8 * n_unique + 1
    sqrt_val = int(math.sqrt(val))
    if sqrt_val * sqrt_val != val:
        return False

    # Condition 3: A property based on the string's checksum
    try:
        checksum = zlib.crc32(x.encode('utf-8'))
        if checksum < 2:
            return False
        # Primality test for the checksum
        for i in range(2, int(math.sqrt(checksum)) + 1):
            if checksum % i == 0:
                return False
    except Exception:
        return False

    return True
'bxd'
Proposer: gemini-2.5-pro Solver: gemini-2.5-flash
-1 vs -1
#4 Sample Solution Wrong
import zlib
import math

def mystery(x):
    """
    This function evaluates a value x based on a hidden set of rules.
    It returns True only for a very specific subset of strings.
    """
    if not isinstance(x, str) or len(x) == 0:
        return False

    # --- Condition 1: Character composition and "semi-palindrome" ---
    # The string must contain only alphanumeric characters.
    # It must contain at least one digit and at least one letter.
    # If all digits are removed (and case ignored), the remaining letters must form a palindrome.
    has_digit = False
    has_letter = False
    alphanum_chars = []
    for char in x:
        if not char.isalnum():
            return False # Only alphanumeric characters allowed
        if char.isdigit():
            has_digit = True
        elif char.isalpha():
            has_letter = True
        alphanum_chars.append(char)

    if not (has_digit and has_letter):
        return False

    letters_only = "".join([c for c in alphanum_chars if c.isalpha()]).lower()
    if letters_only != letters_only[::-1]:
        return False

    # --- Condition 2: Numerical property from digits ---
    # Extract all digits from the string, concatenate them to form an integer N.
    # N must be a "powerful number". A number is powerful if for every prime factor p of N, p^2 also divides N.
    # (i.e., every prime factor has an exponent of at least 2 in its prime factorization).
    digits_str = "".join([c for c in x if c.isdigit()])
    if not digits_str: # Should already be caught by has_digit check, but for robustness
        return False
    
    try:
        n_val = int(digits_str)
    except ValueError:
        return False

    if n_val <= 1: # Powerful numbers are typically defined for positive integers, and 1 is a special case.
        return False

    def is_powerful(num):
        if num <= 1: return False
        temp = num
        d = 2
        while d * d <= temp:
            if temp % d == 0:
                count = 0
                while temp % d == 0:
                    count += 1
                    temp //= d
                if count < 2: # Exponent must be at least 2
                    return False
            d += 1
        if temp > 1: # If a prime factor remains, its exponent was 1, so not powerful.
            return False
        return True

    if not is_powerful(n_val):
        return False

    # --- Condition 3: Checksum property ---
    # The zlib.adler32 checksum of the string (encoded as UTF-8) must have an equal number of '0's and '1's
    # in its 32-bit binary representation.
    try:
        checksum = zlib.adler32(x.encode('utf-8')) & 0xFFFFFFFF # Ensure unsigned 32-bit value
        if checksum == 0: # Avoid edge case for 0
            return False
        
        # Pad binary representation to 32 bits to correctly count 0s and 1s
        bin_checksum = bin(checksum)[2:].zfill(32)
        
        count_zeros = bin_checksum.count('0')
        count_ones = bin_checksum.count('1')
        
        if count_zeros != count_ones:
            return False
            
    except Exception:
        return False

    return True
"madam100"
Proposer: gemini-2.5-flash Solver: gemini-2.5-pro
-1 vs -2
#5 Sample Solution Wrong
import hashlib

def mystery(x):
    """
    This function evaluates a value x based on a hidden set of rules.
    It returns True only for a very specific subset of strings.
    """
    if not isinstance(x, str) or not x:
        return False

    # --- Condition 1: Lexical Structure ---
    # Must be composed of only lowercase English letters.
    if not x.isascii() or not x.islower():
        return False

    # Must alternate between vowels and consonants.
    vowels = "aeiou"
    try:
        is_vowel_turn = x[0] in vowels
        for char in x[1:]:
            is_current_char_vowel = char in vowels
            if is_current_char_vowel == is_vowel_turn:
                return False # Failed to alternate
            is_vowel_turn = not is_vowel_turn
    except IndexError:
        return False # Should be caught by the initial check, but for safety.

    # --- Condition 2: Character Composition ---
    # The set of unique characters used must satisfy a specific profile.
    # It must contain exactly 3 unique vowels and 5 unique consonants.
    vowel_chars_present = set()
    consonant_chars_present = set()
    for char in set(x):
        if char in vowels:
            vowel_chars_present.add(char)
        else:
            # We already checked for islower() and isascii(), so no other char types.
            consonant_chars_present.add(char)
    
    if len(vowel_chars_present) != 3:
        return False
    if len(consonant_chars_present) != 5:
        return False

    # --- Condition 3: Cryptographic Hash Property ---
    # The hexadecimal representation of the SHA256 hash of the string
    # must end with a sequence of four identical characters.
    try:
        hex_digest = hashlib.sha256(x.encode('utf-8')).hexdigest()
        
        # Check the last 4 characters
        if len(hex_digest) < 4:
             return False # Should not happen with SHA256

        last_char = hex_digest[-1]
        if not (hex_digest[-2] == last_char and \
                hex_digest[-3] == last_char and \
                hex_digest[-4] == last_char):
            return False
            
    except Exception:
        # Should not happen for valid strings, but good practice.
        return False

    return True
'gebifacegicidage'
Proposer: gemini-2.5-pro Solver: gemini-2.5-flash
-2 vs -2
#6 Sample Solution Wrong
import hashlib
import math
from sympy import isprime # Using sympy's isprime for performance in the puzzle itself.

def is_semiprime(num):
    """
    Checks if a number is a semi-prime. A semi-prime is a natural number that is the product of exactly two prime numbers,
    which may or may not be distinct (e.g., 4=2*2, 6=2*3, 9=3*3, 10=2*5).
    """
    if num < 4: # Smallest semiprime is 4 (2*2)
        return False
    
    # Find the smallest prime factor (p1)
    p1 = -1
    d = 2
    temp_num = num
    # Optimized trial division up to sqrt(num) to find the first factor.
    # For very large numbers, this still involves iterating up to sqrt(num),
    # but Python's arbitrary-precision integers and sympy's primality test for 'q'
    # make this feasible for the numbers involved in this puzzle.
    while d * d <= temp_num:
        if temp_num % d == 0:
            p1 = d
            break
        d += 1
    
    # If no factor was found (p1 remains -1), it means num itself is prime.
    # A prime number is not considered a semiprime (it has only one prime factor).
    if p1 == -1: 
        return False 

    # Now we have p1, the smallest prime factor of num.
    # The number can be expressed as num = p1 * q.
    # For num to be a semiprime, q must also be a prime number.
    q = num // p1
    
    # Check if q is prime using sympy's optimized primality test.
    return isprime(q)

def mystery(x):
    """
    This function evaluates a value x based on a hidden set of rules.
    It returns True only for a very specific subset of strings.
    """
    if not isinstance(x, str) or not x:
        return False

    # --- Condition 1: Lexical Structure and Character Composition ---
    # 1.1 The string must contain only lowercase English letters.
    if not x.islower() or not x.isalpha():
        return False

    # 1.2 The length of the string must be a prime number.
    if not isprime(len(x)): # Using sympy.isprime for efficiency
        return False

    # 1.3 The string must contain exactly 5 unique characters.
    unique_chars = sorted(list(set(x)))
    if len(unique_chars) != 5:
        return False

    # 1.4 These 5 unique characters, when sorted alphabetically, must form
    #     an arithmetic progression based on their ASCII values.
    #     (i.e., the difference between adjacent character ASCII values is constant).
    first_char_ord = ord(unique_chars[0])
    second_char_ord = ord(unique_chars[1])
    common_difference = second_char_ord - first_char_ord
    if common_difference <= 0: # Should not happen if sorted, but for robustness
        return False
    
    for i in range(1, len(unique_chars)):
        if ord(unique_chars[i]) - ord(unique_chars[i-1]) != common_difference:
            return False

    # --- Condition 2: Numerical Property from Character Values ---
    # Concatenate the ASCII (ordinal) values of all characters in the string x (as strings)
    # to form a large integer N. This integer N must be a "semi-prime" number.
    try:
        n_str_parts = [str(ord(c)) for c in x]
        n_val = int("".join(n_str_parts))
        if not is_semiprime(n_val):
            return False
    except (ValueError, TypeError):
        # This handles potential issues if ord() or int() conversion fails,
        # though with prior checks, it should be robust.
        return False

    # --- Condition 3: Cryptographic Hash Property ---
    # The hexadecimal representation of the SHA1 hash of the string
    # (encoded as UTF-8) must start with the sequence "dead".
    try:
        hex_digest = hashlib.sha1(x.encode('utf-8')).hexdigest()
        if not hex_digest.startswith("dead"):
            return False
    except Exception:
        # Catches potential encoding errors or other issues, though unlikely for valid strings.
        return False

    return True
"aegicac"
Proposer: gemini-2.5-flash Solver: gemini-2.5-pro
-2 vs -3
#7 Sample Solution Wrong
import uuid

def mystery(x):
    """
    This function subjects the input x to a series of rigorous tests.
    Only a very specific type of string will pass, combining properties
    from graph theory, number theory, and cryptographic hashing.
    """
    # --- Preliminary Checks ---
    if not isinstance(x, str) or not x.isdigit() or len(x) < 3:
        return False

    # --- Condition 1: A Graph Traversal Property ---
    # The sequence of digits in x must represent a valid "knight's tour"
    # on a standard phone keypad.
    keypad_moves = {
        '1': {'6', '8'}, '2': {'7', '9'}, '3': {'4', '8'},
        '4': {'3', '9', '0'}, '5': set(), '6': {'1', '7', '0'},
        '7': {'2', '6'}, '8': {'1', '3'}, '9': {'2', '4'},
        '0': {'4', '6'}
    }
    for i in range(len(x) - 1):
        current_digit = x[i]
        next_digit = x[i+1]
        if current_digit not in keypad_moves or next_digit not in keypad_moves[current_digit]:
            return False

    # --- Condition 2: A Number-Theoretic Property (Smith Number) ---
    # The integer represented by x must be a "Smith Number".
    # A Smith number is a composite number where the sum of its digits equals
    # the sum of the digits of its prime factors.
    try:
        n = int(x)
        
        def get_factor_digit_sum(num):
            factors = []
            d = 2
            temp = num
            while d * d <= temp:
                while temp % d == 0:
                    factors.append(d)
                    temp //= d
                d += 1
            if temp > 1:
                factors.append(temp)
            
            # A Smith number must be composite (i.e., not prime).
            if len(factors) <= 1:
                return None

            digit_sum = 0
            for factor in factors:
                # Sum the digits of each prime factor
                digit_sum += sum(int(digit) for digit in str(factor))
            return digit_sum

        sum_of_own_digits = sum(int(digit) for digit in str(n))
        sum_of_factor_digits = get_factor_digit_sum(n)
        
        if sum_of_factor_digits is None or sum_of_own_digits != sum_of_factor_digits:
            return False
            
    except (ValueError, TypeError):
        return False

    # --- Condition 3: A Cryptographic Hashing Property ---
    # A UUIDv5 is generated from the string x. The number of set bits ('1's)
    # in the 128-bit integer representation of this UUID must be a prime number.
    try:
        def is_prime(num):
            if num < 2: return False
            # Efficient primality test
            for i in range(2, int(num**0.5) + 1):
                if num % i == 0: return False
            return True

        generated_uuid = uuid.uuid5(uuid.NAMESPACE_DNS, x)
        popcount = bin(generated_uuid.int).count('1')
        
        if not is_prime(popcount):
            return False
            
    except Exception:
        return False

    return True
"729"
Proposer: gemini-2.5-pro Solver: gemini-2.5-flash
-3 vs -3
#8 Sample Solution Wrong
import hashlib
import math

def mystery(x):
    """
    This function evaluates a value x based on a hidden set of rules.
    It returns True only for a very specific subset of strings.
    """
    vowels = "aeiou"

    # --- Helper functions (defined locally to keep the mystery self-contained) ---
    def is_fibonacci(n_val):
        if n_val < 1: return False
        # 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.
        # This handles cases where n is 1 or 2 as well.
        return math.isqrt(5*n_val*n_val + 4)**2 == (5*n_val*n_val + 4) or \
               math.isqrt(5*n_val*n_val - 4)**2 == (5*n_val*n_val - 4)

    def is_triangular(n_val):
        if n_val < 1: return False
        # A number k is triangular if and only if 8k + 1 is a perfect square.
        return math.isqrt(8*n_val + 1)**2 == (8*n_val + 1)

    def get_positional_value(char):
        # 'a' corresponds to 1, 'b' to 2, ..., 'z' to 26
        return ord(char) - ord('a') + 1

    # --- Preliminary Checks ---
    # 1.1 Must be a non-empty string composed of only lowercase English letters.
    if not isinstance(x, str) or not x or not x.islower() or not x.isalpha():
        return False

    # --- Condition 1: Lexical Structure and Palindrome Properties ---
    # 1.2 The length of the string must be a Fibonacci number.
    if not is_fibonacci(len(x)):
        return False

    # 1.3 The string must be a palindrome, contain at least two unique characters,
    #     and its first character must be a vowel while its middle character (x[len(x)//2])
    #     must be a consonant.
    if x != x[::-1]: # Must be a palindrome
        return False
    
    if len(set(x)) < 2: # Must contain at least two unique characters
        return False
    
    if x[0] not in vowels: # First character must be a vowel
        return False
    
    # The middle character (for odd length strings) or one of the two middle characters
    # (for even length strings, though this specific check implies odd length for len(x)//2 to be a single char index)
    # must be a consonant. Given the palindrome and len(set(x)) >= 2, this also implies that
    # x[0] and x[len(x)//2] must be different (vowel vs consonant).
    if x[len(x)//2] in vowels: # Middle character must be a consonant
        return False

    # --- Condition 2: Numerical Property from Character Values ---
    # The product of the positional values (a=1, z=26) of all characters in x
    # must be a "triangular number".
    product_pos_vals = 1
    for char in x:
        product_pos_vals *= get_positional_value(char)
    
    if not is_triangular(product_pos_vals):
        return False

    # --- Condition 3: Cryptographic Hash Property ---
    # The hexadecimal representation of the SHA1 hash of the string (encoded as UTF-8)
    # must have the property that the sum of the numerical values of its first 5
    # hexadecimal digits equals the sum of the numerical values of its last 5
    # hexadecimal digits. (e.g., 'a' = 10, 'f' = 15).
    try:
        hex_digest = hashlib.sha1(x.encode('utf-8')).hexdigest()
        
        def hex_digit_sum_segment(hex_str_segment):
            total_sum = 0
            for h_char in hex_str_segment:
                total_sum += int(h_char, 16)
            return total_sum
        
        # Check if the hash is long enough (SHA1 is 40 chars, so this is guaranteed)
        if len(hex_digest) < 5: 
            return False

        first_five_sum = hex_digit_sum_segment(hex_digest[:5])
        last_five_sum = hex_digit_sum_segment(hex_digest[-5:])
        
        if first_five_sum != last_five_sum:
            return False
            
    except Exception:
        # Catch potential encoding errors or other issues during hashing
        return False

    return True
"abgba"
Proposer: gemini-2.5-flash Solver: gemini-2.5-pro
-3 vs -4
#9 Solved
import hashlib
import math

def mystery(x):
    """
    This function evaluates a value x based on a hidden set of rules,
    combining constraints from lexicography, number theory, and cryptography.
    It returns True only for a very specific subset of strings.
    """
    # --- Preliminary Checks & Condition 1: Lexical Structure ---
    if not isinstance(x, str) or not x:
        return False

    # 1.1: Must be composed of only unique, lowercase English letters.
    if not x.islower() or not x.isalpha():
        return False
    if len(set(x)) != len(x):
        return False

    # 1.2: The characters must be in strictly increasing alphabetical order.
    # This can be checked by comparing the string to its sorted version.
    if x != "".join(sorted(x)):
        return False

    # --- Helper functions for Conditions 2 & 3 ---
    def is_perfect(n):
        # A number is perfect if it equals the sum of its proper divisors.
        # We check against a set of known perfect numbers, which is efficient
        # for the scale of numbers this puzzle can generate.
        known_perfect_numbers = {6, 28, 496, 8128, 33550336}
        return n in known_perfect_numbers

    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

    # --- Condition 2: Number-Theoretic Property ---
    # The string is interpreted as a number in base 26, where 'a'=0, 'b'=1, ..., 'z'=25.
    # The resulting integer must be a "perfect number".
    try:
        base26_val = 0
        for char in x:
            base26_val = base26_val * 26 + (ord(char) - ord('a'))
        
        if not is_perfect(base26_val):
            return False
    except (ValueError, TypeError):
        return False

    # --- Condition 3: Cryptographic Hash Property ---
    # The sum of the integer values of the hexadecimal digits of the blake2b hash
    # of the string (UTF-8 encoded) must be a prime number.
    try:
        hex_digest = hashlib.blake2b(x.encode('utf-8')).hexdigest()
        
        digit_sum = sum(int(c, 16) for c in hex_digest)
        
        if not is_prime(digit_sum):
            return False
            
    except Exception:
        return False

    return True
"g"
'g'
Proposer: gemini-2.5-pro Solver: gemini-2.5-flash
-3 vs -4
#10 Sample Solution Wrong
import hashlib
import math

def mystery(x):
    """
    This function evaluates a value x based on a hidden set of rules,
    combining constraints from lexicography, number theory, and cryptography.
    It returns True only for a very specific subset of strings.
    """
    # --- Helper functions ---
    def is_prime(num):
        if num < 2: return False
        for i in range(2, int(num**0.5) + 1):
            if num % i == 0: return False
        return True

    def is_perfect_square(num):
        if num < 0: return False
        s = int(math.sqrt(num))
        return s*s == num

    # --- Preliminary Checks ---
    if not isinstance(x, str) or not x:
        return False

    # --- Condition 1: Lexical Structure and Character Properties ---
    # 1.1: Must be composed of only lowercase English letters.
    if not x.islower() or not x.isalpha():
        return False

    # 1.2: The length of the string must be a prime number.
    str_len = len(x)
    if not is_prime(str_len):
        return False

    # 1.3: The number of distinct characters in the string must be a perfect square.
    num_unique_chars = len(set(x))
    if not is_perfect_square(num_unique_chars):
        return False

    # 1.4: All characters in the string must appear an odd number of times.
    # This implies that (sum of counts = string length) and (number of unique characters)
    # must both be odd or both be even. Since string length (prime) is always odd (except for 2),
    # the number of unique characters must also be odd.
    char_counts = {}
    for char in x:
        char_counts[char] = char_counts.get(char, 0) + 1
    for count in char_counts.values():
        if count % 2 == 0:
            return False

    # --- Condition 2: Number-Theoretic Property (Sum of positional values) ---
    # The sum of positional values (a=1, b=2, ..., z=26) of all characters in the string
    # must be a "highly composite number".
    # (A highly composite number is a positive integer that has more divisors than any smaller positive integer).
    # We check against a list of known highly composite numbers for efficiency.
    known_highly_composite = {1, 2, 4, 6, 12, 24, 36, 48, 60, 120, 180, 240, 360, 720, 840, 1260, 1680, 2520, 5040, 7560, 10080, 15120, 20160, 25200, 27720, 45360, 50400, 55440, 83160, 110880, 166320, 221760, 277200, 332640, 498960, 554400, 665280, 720720, 1081080, 1441440, 2162160, 2882880, 3603600, 4324320, 7207200, 8648640, 10810800, 14414400, 17297280, 21621600, 32432400, 36036000, 43243200, 64864800, 72072000, 86486400, 108108000, 129729600, 180180000, 216216000, 259459200, 324324000, 432432000, 518918400, 648648000, 778377600, 972972000, 1167561600, 1297296000, 1556755200, 1945944000, 2335132800, 2594592000, 3113510400, 3891888000, 4669065600, 5189184000, 6227020800, 7783776000, 9340531200, 11675616000, 13998960000, 15554400000, 18665280000, 23331600000, 27997920000, 31108800000, 37330560000, 46663200000, 55995840000, 62217600000, 74661120000, 93326400000, 111991680000, 124435200000, 149322240000, 186652800000, 223983360000, 248870400000, 298644480000, 373305600000, 447966720000, 497740800000, 597288960000, 746611200000, 895933440000, 995481600000, 1194577920000, 1493222400000, 1791866880000, 1990963200000, 2389155840000, 2986444800000, 3583733760000, 3981926400000, 4778311680000, 5972889600000, 7167467520000, 7963852800000, 9556623360000, 11945779200000, 14334935040000, 15927705600000, 19113246720000, 23891558400000} # Up to 23.8 trillion
    
    total_pos_val_sum = sum(ord(char) - ord('a') + 1 for char in x)
    if total_pos_val_sum not in known_highly_composite:
        return False

    # --- Condition 3: Cryptographic Hash Property (SHA512) ---
    # The SHA512 hash (hexadecimal string) must satisfy two conditions:
    # 3.1: The first 10 hexadecimal digits of the hash must contain exactly 'P' prime hexadecimal digits
    #      (where prime hex digits are 2, 3, 5, 7, b, d) and 'P' itself must be a prime number.
    # 3.2: The integer value of the entire SHA512 hash (interpreted as base 16) must be divisible by 13.
    try:
        hex_digest = hashlib.sha512(x.encode('utf-8')).hexdigest()
        
        # Condition 3.1
        prime_hex_chars = {'2', '3', '5', '7', 'b', 'd'}
        count_prime_hex_digits = 0
        for h_char in hex_digest[:10]: # Only check first 10 characters
            if h_char in prime_hex_chars:
                count_prime_hex_digits += 1
        
        if not is_prime(count_prime_hex_digits):
            return False
            
        # Condition 3.2
        hash_int = int(hex_digest, 16)
        if hash_int % 13 != 0:
            return False
            
    except Exception:
        return False

    return True
'zzzabcdefhm'
Proposer: gemini-2.5-flash Solver: gemini-2.5-pro
-3 vs -5