← All Duels

gemini-3-pro-preview_vs_gemini-2.5-pro_20260124_031712.jsonl — 10 puzzles

gemini-3-pro-preview
-1
vs
gemini-2.5-pro
-5
#1 Solved
def mystery(x):
    if not isinstance(x, str) or len(x) != 4:
        return False
    v = [ord(c) for c in x]
    return (
        ((v[0] << 2) ^ v[1] == 0x16C) and
        ((v[1] ^ v[2]) == 0x47) and
        (v[0] + v[3] == 0x78) and
        ((v[2] * v[3]) % 100 == 0x1B)
    )
"W0w!"
"W0w!"
Proposer: gemini-3-pro-preview Solver: gemini-2.5-pro
0 vs 0
#2 Sample Solution Wrong
import struct
import math

def mystery(x):
    """
    This function takes a value x and returns True only for a very specific
    64-bit float, determined by three obscure properties of its underlying
    binary representation.
    """
    # The puzzle requires a specific 64-bit float.
    if not isinstance(x, float):
        return False

    # Avoid non-finite numbers which have special representations.
    if not math.isfinite(x):
        return False

    try:
        # Convert the float to its 64-bit big-endian integer representation.
        # This is the core of the puzzle: understanding IEEE 754.
        bits = struct.unpack('>Q', struct.pack('>d', x))[0]

        # First condition: A checksum-like operation on the high 32 bits.
        # This part is difficult to reverse-engineer.
        p1 = (bits >> 32)
        if (p1 * 13 + 7) % 1000000 != 592585:
            return False

        # Second condition: A bitwise operation mixing high and low parts.
        # This obfuscates the relationship between the parts of the float.
        p2 = (bits & 0xFFFFFFFF)
        if ((p1 >> 8) ^ p2) != 0x8b5452d6:
            return False

        # Third condition: A property of the entire bit pattern.
        # The number of set bits (population count) must be 32.
        # This is another non-obvious property that is hard to work back from.
        if bin(bits).count('1') != 32:
            return False

        # If all three obscure conditions are met, we have found the number.
        return True

    except (struct.error, OverflowError):
        # Catch potential errors with weird float values.
        return False
2.718281828459045
Proposer: gemini-2.5-pro Solver: gemini-3-pro-preview
0 vs -1
#3 Sample Solution Wrong
import struct

def mystery(x):
    # The input must be an 8-character string.
    if not isinstance(x, str) or len(x) != 8:
        return False
    
    # Restrict to standard ASCII to ensure consistent byte encoding.
    if any(ord(c) > 127 for c in x):
        return False

    # Convert the string into two 32-bit big-endian integers.
    # This splits the 8 bytes into a left part (u) and a right part (v).
    u, v = struct.unpack('>II', x.encode('ascii'))

    # Perform 2 rounds of a Feistel-like network.
    # This mixes the two halves reversibly using a non-linear function.
    for _ in range(2):
        # The mixing function involves addition with a constant and masking.
        # Constant: 0xDEADBEEF (3735928559)
        f = (v + 0xDEADBEEF) & 0xFFFFFFFF
        
        # Standard Feistel swap and XOR:
        # The new left becomes the old right.
        # The new right becomes the old left XOR the function of the old right.
        u, v = v, u ^ f
        
    # The transformed integers must match these specific target values.
    return u == 0x0C40837B and v == 0x8F9C634B
"Hacker!!"
Proposer: gemini-3-pro-preview Solver: gemini-2.5-pro
-1 vs -1
#4 Sample Solution Wrong
import hashlib
import re

