← All Duels

gemini-2.5-flash_vs_grok-4_20260124_032545.jsonl — 10 puzzles

gemini-2.5-flash
-1
vs
grok-4
0
#1 Solved
import math

def mystery(x):
    # Condition 1: Input must be a string
    if not isinstance(x, str):
        return False

    # Condition 2: The string must have a specific length
    if len(x) != 8:
        return False

    # Condition 3: All characters must be either a lowercase letter or a digit
    if not all(char.islower() or char.isdigit() for char in x):
        return False

    # Initialize variables to track digits, letter ASCII sum, and digit positions
    digits = []
    letters_ascii_sum = 0
    first_digit_index = -1
    last_digit_index = -1

    # Iterate through the string to populate the variables
    for i, char in enumerate(x):
        if char.isdigit():
            digits.append(int(char))
            if first_digit_index == -1:
                first_digit_index = i
            last_digit_index = i
        elif char.islower():
            letters_ascii_sum += ord(char)
        # Other character types are implicitly excluded by Condition 3

    # Condition 4: There must be exactly 3 digits in the string
    if len(digits) != 3:
        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

    # Condition 5: The product of the three digits must be a prime number
    product_of_digits = math.prod(digits)
    if not is_prime(product_of_digits):
        return False

    # Condition 6: The sum of the ASCII values of the lowercase letters must be a specific number
    # (Given 8 total characters and 3 digits, there must be 5 lowercase letters)
    if letters_ascii_sum != 555:
        return False

    # Condition 7: The first digit encountered must be at an even index
    if first_digit_index % 2 != 0:
        return False

    # Condition 8: The last digit encountered must be at an odd index
    if last_digit_index % 2 != 1:
        return False

    return True
"21o1oooo"
"1oo1o5oo"
Proposer: gemini-2.5-flash Solver: grok-4
0 vs 0
#2 Solved
import math

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 mystery(x):
    # Condition 1: Input must be a string
    if not isinstance(x, str):
        return False

    # Condition 2: The string must have a specific length
    if len(x) != 10:
        return False

    # Condition 3: All characters must be either a lowercase letter or a digit
    if not all(c.islower() or c.isdigit() for c in x):
        return False

    # Condition 4: There must be exactly 4 digits and 6 lowercase letters
    digits = [int(c) for c in x if c.isdigit()]
    if len(digits) != 4:
        return False
    letters = [c for c in x if c.islower()]
    if len(letters) != 6:
        return False

    # Condition 5: The sum of the ASCII values of the lowercase letters must be exactly 650
    ascii_sum = sum(ord(c) for c in letters)
    if ascii_sum != 650:
        return False

    # Condition 6: The product of the digits must be a perfect cube
    prod = math.prod(digits)
    cube_root = round(prod ** (1/3))
    if cube_root ** 3 != prod:
        return False

    # Condition 7: The sum of the digits must be a prime number
    dig_sum = sum(digits)
    if not is_prime(dig_sum):
        return False

    # Condition 8: The positions of the digits must form an arithmetic progression with common difference 2
    dig_pos = [i for i, c in enumerate(x) if c.isdigit()]
    if len(dig_pos) != 4:
        return False
    diffs = [dig_pos[i+1] - dig_pos[i] for i in range(3)]
    if not all(d == 2 for d in diffs):
        return False

    # Condition 9: The first and last characters must be the same lowercase letter
    if not (x[0].islower() and x[-1].islower() and x[0] == x[-1]):
        return False

    # Condition 10: The sequence of lowercase letters (in the order they appear) must form a palindrome
    letters_str = ''.join(letters)
    if letters_str != letters_str[::-1]:
        return False

    # Condition 11: The number formed by concatenating the digits (in the order they appear) must be a prime number
    digits_str = ''.join(c for c in x if c.isdigit())
    if not is_prime(int(digits_str)):
        return False

    return True
"k1l0n1n3lk"
"b2n2u2u1nb"
Proposer: grok-4 Solver: gemini-2.5-flash
0 vs 0
#3 Solved
import math

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

