← All Duels

gpt-5-mini-2025-08-07_vs_grok-4_20260124_064544.jsonl — 10 puzzles

gpt-5-mini-2025-08-07
0
vs
grok-4
-3
#1 Solved
def mystery(x):
    import hashlib, unicodedata, itertools, math
    # Accept strings or numbers; normalize to a stable UTF-8 byte sequence.
    try:
        s = str(x)
    except Exception:
        return False
    s = unicodedata.normalize('NFKC', s).strip()
    b = s.encode('utf-8')

    # A few harmless obfuscations to make quick reading slightly harder.
    # (They do not change the deterministic result.)
    # fold: split into chunks and recombine (no-op for our purposes)
    chunks = [b[i:i+7] for i in range(0, len(b), 7)]
    folded = b"".join(chunks)

    # compute sha256 of the normalized bytes
    h = hashlib.sha256(folded).hexdigest()

    # the target hash (hidden "secret" preimage). Extremely unlikely to be reversible.
    target = "2cf24dba5fb0a30e26e83b2ac5b9e29e" \
             "1b161e5c1fa7425e73043362938b9824"

    return h == target
"hello"
"hello"
Proposer: gpt-5-mini-2025-08-07 Solver: grok-4
0 vs 0
#2 Solved
def mystery(x):
    import hashlib, unicodedata, itertools, math
    # Accept strings or numbers; normalize to a stable UTF-8 byte sequence.
    try:
        s = str(x)
    except Exception:
        return False
    s = unicodedata.normalize('NFKD', s).strip()
    b = s.encode('utf-8')

    # A few harmless obfuscations to make quick reading slightly harder.
    # (They do not change the deterministic result.)
    # fold: split into chunks and recombine (no-op for our purposes)
    chunks = [b[i:i+8] for i in range(0, len(b), 8)]
    folded = b"".join(chunks)

    # compute md5 of the normalized bytes
    h = hashlib.md5(folded).hexdigest()

    # the target hash (hidden "secret" preimage). Extremely unlikely to be reversible.
    target = "7d793037a0760186574b0282f2f435e7"

    return h == target
"world"
"world"
Proposer: grok-4 Solver: gpt-5-mini-2025-08-07
0 vs 0
#3 Solved
def mystery(x):
    import hashlib, unicodedata, itertools, math
    # Accept strings or numbers; normalize to a stable UTF-8 byte sequence.
    try:
        s = str(x)
    except Exception:
        return False
    s = unicodedata.normalize('NFKC', s).strip()
    b = s.encode('utf-8')

    # A few harmless obfuscations
    # interleave: create a slightly transformed view (no effective change to the digest)
    interleaved = b''.join(b[i:i+1] for i in range(len(b)))

    # compute two different digests
    md5_hex = hashlib.md5(interleaved).hexdigest()
    sha1_hex = hashlib.sha1(interleaved).hexdigest()

    # Two known targets (chosen so that both must match)
    target_md5 = "5f4dcc3b5aa765d61d8327deb882cf99"
    target_sha1 = "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8"

    return md5_hex == target_md5 and sha1_hex == target_sha1
"password"
"password"
Proposer: gpt-5-mini-2025-08-07 Solver: grok-4
0 vs 0
#4 Sample Solution Wrong
def mystery(x):
    import hashlib, unicodedata, itertools, math
    # Accept strings or numbers; normalize to a stable UTF-8 byte sequence.
    try:
        s = str(x)
    except Exception:
        return False
    s = unicodedata.normalize('NFKD', s).strip()
    b = s.encode('utf-8')

    # A few harmless obfuscations to make quick reading slightly harder.
    # (They do not change the deterministic result.)
    # Use itertools to create a chained byte sequence (no-op)
    chained = b''.join(itertools.chain.from_iterable([bytes([byte]) for byte in b]))

    # compute three different digests
    md5_hex = hashlib.md5(chained).hexdigest()
    sha1_hex = hashlib.sha1(chained).hexdigest()
    sha256_hex = hashlib.sha256(chained).hexdigest()

    # Three known targets (chosen so that all must match)
    target_md5 = "ed076287532e86365e841e92bfc50d8c"
    target_sha1 = "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"
    target_sha256 = "936a185caaa266bb9cbe981e9e05cb78cd732b0b3280eb944412bb6f8f8f07af"

    return md5_hex == target_md5 and sha1_hex == target_sha1 and sha256_hex == target_sha256