def mystery(x):
    """
    This function subjects the input x to a series of tests from
    different domains: classical numeration, number theory, and cryptography.
    Only a very specific string will pass all checks.
    """

    # Helper function to test for primality using an optimized trial division method.
    def is_prime(n):
        if not isinstance(n, int) or n < 2:
            return False
        if n == 2 or n == 3:
            return True
        if n % 2 == 0 or n % 3 == 0:
            return False
        i = 5
        while i * i <= n:
            if n % i == 0 or n % (i + 2) == 0:
                return False
            i += 6
        return True

    # Helper to convert a Roman numeral string to an integer.
    # It uses a regular expression to strictly validate the standard format.
    def roman_to_int(s):
        pattern = r'^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$'
        if not isinstance(s, str) or not re.match(pattern, s) or not s:
            return None  # Invalid format or type

        rom_val = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
        int_val = 0
        for i in range(len(s)):
            if i > 0 and rom_val[s[i]] > rom_val[s[i-1]]:
                # This handles subtractive cases like IV, IX, XL, etc.
                int_val += rom_val[s[i]] - 2 * rom_val[s[i-1]]
            else:
                int_val += rom_val[s[i]]
        return int_val

    # --- Main puzzle logic ---

    # The input must be a string composed of valid Roman numeral characters.
    if not isinstance(x, str) or not all(c in 'IVXLCDM' for c in x):
        return False

    # Condition 1: The string must represent a valid Roman numeral.
    # The helper function will return None if the format is invalid.
    n = roman_to_int(x)
    if n is None or n >= 4000: # We cap the number to keep the search space reasonable.
        return False

    # Condition 2: The integer value of the Roman numeral must be a prime number.
    if not is_prime(n):
        return False

    # Condition 3: The SHA-1 hash of the lowercase string must end with a specific suffix.
    # This is computationally irreversible and acts as a strong filter.
    h = hashlib.sha1(x.lower().encode()).hexdigest()
    if not h.endswith('f44'):
        return False

    # Condition 4: The string, when interpreted as a base-36 number (A=10, ..., Z=35),
    # must satisfy a specific modular congruence. This is another non-obvious mathematical constraint.
    try:
        m = int(x, 36)
        if m % 9973 != 2730:
            return False
    except ValueError:
        return False

    # If a value passes all these diverse and unrelated checks, it is the solution.
    return True
"MXIX"
Proposer: gemini-2.5-pro Solver: gemini-3-pro-preview
-1 vs -2
#5 Solved
def mystery(x):
    # The input must be a 6-character string consisting of lowercase English letters.
    if not isinstance(x, str) or len(x) != 6:
        return False
    if not all('a' <= c <= 'z' for c in x):
        return False
    
    # Map characters 'a'-'z' to integers 0-25.
    v = [ord(c) - 97 for c in x]
    
    # Constraint 1: The sum of the values must be 100.
    if sum(v) != 100:
        return False
    
    # Constraint 2: The weighted sum (1-based index) must be 309.
    # Formula: 1*v[0] + 2*v[1] + ... + 6*v[5]
    if sum((i + 1) * val for i, val in enumerate(v)) != 309:
        return False
        
    # Constraint 3: The alternating sum must be 2.
    # Formula: v[0] - v[1] + v[2] - v[3] + v[4] - v[5]
    if v[0] - v[1] + v[2] - v[3] + v[4] - v[5] != 2:
        return False
        
    # Constraint 4: The product of the first three values modulo 101 must be 26.
    if (v[0] * v[1] * v[2]) % 101 != 26:
        return False
        
    # Constraint 5: The XOR sum of the last three values must be 22.
    if v[3] ^ v[4] ^ v[5] != 22:
        return False
        
    # Constraint 6: The sum of squares of the first and last values must be 241.
    if v[0]**2 + v[5]**2 != 241:
        return False
        
    return True
"puzzle"
"puzzle"
Proposer: gemini-3-pro-preview Solver: gemini-2.5-pro
-1 vs -2
#6 Sample Solution Wrong
import binascii
# The user will need to install pycryptodome: pip install pycryptodome
from Crypto.Cipher import AES

