← All Duels

gemini-2.5-flash_vs_gpt-5.2-pro-2025-12-11_20260125_035451.jsonl — 10 puzzles

gemini-2.5-flash
-1
vs
gpt-5.2-pro-2025-12-11
4
#1 Solved
def mystery(x):
    if not isinstance(x, str) or not x.isdigit():
        return False

    n = int(x)
    if n <= 0:
        return False

    # Condition 1: The number of unique digits in the string x must be a prime number.
    unique_digits = set(x)
    num_unique_digits = len(unique_digits)

    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

    if not is_prime(num_unique_digits):
        return False

    # Condition 2: The length of the string x must be a power of 2.
    s_length = len(x)
    if not (s_length > 0 and (s_length & (s_length - 1) == 0)):
        return False

    # Condition 3: The integer n, when converted to its binary representation, must be a palindrome.
    binary_n = bin(n)[2:] # Get binary string without '0b' prefix
    if not (binary_n == binary_n[::-1]):
        return False

    return True
"15"
"73"
Proposer: gemini-2.5-flash Solver: gpt-5.2-pro-2025-12-11
0 vs 0
#2 Solved
def mystery(x):
    import unicodedata

    # Accept only text input; numbers are rejected.
    if not isinstance(x, str):
        return False

    # Normalize to reduce "look-alike" tricks.
    x = unicodedata.normalize("NFKC", x)

    # Basic shape constraints (printable ASCII, exact length).
    if len(x) != 16:
        return False
    for ch in x:
        o = ord(ch)
        if o < 0x20 or o > 0x7E:
            return False

    # --- Obfuscated target reconstruction ---
    # 16 encrypted bytes stored as 4x32-bit words.
    parts = (
        0xFFE47DD3,
        0xDB4725EE,
        0xE47B95B6,
        0x5E4BF5F4,
    )

    blob = b"".join(p.to_bytes(4, "big") for p in parts)

    # Deterministic per-position mask (keystream) + fixed whitening constant.
    def _mask(i):
        return ((i * 73 + 41) & 0xFF) ^ 0xA5

    secret_bytes = bytes((b ^ _mask(i)) for i, b in enumerate(blob))

    # Ensure the hidden secret is plain ASCII.
    try:
        secret_bytes.decode("ascii")
    except Exception:
        return False

    # --- Comparison (intentionally not written as `x == secret`) ---
    xb = x.encode("ascii", "strict")
    if len(xb) != len(secret_bytes):
        return False

    diff = 0
    for a, b in zip(xb, secret_bytes):
        diff |= (a ^ b)

    if diff != 0:
        return False

    # A couple of extra constraints that are redundant if the above matches,
    # but add noise for anyone trying to shortcut by inspection.
    s1 = 0
    s2 = 0
    for i, v in enumerate(xb):
        s1 = (s1 + ((v + i) * (i + 17))) & 0xFFFFFFFF
        s2 ^= ((v << (i % 5)) | (v >> (8 - (i % 5)))) & 0xFF

    t1 = 0
    t2 = 0
    for i, v in enumerate(secret_bytes):
        t1 = (t1 + ((v + i) * (i + 17))) & 0xFFFFFFFF
        t2 ^= ((v << (i % 5)) | (v >> (8 - (i % 5)))) & 0xFF

    return (s1 == t1) and (s2 == t2)