# Helper function to check if a number is a Fibonacci number relevant to the puzzle's constraints
def is_fibonacci(n):
    # For sums of 6 digits (0-9), max sum is 54.
    # Relevant Fibonacci numbers (excluding 0, 1, 2 which are too small for sum of 6 non-zero digits,
    # and product_digits > 1 implies no digit can be 0):
    # 3 (sum of 6 digits 1,1,1,0,0,0 - impossible due to product > 1)
    # 5 (sum of 6 digits 1,1,1,1,1,0 - impossible due to product > 1)
    # The smallest sum of 6 digits (1-9) is 6 (1,1,1,1,1,1).
    # So relevant Fibonacci numbers for sum_digits are 8, 13, 21, 34.
    return n in {8, 13, 21, 34}

def mystery(x):
    # Condition 1: Input must be a string
    if not isinstance(x, str):
        return False

    # Condition 2: The string must have a specific length
    if len(x) != 12:
        return False

    # Condition 3: All characters must be either a lowercase letter or a digit
    if not all(c.islower() or c.isdigit() for c in x):
        return False

    # Condition 4 & 5: Positional Alternation - L D L D L D L D L D L D
    # This implies exactly 6 letters (at even indices) and 6 digits (at odd indices)
    letters = []
    digits = []
    for i, char in enumerate(x):
        if i % 2 == 0: # Even index (0, 2, 4, 6, 8, 10), must be a letter
            if not char.islower():
                return False
            letters.append(char)
        else: # Odd index (1, 3, 5, 7, 9, 11), must be a digit
            if not char.isdigit():
                return False
            digits.append(int(char))

    # This check is technically redundant if Condition 2 and the loop logic are correct,
    # but it ensures the counts are exactly 6 of each type.
    if len(letters) != 6 or len(digits) != 6:
        return False

    # Condition 6a: Sum of the 6 digits must be a Fibonacci number
    sum_digits = sum(digits)
    if not is_fibonacci(sum_digits):
        return False

    # Condition 6b: Product of the 6 digits must be a perfect square greater than 1
    product_digits = math.prod(digits)
    if product_digits <= 1: # Must be greater than 1
        return False
    sqrt_prod = round(product_digits ** 0.5)
    if sqrt_prod * sqrt_prod != product_digits:
        return False

    # Condition 6c: The number formed by concatenating the first three digits (D0D1D2)
    # must be a prime number, AND the number formed by concatenating the last three digits (D3D4D5)
    # must also be a prime number.
    num1_str = "".join(str(d) for d in digits[:3])
    num2_str = "".join(str(d) for d in digits[3:])
    # Since product_digits > 1, no digit can be 0, so int(num_str) will not have leading zeros.
    if not (is_prime(int(num1_str)) and is_prime(int(num2_str))):
        return False

    # Condition 7a: Sum of the ASCII values of the 6 letters must be a prime number
    sum_ascii_letters = sum(ord(c) for c in letters)
    if not is_prime(sum_ascii_letters):
        return False

    # Condition 7b: All 6 letters must be unique
    if len(set(letters)) != 6:
        return False

    # Condition 7c: The set of letters must contain exactly two vowels ('a', 'e', 'i', 'o', 'u')
    vowels = {'a', 'e', 'i', 'o', 'u'}
    found_vowels = sum(1 for letter in letters if letter in vowels)
    if found_vowels != 2:
        return False

    # Condition 8: (Cross-type positional relationship)
    # The sum of ASCII of the first letter (x[0]) and the value of the first digit (x[1])
    # must equal the sum of ASCII of the last letter (x[10]) and the value of the last digit (x[11]), plus 10.
    if (ord(x[0]) + int(x[1])) != (ord(x[10]) + int(x[11]) + 10):
        return False

    return True
"j2b1c1d2e1a1"
"l1a1e3g4j3b1"
Proposer: gemini-2.5-flash Solver: grok-4
0 vs 0
#4 Solved
import math

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 mystery(x):
    if not isinstance(x, str):
        return False
    if len(x) != 11:
        return False
    if not all(c.islower() if i % 2 == 0 else c.isdigit() for i, c in enumerate(x)):
        return False

    digit_positions = [1, 3, 5, 7, 9]
    digits = [int(x[i]) for i in digit_positions]

    product = math.prod(digits)
    if not is_prime(product):
        return False

    sum_digits = sum(digits)
    if not is_prime(sum_digits):
        return False

    non_one = [i for i in digit_positions if int(x[i]) != 1]
    if len(non_one) != 1:
        return False
    pos = non_one[0]
    d = int(x[pos])
    if pos != d:
        return False

    for i in digit_positions:
        prev_letter = x[i - 1]
        if ord(prev_letter) % 10 != int(x[i]):
            return False

    digits_str = ''.join(x[i] for i in digit_positions)
    if not is_prime(int(digits_str)):
        return False

    letter_positions = [0, 2, 4, 6, 8, 10]
    letters = [x[i] for i in letter_positions]

    vowels = set('aeiou')
    vowel_count = sum(1 for c in letters if c in vowels)
    if vowel_count != 2:
        return False

    ascii_sum = sum(ord(c) for c in letters)
    if not is_prime(ascii_sum):
        return False

    return True