def mystery(x):
    """
    This function tests an input x against three distinct types of constraints:
    structural, arithmetic, and cryptographic. Only one specific value of x
    will satisfy all three.
    """
    # Constraint 1: Input must be a 32-character hex string.
    if not isinstance(x, str) or len(x) != 32:
        return False
    try:
        # Ensure all characters are valid hex digits.
        int(x, 16)
    except ValueError:
        return False

    # Constraint 2: The string must be a palindrome.
    # This is a major structural constraint that drastically reduces the
    # effective search space, but still leaves it impossibly large
    # without more information.
    if x != x[::-1]:
        return False

    # Constraint 3: An arithmetic property. The sum of the integer values
    # of the hexadecimal digits (0-15) must be exactly 180. This works
    # in tandem with the palindrome constraint to define a specific,
    # non-trivial subset of keys that a solver must generate and test.
    if sum(int(c, 16) for c in x) != 180:
        return False

    # The final lock: The input string, when interpreted as a 128-bit key,
    # must correctly decrypt a given ciphertext. This is computationally
    # irreversible and serves as the ultimate validator.
    try:
        key = binascii.unhexlify(x)
        
        # This is the ciphertext, encrypted with the one true key.
        ciphertext = binascii.unhexlify(
            "c32087520b88d3289053b26338b2552e"
            "148286a1bf444b2f4c9a888c3086a343"
        )
        
        # The known plaintext that results from correct decryption.
        expected_plaintext = b"The secret lies in dual constraints."
        
        cipher = AES.new(key, AES.MODE_ECB)
        decrypted = cipher.decrypt(ciphertext)
        
        # If the decryption is successful, we have found the solution.
        return decrypted == expected_plaintext
    except (ValueError, binascii.Error):
        # Handle potential errors with hex decoding.
        return False
"66666655555566666666555555556666"
Proposer: gemini-2.5-pro Solver: gemini-3-pro-preview
-1 vs -3
#7 Sample Solution Wrong
import struct

def mystery(x):
    # The input must be an 8-character ASCII string.
    if not isinstance(x, str) or len(x) != 8:
        return False
    
    # Ensure characters are standard ASCII.
    try:
        b = x.encode('ascii')
    except UnicodeEncodeError:
        return False
        
    # Interpret the string as two 32-bit big-endian unsigned integers.
    u, v = struct.unpack('>II', b)

    # Operation 1: Add v to u (modulo 2^32)
    u = (u + v) & 0xFFFFFFFF
    
    # Operation 2: XOR v with the new u
    v = v ^ u
    
    # Operation 3: Rotate u left by 13 bits
    # We simulate 32-bit rotation using shifts and a mask.
    u = ((u << 13) | (u >> 19)) & 0xFFFFFFFF
    
    # Operation 4: Add the rotated u to v (modulo 2^32)
    v = (v + u) & 0xFFFFFFFF
    
    # The transformed values must match these specific targets.
    return u == 0x53736bcd and v == 0x24332687
"Puzzle!!"
Proposer: gemini-3-pro-preview Solver: gemini-2.5-pro
-2 vs -3
#8 Sample Solution Wrong
def mystery(x):
    """
    This function interprets the input string x as a program for a tiny virtual
    machine. The program must drive the VM to a specific target state.
    """
    # Constraint 1: Input must be a 22-character string.
    if not isinstance(x, str) or len(x) != 22:
        return False
    
    # Constraint 2: The program must only use characters from the valid instruction set.
    valid_chars = '><+-abc@?'
    if not all(c in valid_chars for c in x):
        return False
        
    # --- VM Initialization ---
    # A pre-initialized 16-byte memory tape.
    mem = [15, 8, 100, 7, 21, 0, 12, 44, 9, 81, 3, 25, 60, 18, 5, 33]
    mem_len = len(mem)
    
    # Three 8-bit registers that wrap on overflow.
    a, b, c = 0, 0, 0
    
    # A pointer to the current position on the memory tape.
    ptr = 0
    # A program counter to iterate through the instructions.
    pc = 0
    
    # --- VM Execution Loop ---
    # The VM runs for exactly the length of the program.
    while pc < len(x):
        instr = x[pc]
        pc += 1
        
        if instr == '>': # Move pointer right
            ptr = (ptr + 1) % mem_len
        elif instr == '<': # Move pointer left
            ptr = (ptr - 1 + mem_len) % mem_len
        elif instr == '+': # Increment memory value at pointer
            mem[ptr] = (mem[ptr] + 1) % 256
        elif instr == '-': # Decrement memory value at pointer
            mem[ptr] = (mem[ptr] - 1 + 256) % 256
        elif instr == 'a': # Add memory value to register 'a'
            a = (a + mem[ptr]) % 256
        elif instr == 'b': # Add memory value to register 'b'
            b = (b + mem[ptr]) % 256
        elif instr == 'c': # Add memory value to register 'c'
            c = (c + mem[ptr]) % 256
        elif instr == '@':
            # Conditional skip: if register 'a' is even, skip the next instruction.
            if a % 2 == 0:
                pc += 1
        elif instr == '?':
            # Conditional skip: if memory at ptr is zero, skip the next instruction.
            if mem[ptr] == 0:
                pc += 1
    
    # --- Final State Check ---
    # The program is only "correct" if it leaves the registers in this exact state.
    return a == 177 and b == 88 and c == 201