"s3cr3t_c0d3_n0w!"
"s3cr3t_c0d3_n0w!"
Proposer: gpt-5.2-pro-2025-12-11 Solver: gemini-2.5-flash
0 vs 0
#3 Solved
def mystery(x):
    # Condition 0: Basic type and value checks
    if not isinstance(x, str) or not x.isdigit():
        return False
    n = int(x)
    if n <= 0:
        return False

    # Condition 1: The length of the string x must be a prime number.
    s_length = len(x)
    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
    if not is_prime(s_length):
        return False

    # Condition 2: The "digital root" of the integer n must be 4.
    # The digital root is the single-digit value obtained by iteratively summing
    # the digits of a number until a single digit remains.
    # For positive integers, this is equivalent to n % 9 (or 9 if n % 9 == 0).
    if n % 9 != 4:
        return False

    # Condition 3: The digits of x must strictly alternate in parity
    # (i.e., Odd-Even-Odd-Even... or Even-Odd-Even-Odd...).
    parities = []
    for char_digit in x:
        digit = int(char_digit)
        parities.append(digit % 2) # 0 for even, 1 for odd

    if len(parities) > 1:
        is_alternating = True
        for i in range(len(parities) - 1):
            if parities[i] == parities[i+1]:
                is_alternating = False
                break
        if not is_alternating:
            return False
    # Single-digit numbers (len=1) are trivially alternating.

    # Condition 4: The sum of the digits of n must be exactly one less
    # than the sum of the digits of n + 1.
    def sum_digits(num_val):
        s = 0
        temp_num = num_val
        while temp_num > 0:
            s += temp_num % 10
            temp_num //= 10
        return s

    if not (sum_digits(n) == sum_digits(n + 1) - 1):
        return False

    return True
"58"
"121"
Proposer: gemini-2.5-flash Solver: gpt-5.2-pro-2025-12-11
0 vs 0
#4 Solver Failed
def mystery(x):
    import unicodedata

    # --- Input gatekeeping ---
    if not isinstance(x, str):
        return False

    x = unicodedata.normalize("NFKC", x)

    # Must be exactly 20 visible ASCII characters (no spaces, no control chars).
    if len(x) != 20:
        return False
    for ch in x:
        o = ord(ch)
        if o < 0x21 or o > 0x7E:
            return False

    xb = x.encode("ascii", "strict")

    # --- Hidden target reconstruction (no cleartext secret in source) ---
    # 20 bytes packed as 5 big-endian 32-bit words, but also permuted.
    words = (
        0xD3260FB5,
        0x068571B8,
        0xA677D0F5,
        0x229D5C9C,
        0x9AC43BA0,
    )

    blob = b"".join(w.to_bytes(4, "big") for w in words)  # 20 bytes (permuted)

    # Undo a position permutation: stored[j] = C[(j*7) mod 20]
    # Inverse exists since 7 is invertible mod 20 (inverse = 3), so C[i] = stored[(i*3) mod 20]
    C = bytes(blob[(i * 3) % 20] for i in range(20))

    def mask(i: int) -> int:
        return (29 * i * i + 101 * i + 17) & 0xFF

    def k(i: int) -> int:
        return (0xA7 + 9 * i) & 0xFF

    secret_bytes = bytes(((C[i] ^ k(i)) - mask(i)) & 0xFF for i in range(20))

    # Secret must be ASCII; if not, reject.
    try:
        secret_bytes.decode("ascii")
    except Exception:
        return False

    # --- Constant-time style equality check ---
    diff = 0
    for a, b in zip(xb, secret_bytes):
        diff |= (a ^ b)
    if diff != 0:
        return False

    # --- Extra redundant constraints (noise) ---
    s_mod257 = 0
    s_xor = 0
    for b in xb:
        s_mod257 = (s_mod257 + b) % 257
        s_xor ^= b

    # These constants are consistent with the hidden secret.
    return (s_mod257 == 74) and (s_xor == 77)
"cryltablazeformysecr"
"cryptic_puzzle_2026!"
Proposer: gpt-5.2-pro-2025-12-11 Solver: gemini-2.5-flash
0 vs 1
#5 Sample Solution Wrong
def mystery(x):
    # Condition 0: Basic type and content checks
    if not isinstance(x, str):
        return False

    vowels = {'a', 'e', 'i', 'o', 'u'}
    
    # Check if all characters are lowercase English letters and apply parity pattern
    char_sum = 0
    for i, char in enumerate(x):
        if not ('a' <= char <= 'z'):
            return False # Not a lowercase English letter

        char_sum += ord(char)

        # Condition 3: Character type pattern by index parity
        # Characters at even indices must be vowels.
        # Characters at odd indices must be consonants.
        if i % 2 == 0: # Even index (0, 2, 4, ...)
            if char not in vowels:
                return False
        else: # Odd index (1, 3, 5, ...)
            if char in vowels:
                return False
    
    # An empty string would pass the loop but fail subsequent checks naturally.
    # However, for clarity and to avoid edge cases with prime/perfect square logic,
    # we explicitly reject it as it cannot meet the criteria meaningfully.
    if len(x) == 0:
        return False

    # Condition 1: The length of the string x must be a prime number.
    s_length = len(x)
    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
    if not is_prime(s_length):
        return False

    # Condition 2: The sum of the ASCII values of all characters in x
    # must be a perfect square (e.g., 1, 4, 9, 16, 25, ...).
    # (char_sum was calculated in the loop above)
    
    # Minimum ASCII value for 'a' is 97, so char_sum for non-empty string is always positive.
    sqrt_char_sum = int(char_sum**0.5)
    if not (sqrt_char_sum * sqrt_char_sum == char_sum):
        return False

    return True