"e1y1y1a7y1b"
'e1y1y1u7y1f'
Proposer: grok-4 Solver: gemini-2.5-flash
0 vs 0
#5 Solved
import math

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 mystery(x):
    # P1: Type and Length: Input must be a string of length 10.
    if not isinstance(x, str):
        return False
    if len(x) != 10:
        return False

    # P2: Character types and positions:
    # Even positions (0, 2, 4, 6, 8) must be lowercase letters.
    # Odd positions (1, 3, 5, 7, 9) must be digits.
    # All characters must be either a lowercase letter or a digit.
    letters = []
    digits = []
    for i, char in enumerate(x):
        if i % 2 == 0: # Even position: must be a lowercase letter
            if not char.islower():
                return False
            letters.append(char)
        else: # Odd position: must be a digit
            if not char.isdigit():
                return False
            digits.append(int(char))

    # This implicitly ensures there are exactly 5 letters and 5 digits
    # given the length check and loop structure.

    # P3: Digit Conditions (digits = [d0, d1, d2, d3, d4] from x[1], x[3], x[5], x[7], x[9])
    # D1: All 5 digits must be unique and non-zero.
    if len(set(digits)) != 5 or 0 in digits:
        return False

    # D2: The sum of all 5 digits must be a prime number.
    sum_all_digits = sum(digits)
    if not is_prime(sum_all_digits):
        return False

    # D3: The sum of the first three digits (d0 + d1 + d2) must be a perfect square.
    sum_first_three_digits = digits[0] + digits[1] + digits[2]
    sqrt_sum = round(sum_first_three_digits ** 0.5)
    if sqrt_sum * sqrt_sum != sum_first_three_digits:
        return False

    # D4: The number formed by concatenating the last two digits (d3d4) must be a prime number.
    # e.g., if digits[3]=4, digits[4]=3, then the number is 43.
    concat_last_two_digits = int(str(digits[3]) + str(digits[4]))
    if not is_prime(concat_last_two_digits):
        return False

    # P4: Letter Conditions (letters = [l0, l1, l2, l3, l4] from x[0], x[2], x[4], x[6], x[8])
    # L1: All 5 letters must be unique consonants.
    vowels = {'a', 'e', 'i', 'o', 'u'}
    if not all(c.islower() and c not in vowels for c in letters): # Check if all are consonants
        return False
    if len(set(letters)) != 5: # Check if all are unique
        return False

    # L2: The sum of the ASCII values of the 5 letters must be a perfect square.
    sum_ascii_letters = sum(ord(c) for c in letters)
    sqrt_ascii_sum = round(sum_ascii_letters ** 0.5)
    if sqrt_ascii_sum * sqrt_ascii_sum != sum_ascii_letters:
        return False

    # L3: The first letter (l0 = x[0]) and the last letter (l4 = x[8]) must be consecutive in the alphabet.
    # This means ord(l0) + 1 == ord(l4) OR ord(l4) + 1 == ord(l0).
    if not (abs(ord(letters[0]) - ord(letters[4])) == 1):
        return False

    # P5: Cross-type Conditions
    # C1: The ASCII value of the first letter (x[0]) modulo 5 must be equal to the first digit (x[1]).
    if (ord(letters[0]) % 5) != digits[0]:
        return False

    # C2: The ASCII value of the last letter (x[8]) modulo 5 must be equal to the last digit (x[9]).
    if (ord(letters[4]) % 5) != digits[4]:
        return False

    return True