"hello world"
Proposer: grok-4 Solver: gpt-5-mini-2025-08-07
0 vs -1
#5 Solved
def mystery(x):
    import unicodedata, math, itertools
    # Accept strings or numbers; normalize to a stable UTF-8 string.
    try:
        s = str(x)
    except Exception:
        return False
    s = unicodedata.normalize('NFKC', s).strip()

    # Build a 20-character target by deriving letters from Fibonacci numbers modulo 26.
    # The construction below is intentionally written in a slightly indirect style.
    a, b = 1, 1
    chars = []
    for i in range(1, 21):
        if i <= 2:
            v = 1
        else:
            # advance the Fibonacci pair; keep full integers (not reduced) then mod 26 when mapping to letters
            a, b = b, a + b
            v = b
        # map to lowercase ASCII letters a..z via (fib mod 26) -> 0..25 then +97
        ch = chr((v % 26) + 97)
        chars.append(ch)

    target = "".join(chars)

    # Final conditions: exact equality to the derived target and length sanity check
    return s == target and len(s) == 20
"bbcdfinvidloznmzlkvf"
'bbcdfinvidloznmzlkvf'
Proposer: gpt-5-mini-2025-08-07 Solver: grok-4
0 vs -1
#6 Solved
def mystery(x):
    import unicodedata, math, itertools
    # Accept strings or numbers; normalize to a stable UTF-8 string.
    try:
        s = str(x)
    except Exception:
        return False
    s = unicodedata.normalize('NFKC', s).strip()

    # Helper function to determine if a number is prime, with some indirect conditions.
    def is_prime(n):
        if n <= 1:
            return False
        if n == 2 or n == 3:
            return True
        if n % 2 == 0 or n % 3 == 0:
            return False
        # Use math to set loop limit indirectly
        limit = int(math.sqrt(n)) + 1
        for i in range(5, limit, 6):
            if n % i == 0 or n % (i + 2) == 0:
                return False
        return True

    # Generate the first 15 primes using itertools.count and filter.
    count = itertools.count(2)
    primes = []
    while len(primes) < 15:
        candidate = next(count)
        if is_prime(candidate):
            primes.append(candidate)

    # Map each prime to a character: (prime % 26) + 97
    # Introduce a no-op using math for obfuscation
    chars = []
    for p in primes:
        mod = p % 26
        adjusted = int(math.floor(mod + 97 - (mod * 0)))
        chars.append(chr(adjusted))

    target = "".join(chars)

    # Final condition: equality and length check
    return s == target and len(s) == len(primes)
"cdfhlnrtxdflprv"
"cdfhlnrtxdflprv"
Proposer: grok-4 Solver: gpt-5-mini-2025-08-07
0 vs -1
#7 Solved
def mystery(x):
    import unicodedata, math
    try:
        s = str(x)
    except Exception:
        return False
    s = unicodedata.normalize('NFKC', s).strip()

    # Build a target string of length 24 by taking n! mod 36 for n=1..24,
    # mapping 0..9 -> '0'..'9' and 10..35 -> 'a'..'z' (base36 characters).
    def to_base36_char(v):
        if 0 <= v <= 9:
            return chr(ord('0') + v)
        if 10 <= v <= 35:
            return chr(ord('a') + (v - 10))
        # out-of-range (shouldn't happen here)
        return '?'

    n = 24
    f = 1
    chars = []
    for i in range(1, n + 1):
        f = (f * i) % 36
        chars.append(to_base36_char(f))

    target = "".join(chars)

    return s == target and len(s) == n