eze
Proposer: gemini-2.5-flash Solver: gpt-5.2-pro-2025-12-11
-1 vs 1
#6 Solver Failed
def mystery(x):
    import unicodedata

    # --- Accept either int or str; canonicalize to a string ---
    if isinstance(x, bool):
        return False
    if isinstance(x, int):
        if x < 0:
            return False
        x = str(x)
    elif not isinstance(x, str):
        return False

    x = unicodedata.normalize("NFKC", x)

    # --- Shape constraints ---
    if len(x) != 24:
        return False

    for ch in x:
        o = ord(ch)
        # visible ASCII, no spaces/control
        if o < 0x21 or o > 0x7E:
            return False

    xb = x.encode("ascii", "strict")

    # --- Hidden target reconstruction (no cleartext target in source) ---
    # 24 ciphertext bytes packed as 6 big-endian 32-bit words (and permuted).
    words = (
        0xE0D997CB,
        0x1204F575,
        0x3DA7C138,
        0xA936666D,
        0xF2C3D686,
        0xF5F1D824,
    )
    blob = b"".join(w.to_bytes(4, "big") for w in words)  # length 24

    # Stored as p[j] = c[(7*j) mod 24]; since 7 is self-inverse mod 24,
    # recover original c[i] = p[(7*i) mod 24].
    c = bytes(blob[(i * 7) % 24] for i in range(24))

    def k(i: int) -> int:
        return (((17 * i * i + 31 * i + 0x55) & 0xFF) ^ 0xC3)

    secret = bytes((c[i] ^ k(i)) for i in range(24))

    # --- Constant-time-ish comparison ---
    diff = 0
    for a, b in zip(xb, secret):
        diff |= (a ^ b)
    if diff != 0:
        return False

    # --- Extra redundant "noise" checks (consistent with the secret) ---
    s_mod257 = sum(xb) % 257
    s_xor = 0
    for b in xb:
        s_xor ^= b

    return (s_mod257 == 77) and (s_xor == 0x25)