"k2x3y4z7j1"
"f2k5l9m4g3"
Proposer: gemini-2.5-flash Solver: grok-4
0 vs 0
#6 Solved
import math

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 mystery(x):
    if not isinstance(x, str):
        return False
    if len(x) != 14:
        return False
    for i, c in enumerate(x):
        if i % 2 == 0:
            if not c.islower():
                return False
        else:
            if not c.isdigit():
                return False

    digit_pos = list(range(1, 14, 2))
    digits = [int(x[i]) for i in digit_pos]
    nonzero_pos = [pos for pos in digit_pos if int(x[pos]) != 0]
    if len(nonzero_pos) != 3:
        return False
    prime_pos = [3, 5, 7, 11, 13]
    if not all(p in prime_pos for p in nonzero_pos):
        return False
    for p in nonzero_pos:
        if int(x[p]) != p % 10:
            return False

    sum_digits = sum(digits)
    if not is_prime(sum_digits):
        return False
    product = 1
    for d in digits:
        product *= d
    sqrt_val = math.sqrt(product)
    if sqrt_val != int(sqrt_val):
        return False

    for i in digit_pos:
        if ord(x[i - 1]) % 10 != int(x[i]):
            return False

    letters = [x[i] for i in range(0, 14, 2)]
    vowels = set('aeiou')
    vowel_count = sum(1 for c in letters if c in vowels)
    if vowel_count != 1:
        return False

    ascii_sum = sum(ord(c) for c in letters)
    if not is_prime(ascii_sum):
        return False

    letter_set = set(letters)
    if len(letter_set) != 6:
        return False
    has_two = False
    for l in letter_set:
        count = letters.count(l)
        if count > 2:
            return False
        if count == 2:
            if has_two:
                return False
            has_two = True
        elif count != 1:
            return False
    if not has_two:
        return False

    return True
"d0g3i5d0n0x0q3"
"d0g3d0n0x0o1q3"
Proposer: grok-4 Solver: gemini-2.5-flash
0 vs 0
#7 Solved
import math

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 mystery(x):
    # P1: Type and Length
    # The input must be a string of exactly 12 characters.
    if not isinstance(x, str):
        return False
    if len(x) != 12:
        return False

    # P2: Alternating Character Pattern
    # Characters at even indices (0, 2, 4, 6, 8, 10) must be lowercase letters.
    # Characters at odd indices (1, 3, 5, 7, 9, 11) must be digits.
    letters = []
    digits = []
    for i, char in enumerate(x):
        if i % 2 == 0: # Even index
            if not char.islower():
                return False
            letters.append(char)
        else: # Odd index
            if not char.isdigit():
                return False
            digits.append(int(char))

    # P3: Digit Conditions (digits = [d0, d1, d2, d3, d4, d5] from x[1], x[3], x[5], x[7], x[9], x[11])
    # D1: All 6 digits must be unique and non-zero.
    if len(set(digits)) != 6 or 0 in digits:
        return False

    # D2: The sum of the first three digits (d0 + d1 + d2) must be a prime number.
    sum_first_three_digits = digits[0] + digits[1] + digits[2]
    if not is_prime(sum_first_three_digits):
        return False

    # D3: The sum of the last three digits (d3 + d4 + d5) must be a perfect square.
    sum_last_three_digits = digits[3] + digits[4] + digits[5]
    sqrt_sum_last = round(sum_last_three_digits**0.5)
    if sqrt_sum_last * sqrt_sum_last != sum_last_three_digits:
        return False

    # D4: The number formed by concatenating the digits at odd positions within the digit list (d1, d3, d5) must be a prime number.
    # (These correspond to x[3], x[7], x[11] in the original string).
    concat_odd_digits_str = str(digits[1]) + str(digits[3]) + str(digits[5])
    if not is_prime(int(concat_odd_digits_str)):
        return False

    # P4: Letter Conditions (letters = [l0, l1, l2, l3, l4, l5] from x[0], x[2], x[4], x[6], x[8], x[10])
    # L1: All 6 letters must be unique.
    if len(set(letters)) != 6:
        return False

    # L2: There must be exactly 2 vowels ('a', 'e', 'i', 'o', 'u') among the 6 letters.
    vowels = {'a', 'e', 'i', 'o', 'u'}
    vowel_count = sum(1 for char in letters if char in vowels)
    if vowel_count != 2:
        return False

    # L3: The letters at positions l0, l2, and l4 (x[0], x[4], x[8]) must be in strictly ascending alphabetical order.
    if not (letters[0] < letters[2] < letters[4]):
        return False

    # L4: The sum of the ASCII values of the 6 letters must be a multiple of 10.
    sum_ascii_letters = sum(ord(char) for char in letters)
    if sum_ascii_letters % 10 != 0:
        return False

    # P5: Cross-Type Conditions
    # C1: The first digit (d0) must be equal to the value of the last letter (l5) relative to 'a' (ord(l5) - ord('a') + 1).
    if digits[0] != (ord(letters[5]) - ord('a') + 1):
        return False

    # C2: The sum of the values of the second letter (l1) and the fourth letter (l3) (relative to 'a')
    # must be equal to the sum of the second digit (d1) and the fourth digit (d3).
    # (ord(l1) - ord('a') + 1) + (ord(l3) - ord('a') + 1) == d1 + d3
    l1_val = ord(letters[1]) - ord('a') + 1
    l3_val = ord(letters[3]) - ord('a') + 1
    if (l1_val + l3_val) != (digits[1] + digits[3]):
        return False

    return True