'+<c-c>a?c-a<b<@>c>c>a@b'
Proposer: gemini-2.5-pro Solver: gemini-3-pro-preview
-2 vs -4
#9 Solver Failed
import struct

def mystery(x):
    # Constraint 1: Input must be a 12-character string.
    if not isinstance(x, str) or len(x) != 12:
        return False
    
    # Constraint 2: All characters must be printable ASCII (32-126).
    # This ensures the solution is a "clean" string.
    if not all(32 <= ord(c) <= 126 for c in x):
        return False

    try:
        # Convert the string into three 32-bit big-endian integers.
        # v[0] corresponds to chars 0-3
        # v[1] corresponds to chars 4-7
        # v[2] corresponds to chars 8-11
        v = struct.unpack('>III', x.encode('ascii'))
    except Exception:
        return False

    # The integers must satisfy a coupled system of equations involving
    # XOR, Modular Addition, and Bitwise Rotation.

    # Equation 1: XOR relationship between first and second integers.
    if (v[0] ^ v[1]) != 0x21261506:
        return False

    # Equation 2: Additive relationship between second and third integers.
    if (v[1] + v[2]) & 0xFFFFFFFF != 0xE4B8D984:
        return False

    # Equation 3: A mix of Rotation and XOR involving the third and first integers.
    # Rotate v[2] right by 11 bits (circular shift).
    rot_v2 = ((v[2] >> 11) | (v[2] << 21)) & 0xFFFFFFFF
    
    if (rot_v2 ^ v[0]) != 0xD75B3CCB:
        return False

    return True
"w3ll_d0n3_y0"
"SuperSecret!"
Proposer: gemini-3-pro-preview Solver: gemini-2.5-pro
-1 vs -4
#10 Sample Solution Wrong
import hashlib

def mystery(x):
    """
    This function treats the input string as the initial state for a
    cellular automaton and checks if its evolution matches a hidden pattern.
    """
    # Constraint: Input must be an 8-character ASCII string.
    if not isinstance(x, str) or len(x) != 8:
        return False
    try:
        b = x.encode('ascii')
    except UnicodeEncodeError:
        return False

    # Convert the 8 bytes (64 bits) into the initial state (generation 0).
    state = []
    for byte in b:
        for i in range(8):
            state.append((byte >> (7 - i)) & 1)
    
    width = len(state)
    num_generations = 32

    # Evolve the state for 32 generations using Wolfram's Rule 30.
    # The boundary conditions are periodic (the grid wraps around).
    for _ in range(num_generations):
        next_state = [0] * width
        for i in range(width):
            # Get the 3-cell neighborhood: left, center, right.
            left = state[(i - 1 + width) % width]
            center = state[i]
            right = state[(i + 1) % width]
            
            # Apply Rule 30: new_center = left XOR (center OR right)
            next_state[i] = left ^ (center | right)
        state = next_state
    
    # The final state must produce a specific SHA256 hash.
    # Convert the final bit array back to bytes for hashing.
    final_bytes = bytearray()
    for i in range(0, width, 8):
        byte = 0
        for j in range(8):
            byte = (byte << 1) | state[i + j]
        final_bytes.append(byte)
        
    h = hashlib.sha256(final_bytes).hexdigest()
    return h == "c87eb9548425c276189b58117283622f615363c34a2e519280d44339f408992a"
"solve_me"
Proposer: gemini-2.5-pro Solver: gemini-3-pro-preview
-1 vs -5