x`. The most direct (though ultimately failing) candidate for `x` would be the string representation of the calculated `secret` bytes.
"v3ry0bfusc4t3d_str1ng!!?"
Proposer: gpt-5.2-pro-2025-12-11 Solver: gemini-2.5-flash
-1 vs 2
#7 Solved
import math

def mystery(x):
    # Condition 0: Basic type and content checks
    if not isinstance(x, str) or not x.isdigit():
        return False
    
    n = int(x)
    if n <= 0: # Ensure positive integer
        return False

    s_length = len(x)

    # Condition 1: The length of the string x must be a prime number.
    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
    
    if not is_prime(s_length):
        return False

    # Helper for Condition 2
    def is_fibonacci(num):
        if num < 1:
            return False
        a, b = 0, 1
        while b < num:
            a, b = b, a + b
        return b == num or num == 1 # Handle num=1 as a Fibonacci number

    digit_sum = 0
    digit_product = 1
    
    for i, char_digit in enumerate(x):
        digit = int(char_digit)
        
        # Condition 3 (part 1): All digits must be from the set {1, 2, 4, 8}
        # This is because the product of digits must be a power of 2.
        if digit not in {1, 2, 4, 8}:
            return False
        
        digit_product *= digit

        # Condition 4: For each digit d_i at index i (0-indexed), d_i must be strictly greater than i.
        if not (digit > i):
            return False
            
        digit_sum += digit

    # Condition 2: The sum of the digits of n must be a Fibonacci number.
    if not is_fibonacci(digit_sum):
        return False

    # Condition 3 (part 2): The product of the digits of n must be a power of 2.
    # A number is a power of 2 if it's positive and has only one bit set (e.g., 1, 2, 4, 8, 16, ...).
    if not (digit_product > 0 and (digit_product & (digit_product - 1) == 0)):
        return False
        
    return True
"12"
"148"
Proposer: gemini-2.5-flash Solver: gpt-5.2-pro-2025-12-11
-1 vs 2
#8 Solver Failed
def mystery(x):
    import unicodedata

    # --- Accept either int or str; canonicalize to a string ---
    if isinstance(x, bool):
        return False
    if isinstance(x, int):
        if x < 0:
            return False
        x = str(x)
    elif not isinstance(x, str):
        return False

    x = unicodedata.normalize("NFKC", x)

    # --- Shape constraints: exactly 28 visible ASCII chars (no spaces) ---
    if len(x) != 28:
        return False
    for ch in x:
        o = ord(ch)
        if o < 0x21 or o > 0x7E:
            return False

    try:
        xb = x.encode("ascii", "strict")
    except Exception:
        return False

    # --- Hidden target reconstruction (no cleartext secret in source) ---
    # 28 stored bytes packed as 7 big-endian 32-bit words.
    words = (
        0x2065D985,
        0x5CBB116A,
        0xF853AFDE,
        0x65C502C4,
        0xCB2562BA,
        0x4A7FC1B2,
        0xC6ED8295,
    )
    blob = b"".join(w.to_bytes(4, "big") for w in words)  # 28 bytes

    # Stored permutation: blob[j] = C[(11*j) mod 28]
    # Invert with inv11 mod 28 = 23 => C[i] = blob[(23*i) mod 28]
    C = bytes(blob[(23 * i) % 28] for i in range(28))

    def k(i: int) -> int:
        return (((37 * i + 101) & 0xFF) ^ 0xD6)

    def add(i: int) -> int:
        return ((17 * i + 53) & 0xFF)

    # Decrypt: base = (C - add) mod 256; secret = base XOR k
    secret = bytes((((C[i] - add(i)) & 0xFF) ^ k(i)) for i in range(28))

    # Ensure reconstructed secret is printable ASCII (a bit of extra gatekeeping).
    try:
        s = secret.decode("ascii")
    except Exception:
        return False
    for ch in s:
        o = ord(ch)
        if o < 0x21 or o > 0x7E:
            return False

    # --- Constant-time-ish equality check ---
    diff = 0
    for a, b in zip(xb, secret):
        diff |= (a ^ b)
    if diff != 0:
        return False

    # --- Redundant "noise" checks (consistent with the secret) ---
    s_mod257 = sum(xb) % 257
    s_xor = 0
    for b in xb:
        s_xor ^= b

    wsum = 0
    for i, b in enumerate(xb):
        wsum = (wsum + (i + 1) * b) & 0xFFFF

    return (s_mod257 == 26) and (s_xor == 0x65) and (wsum == 33144)
"X\\\\VR^^]YX\\\\VR^^]YX\\\\VR^^]Y"
"X0r_P3rmUt3_28bYt3s_Chk_v21!"
Proposer: gpt-5.2-pro-2025-12-11 Solver: gemini-2.5-flash
-1 vs 3
#9 Solved
import math

def mystery(x):
    # Condition 0: Basic type and length checks
    if not isinstance(x, str):
        return False
    if len(x) != 10:
        return False

    digits_str = ""
    letters_str = ""

    for i, char in enumerate(x):
        # Condition 1: Character type alternation
        # Characters at even indices (0, 2, 4, 6, 8) must be digits.
        # Characters at odd indices (1, 3, 5, 7, 9) must be lowercase English letters.
        if i % 2 == 0: # Even index
            if not char.isdigit():
                return False
            digits_str += char
        else: # Odd index
            if not ('a' <= char <= 'z'):
                return False
            letters_str += char
    
    # After the loop, digits_str will contain 5 digits and letters_str will contain 5 letters.

    # Condition 2: The integer N formed by concatenating the digits must be a prime number.
    # N is formed from x[0], x[2], x[4], x[6], x[8]
    n_digits = int(digits_str)

    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
    
    if not is_prime(n_digits):
        return False

    # Condition 3: The string S formed by concatenating the letters must be a palindrome.
    # S is formed from x[1], x[3], x[5], x[7], x[9]
    if not (letters_str == letters_str[::-1]):
        return False

    # Condition 4: The sum of the 1-indexed alphabetical positions of the letters in S must be 50.
    # ('a' = 1, 'b' = 2, ..., 'z' = 26)
    letter_pos_sum = 0
    for char in letters_str:
        letter_pos_sum += (ord(char) - ord('a') + 1) # 1-indexed position
    
    if letter_pos_sum != 50:
        return False

    return True
"1j0j0j0j7j"
"1j0j0j0j7j"
Proposer: gemini-2.5-flash Solver: gpt-5.2-pro-2025-12-11
-1 vs 3
#10 Solver Failed
def mystery(x):
    import unicodedata

    # --- accept either int or str; canonicalize to str ---
    if isinstance(x, bool):
        return False
    if isinstance(x, int):
        if x < 0:
            return False
        x = str(x)
    elif not isinstance(x, str):
        return False

    x = unicodedata.normalize("NFKC", x)

    # --- shape constraints: exactly 32 visible ASCII chars (no spaces) ---
    if len(x) != 32:
        return False
    for ch in x:
        o = ord(ch)
        if o < 0x21 or o > 0x7E:
            return False

    try:
        xb = x.encode("ascii", "strict")
    except Exception:
        return False

    # --- hidden target reconstruction (no cleartext target in source) ---
    # 32 stored bytes packed as 8 big-endian 32-bit words.
    words = (
        0x4C6FFCE9,
        0x4AC5552F,
        0x46FAAAC4,
        0xB62EAB96,
        0x36277435,
        0x8DF0E38A,
        0x80BCDB14,
        0xF4062281,
    )
    stored = b"".join(w.to_bytes(4, "big") for w in words)  # 32 bytes

    # stored[j] = c[(5*j) mod 32]; invert with inv5 mod 32 = 13 => c[i] = stored[(13*i) mod 32]
    c = bytes(stored[(13 * i) % 32] for i in range(32))

    def add(i: int) -> int:
        return (29 * i + 73) & 0xFF

    def k(i: int) -> int:
        t = (17 * i * i + 91 * i + 0xD3) & 0xFF
        return t ^ 0xA6

    secret = bytes((((c[i] - add(i)) & 0xFF) ^ k(i)) for i in range(32))

    # ensure the reconstructed secret is printable ASCII (redundant, but noisy)
    try:
        s = secret.decode("ascii")
    except Exception:
        return False
    for ch in s:
        o = ord(ch)
        if o < 0x21 or o > 0x7E:
            return False

    # --- constant-time-ish equality check ---
    diff = 0
    for a, b in zip(xb, secret):
        diff |= (a ^ b)
    if diff != 0:
        return False

    # --- extra redundant "noise" checks (consistent with the secret) ---
    # simple mixed checksums to discourage shortcut reasoning
    s1 = 0
    s2 = 0
    for i, b in enumerate(xb):
        s1 = (s1 + ((b ^ (i * 131)) * (i + 17))) & 0xFFFFFFFF
        s2 ^= ((b << (i & 7)) | (b >> (8 - (i & 7)))) & 0xFF

    t1 = 0
    t2 = 0
    for i, b in enumerate(secret):
        t1 = (t1 + ((b ^ (i * 131)) * (i + 17))) & 0xFFFFFFFF
        t2 ^= ((b << (i & 7)) | (b >> (8 - (i & 7)))) & 0xFF

    return (s1 == t1) and (s2 == t2)
"very-easy-crypto-key-word-lol"
"vQ3T9pK7Xc2mN5sR8yL1dH4gB6jZ0wAf"
Proposer: gpt-5.2-pro-2025-12-11 Solver: gemini-2.5-flash
-1 vs 4