"c1b5f7e2g4a3"
"c2a4e7f3g5b1"
Proposer: gemini-2.5-flash Solver: grok-4
0 vs 0
#8 Solved
import math

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 mystery(x):
    if not isinstance(x, str):
        return False
    if len(x) != 13:
        return False
    if not all(c.islower() if i % 2 == 0 else c.isdigit() for i, c in enumerate(x)):
        return False

    digit_positions = list(range(1, 13, 2))
    digits = [int(x[i]) for i in digit_positions]
    if sorted(digits) != [1, 3, 4, 6, 8, 9]:
        return False

    sum_digits = sum(digits)
    if not is_prime(sum_digits):
        return False

    product = math.prod(digits)
    sqrt_p = int(math.sqrt(product))
    if sqrt_p ** 2 != product:
        return False

    letter_positions = list(range(0, 13, 2))
    letters = [x[i] for i in letter_positions]
    if len(set(letters)) != 7:
        return False

    vowels = set('aeiou')
    vowel_count = sum(1 for c in letters if c in vowels)
    if vowel_count != 1:
        return False

    ascii_sum = sum(ord(c) for c in letters)
    if not is_prime(ascii_sum):
        return False

    for k in range(6):
        digit_pos = 2 * k + 1
        prev_letter = x[digit_pos - 1]
        if ord(prev_letter) % 10 != digits[k]:
            return False

    return True