"126oc0000000000000000000"
"126oc0000000000000000000"
Proposer: gpt-5-mini-2025-08-07 Solver: grok-4
0 vs -1
#8 Sample Solution Wrong
def mystery(x):
    import unicodedata, math, itertools
    # Accept strings or numbers; normalize to a stable UTF-8 string.
    try:
        s = str(x)
    except Exception:
        return False
    s = unicodedata.normalize('NFKD', s).strip()

    # LCG parameters with some indirect computation for obfuscation.
    m = 997
    a = 123
    c = int(math.pow(3, 5) * 1.875)  # computes to 456 (243 * 1.875 = 456)
    initial_seed = 789

    # Helper function for LCG update, with no-op math for indirection.
    def update(seed):
        multiplied = a * seed
        added = multiplied + c
        modded = added % m
        return int(math.floor(modded + 0.0))  # no-op

    # Generate 20 characters using LCG.
    seed = initial_seed
    chars = []
    for _ in itertools.repeat(None, 20):  # Use itertools for loop indirection
        seed = update(seed)
        val = seed % 26
        ch = chr(val + 97)
        chars.append(ch)

    target = "".join(chars)

    # Final condition: equality and length check
    return s == target and len(s) == 20
"owzskmzfsheywmkyhpbn"
Proposer: grok-4 Solver: gpt-5-mini-2025-08-07
0 vs -2
#9 Solved
def mystery(x):
    import unicodedata, math, itertools
    # Accept strings or numbers; normalize to a stable UTF-8 string.
    try:
        s = str(x)
    except Exception:
        return False
    s = unicodedata.normalize('NFKC', s).strip()

    # Build a 26-character target in an indirect way.
    # We'll generate the first 26 primes, then map each to a base36-like character.
    def is_prime(n):
        if n < 2:
            return False
        if n in (2, 3):
            return True
        if n % 2 == 0:
            return False
        r = int(math.sqrt(n))
        for i in range(3, r + 1, 2):
            if n % i == 0:
                return False
        return True

    primes = []
    cand = 2
    while len(primes) < 26:
        if is_prime(cand):
            primes.append(cand)
        cand += 1

    def to_base36_char(v):
        # map 0..9 -> '0'..'9', 10..35 -> 'a'..'z'
        if 0 <= v <= 9:
            return chr(ord('0') + v)
        if 10 <= v <= 35:
            return chr(ord('a') + (v - 10))
        return '?'

    chars = []
    # The arithmetic below is intentionally simple but written with some indirection
    # to make quick eyeballing less straightforward.
    for idx, p in enumerate(primes, start=1):
        i = int(idx)
        # v = (p*(i+3) + i*i + 5) % 36
        part1 = p * (i + 3)
        part2 = i * i
        summed = int(math.floor(part1 + part2 + 5))
        v = summed % 36
        chars.append(to_base36_char(v))

    target = "".join(chars)

    # Final condition: exact match and correct length
    return s == target and len(s) == len(chars)
"eo8yae8q2ekk2ww8yq4m2gswya"
"eo8yae8q2ekk2ww8yq4m2gswya"
Proposer: gpt-5-mini-2025-08-07 Solver: grok-4
0 vs -2
#10 Sample Solution Wrong
def mystery(x):
    import unicodedata, math, itertools
    # Accept strings or numbers; normalize to a stable UTF-8 string.
    try:
        s = str(x)
    except Exception:
        return False
    s = unicodedata.normalize('NFKC', s).strip()

    # LCG parameters with some indirect computation for obfuscation.
    m = 2 ** 10
    a = int(math.sqrt(10201))
    c = 3**5 + 90
    initial_seed = 10**3 // 2

    # Helper function for LCG update, with no-op math for indirection.
    def update(seed):
        multiplied = a * seed
        added = multiplied + c
        modded = added % m
        return int(math.floor(modded + 0.0))  # no-op

    # Generate 18 characters using LCG.
    seed = initial_seed
    chars = []
    for _ in itertools.repeat(None, 18):  # Use itertools for loop indirection
        seed = update(seed)
        val = seed % 26
        ch = chr(val + 97)
        chars.append(ch)

    target = "".join(chars)

    # Final condition: equality and length check
    return s == target and len(s) == 18
havqnetixytibyfgzy
Proposer: grok-4 Solver: gpt-5-mini-2025-08-07
0 vs -3