"e1g3h4j6b8c9l"
'g3h4j6b8c9e1l'
Proposer: grok-4 Solver: gemini-2.5-flash
0 vs 0
#9 Sample Solution Wrong
import math

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 mystery(x):
    # P1: Type and Length
    # The input must be a string of exactly 9 characters.
    if not isinstance(x, str):
        return False
    if len(x) != 9:
        return False

    # P2: Character Types and Positions
    # Characters follow a specific pattern: L D L D D L D D L
    # Letters at indices: 0, 2, 5, 7, 8 (5 letters)
    # Digits at indices: 1, 3, 4, 6 (4 digits)
    letters_indices = [0, 2, 5, 7, 8]
    digits_indices = [1, 3, 4, 6]

    letters = []
    digits = []

    for i, char in enumerate(x):
        if i in letters_indices:
            if not char.islower():
                return False
            letters.append(char)
        elif i in digits_indices:
            if not char.isdigit():
                return False
            digits.append(int(char))
        else: # Should not happen if indices are exhaustive for length 9
            return False

    # (Implicitly checks for correct counts of letters and digits due to P1 and index lists)

    # P3: Digit Conditions (digits = [d0, d1, d2, d3] from x[1], x[3], x[4], x[6])
    # D1: All 4 digits must be unique and non-zero.
    if len(set(digits)) != 4 or 0 in digits:
        return False

    # D2: The product of the 4 digits must be a multiple of 60.
    product_digits = math.prod(digits)
    if product_digits % 60 != 0:
        return False

    # D3: The sum of the 4 digits must be a multiple of 7.
    sum_digits = sum(digits)
    if sum_digits % 7 != 0:
        return False

    # D4: The number formed by concatenating the digits in their original order (d0d1d2d3) must be a prime number.
    concatenated_digits_str = "".join(map(str, digits))
    if not is_prime(int(concatenated_digits_str)):
        return False

    # D5: The position of the largest digit must be an even index within the 'digits' list (0-indexed).
    # i.e., max(digits) must be at digits[0] or digits[2].
    max_digit = max(digits)
    max_digit_index_in_list = -1
    for i, d_val in enumerate(digits):
        if d_val == max_digit:
            max_digit_index_in_list = i
            break
    if max_digit_index_in_list % 2 != 0:
        return False

    # P4: Letter Conditions (letters = [l0, l1, l2, l3, l4] from x[0], x[2], x[5], x[7], x[8])
    # L1: All 5 letters must be unique.
    if len(set(letters)) != 5:
        return False

    # L2: There must be exactly one vowel ('a', 'e', 'i', 'o', 'u') among the 5 letters.
    vowels = {'a', 'e', 'i', 'o', 'u'}
    vowel_count = sum(1 for char in letters if char in vowels)
    if vowel_count != 1:
        return False

    # L3: The sum of the ASCII values of the 5 letters must be a prime number.
    sum_ascii_letters = sum(ord(char) for char in letters)
    if not is_prime(sum_ascii_letters):
        return False

    # L4: The letters at positions l1, l2, and l3 (x[2], x[5], x[7]) must be strictly consecutive in the alphabet.
    # This means ord(l1)+1 == ord(l2) AND ord(l2)+1 == ord(l3).
    if not (ord(letters[1]) + 1 == ord(letters[2]) and ord(letters[2]) + 1 == ord(letters[3])):
        return False

    # P5: Cross-Type Conditions
    # C1: The ASCII value of the first letter (l0 = x[0]) modulo 3 must be equal to the first digit (d0 = x[1]).
    if (ord(letters[0]) % 3) != digits[0]:
        return False

    # C2: The ASCII value of the letter at x[5] (l2) minus the integer value of the digit at x[4] (d2) must be 100.
    if (ord(letters[2]) - digits[2]) != 100:
        return False

    # C3: The sum of the ASCII values of the first letter (l0 = x[0]) and the last letter (l4 = x[8]) must be a prime number.
    if not is_prime(ord(letters[0]) + ord(letters[4])):
        return False

    return True
h2i56j1kw
Proposer: gemini-2.5-flash Solver: grok-4
-1 vs 0
#10 Solved
import math

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 mystery(x):
    if not isinstance(x, str):
        return False
    if len(x) != 15:
        return False
    for i, c in enumerate(x):
        if i % 2 == 0:
            if not c.islower():
                return False
        else:
            if not c.isdigit():
                return False

    digit_positions = [1, 3, 5, 7, 9, 11, 13]
    digits = [int(x[i]) for i in digit_positions]
    nonzero_pos = [p for p in digit_positions if digits[digit_positions.index(p)] != 0]
    if len(nonzero_pos) != 3:
        return False
    prime_pos = [3, 5, 7, 11, 13]
    if not all(p in prime_pos for p in nonzero_pos):
        return False
    for p in nonzero_pos:
        if int(x[p]) != p % 10:
            return False

    sum_digits = sum(digits)
    if not is_prime(sum_digits):
        return False

    prod_nonzero = math.prod(int(x[p]) for p in nonzero_pos)
    sqrt_p = int(math.sqrt(prod_nonzero))
    if sqrt_p ** 2 != prod_nonzero:
        return False

    for i in digit_positions:
        if ord(x[i - 1]) % 10 != int(x[i]):
            return False

    letter_positions = [0, 2, 4, 6, 8, 10, 12, 14]
    letters = [x[i] for i in letter_positions]
    vowels = set('aeiou')
    vowel_count = sum(1 for c in letters if c in vowels)
    if vowel_count != 1:
        return False

    ascii_sum = sum(ord(c) for c in letters)
    if not is_prime(ascii_sum):
        return False

    letter_set = set(letters)
    if len(letter_set) != 7:
        return False
    has_two = False
    for l in letter_set:
        count = letters.count(l)
        if count > 2:
            return False
        if count == 2:
            if has_two:
                return False
            has_two = True
        elif count != 1:
            return False
    if not has_two:
        return False

    return True
"d0g3n0x0d0e1q3j"
"n0g3n0d0x0e1q3f"
Proposer: grok-4 Solver: gemini-2.5-flash
-1 vs 0