OverviewCode › R72
Code · blind round

R72 · Maze generation by recursive backtracking

blind round 4/8 local models answered

Answers below are anonymized and shuffled. Read, judge, pick a favourite — then scroll down and reveal the models.

2 of the 8 local models delivered nothing through our test harness in this round — for reasons that lie with our setup, not with the models. Those cards are marked DNF like any other, but they are not evidence about those models. Which ones, and why, is spelled out in the reveal.

The reveal also holds a frontier reference on the same task (Claude Opus 5) — kept out of sight here so it cannot steer your judgement.

Show task
Create ONE self-contained HTML file (STRICT LIMIT: max 120 lines total) that generates a 30x20 maze with the recursive backtracker on a <canvas>. Carve the maze one cell at a time: highlight the current cell, draw the stack path behind it in a second colour, and show the walls disappearing as they are carved. When the maze is complete, hold it briefly, then start a new one. Show the number of cells carved and the current stack depth. Smooth requestAnimationFrame animation, NO user input, starts immediately and keeps running (restart with a fresh random instance when finished). No external libraries, no comments needed. Output ONLY the HTML file content, nothing else.

The answers — blind

Local models (Brain cluster) — identical prompt, anonymized order
MODEL Adeepseek-r1:14bERRBLANKMINIFIEDFORMAT
Show code
```html
<!DOCTYPE html>
<html><body style="margin:0;display:flex;justify-content:center;align-items:center;height:100vh">
<canvas id="c"></canvas>
<script>
const c=document.getElementById('c'), ctx=c.getContext('2d');
const w=30,h=20,cs=5,s=w*h;
let walls=[],stack=[],current,path=[],carved=0,depth=0,timer=0;
function init(){walls=[];stack=[];current={x:Math.floor(Math.random()*w),y:Math.floor(Math.random()*h)};path=[];carved=0;depth=0;}
function getNeighbors(c){let n=[];const dirs=[[0,1],[1,0],[0,-1],[-1,0]];for(let d of dirs){let x=c.x+d[0],y=c.y+d[1];if(x>=0&&x<w&&y>=0&&y<h&&!path.find(p=>p.x==x&&p.y==y))n.push({x,y});}return n;}
function addWalls(c,p){let dx= p.x-c.x, dy=p.y-c.y; if(dx===1)walls.push({x:c.x*cs+cs-1,y:(c.y)*cs,width:2,height:cs*2});if(dy===1)walls.push({x:c.x*cs,(y+c.y+1)*cs-1,width:cs*2,height:2});if(dx==-1)walls.push({x:p.x*cs,(c.y)*cs,width:2,height:cs*2});if(dy==-1)walls.push({x:(c.x)*cs,(p.y)*cs-1,width:cs*2,height:2});}
function draw(){ctx.fillStyle='#333';for(let y=0;y<h;y++)for(let x=0;x<w;x++){let c={x,x,y};if(walls.some(wall=>wall.x==c.x*cs+cs/2&&wall.y==c.y*cs+cs/2))ctx.fillRect(c.x*cs,c.y*cs,cs,cs);}}
function update(){const newCarved=carved;let c=current,p={x:stack[stack.length-1]},drawWalls=true;if(stack.length>0){if(getNeighbors(current).length>0){let n=getNeighbors()[Math.floor(Math.random()*getNeighbors().length)];path.push(current);current={x:n.x,y:n.y};addWalls(current,n);carved++;}else{c=stack.pop();drawWalls=false;}}ctx.fillStyle='#fff';if(drawWalls)for(let wall of walls) ctx.fillRect(wall.x,wall.y,wall.width,wall.height);if(c.x!=current.x||c.y!=current.y){let line=[[c.x,c.y,current.x,current.y]];line.forEach(([x1,y1,x2,y2])=>ctx.beginPath().moveTo(x1*cs+cs/2,y1*cs).lineTo(x2*cs+cs/2,y2*cs).stroke());}if(stack.length>0)ctx.fillStyle='#555';else ctx.fillStyle='#666';path.forEach(cell=>{if(path.indexOf(cell)==s-1)ctx.fillStyle='#f00';else if(path.indexOf(cell)<s-1)ctx.fillStyle='#888';ctx.fillRect(cell.x*cs,cell.y*cs,cs,cs);})}function animate(){draw();update();c.width=w*cs;c.height=h*cs;timer--;if(s===carved||timer<0){init();requestAnimationFrame(animate)}else requestAnimationFrame(animate);}
window.onload=init;animate();
</script>
</body></html>
```
MODEL Bgemma4:26bDNF
No usable answer reached the harness (TIMEOUT). Counted as a did-not-finish.
MODEL Cqwen3:14bERRBLANKLIMFORMAT
Show code
```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Dynamic Maze Generator</title>
    <style>
        body { background: #1e1e1e; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; font-family: monospace; color: #ccc; }
        canvas { border: 2px solid #444; background: #fff; }
    </style>
</head>
<body>
    <canvas id="mazeCanvas" width="600" height="400"></canvas>

    <script>
        const canvas = document.getElementById('mazeCanvas');
        const ctx = canvas.getContext('2d');

        // Dimensions (Maze grid size, scaled for drawing)
        const COLS = 15; // Effective columns (30 cells / 2)
        const ROWS = 10; // Effective rows (20 cells / 2)
        const CELL_SIZE = 30; // Size of a single cell block

        let visited = [];
        let mazeState = [];
        let stack = [];
        let carvedCount = 0;
        let animationFrameId = null;

        // Initialize the grid state (walls and visitation)
        function initGrid() {
            visited = Array(ROWS).fill(0).map(() => Array(COLS).fill(false));
            mazeState = [];
            stack = [];
            carvedCount = 0;
            for (let r = 0; r < ROWS; r++) {
                mazeState[r] = [];
                for (let c = 0; c < COLS; c++) {
                    mazeState[r][c] = { visited: false, walls: [true, true, true, true] }; // [N, E, S, W]
                }
            }
        }

        // Recursive Backtracker implementation (DFS)
        function findPath(r, c) {
            if (r < 0 || r >= ROWS || c < 0 || c >= COLS || visited[r][c]) return;
            visited[r][c] = true;
            stack.push({ r, c });

            const directions = [
                [-1, 0], // North (N)
                [0, 1],  // East (E)
                [1, 0],  // South (S)
                [0, -1]  // West (W)
            ];
            directions.sort(() => Math.random() - 0.5);

            for (const [dr, dc] of directions) {
                const nr = r + dr;
                const nc = c + dc;
                if (!visited[nr][nc]) {
                    // Carve the wall between (r, c) and (nr, nc)
                    let wallIndex = 0;
                    if (dr === -1) { // Moving North: N wall of current cell (r,c) is removed
                        mazeState[r][c].walls[0] = false; 
                        mazeState[nr][nc].walls[2] = false; 
                    } else if (dc === 1) { // Moving East: E wall
                        mazeState[r][c].walls[1] = false;
                        mazeState[nr][nc].walls[3] = false;
                    } else if (dr === 1) { // Moving South: S wall
                        mazeState[r][c].walls[2] = false;
                        mazeState[nr][nc].walls[0] = false;
                    } else { // West: W wall
                        mazeState[r][c].walls[3] = false;
                        mazeState[nr][nc].walls[1] = false;
                    }

                    // Recursive call (simulating the carving)
                    findPath(nr, nc);
                }
            }
        }

        function drawMaze() {
            ctx.clearRect(0, 0, canvas.width, canvas.height);
            const maxCarved = ROWS * COLS;

            // Draw all walls first (Static background)
            for (let r = 0; r < ROWS; r++) {
                for (let c = 0; c < COLS; c++) {
                    const x = c * CELL_SIZE;
                    const y = r * CELL_SIZE;

                    ctx.strokeStyle = '#444';
                    ctx.lineWidth = 2;

                    // North wall (Top boundary of cell)
                    if (mazeState[r][c].walls[0]) { ctx.beginPath(); ctx.moveTo(x, y); ctx.lineTo(x + CELL_SIZE, y); ctx.stroke(); }
                    // East wall (Right boundary)
                    if (mazeState[r][c].walls[1]) { ctx.beginPath(); ctx.moveTo(x + CELL_SIZE, y); ctx.lineTo(x + CELL_SIZE, y + CELL_SIZE); ctx.stroke(); }
                    // South wall (Bottom boundary)
                    if (mazeState[r][c].walls[2]) { ctx.beginPath(); ctx.moveTo(x, y + CELL_SIZE); ctx.lineTo(x + CELL_SIZE, y + CELL_SIZE); ctx.stroke(); }
                    // West wall (Left boundary)
                    if (mazeState[r][c].walls[3]) { ctx.beginPath(); ctx.moveTo(x, y); ctx.lineTo(x, y + CELL_SIZE); ctx.stroke(); }
                }
            }

            // Draw visited path/stack trail
            ctx.fillStyle = 'rgba(100, 100, 255, 0.3)'; // Blueish semi-transparent fill
            for (let r = 0; r < ROWS; r++) {
                for (let c = 0; c < COLS; c++) {
                    if (visited[r][c]) {
                        ctx.fillRect(c * CELL_SIZE + 1, r * CELL_SIZE + 1, CELL_SIZE - 2, CELL_SIZE - 2);
                    }
                }
            }

            // Draw current cell highlight (Last element of stack)
            if (stack.length > 0) {
                const { r: cr, c: cc } = stack[stack.length - 1];
                ctx.fillStyle = 'rgba(255, 255, 0, 0.4)'; // Yellow highlight
                ctx.fillRect(cc * CELL_SIZE + 1, cr * CELL_SIZE + 1, CELL_SIZE - 2, CELL_SIZE - 2);
            }

            // Display Stats
            const stats = `Carved: ${carvedCount}/${ROWS * COLS} | Stack Depth: ${stack.length}`;
            ctx.fillStyle = '#ccc';
            ctx.font = '16px monospace';
            ctx.fillText(stats, 10, canvas.height - 10);
        }

        // Main Animation Loop
        function animate() {
            if (carvedCount < ROWS * COLS) {
                // If we carved a path successfully in the recursive step:
                drawMaze();
                animationFrameId = requestAnimationFrame(animate);
            } else {
                // Maze complete. Hold briefly, then restart.
                clearTimeout(window.restartTimer);
                if (animationFrameId) cancelAnimationFrame(animationFrameId);

                setTimeout(() => {
                    console.log("Maze finished. Restarting.");
                    initGrid();
                    findPath(0, 0); // Start carving the new maze
                    animate(); // Re-enter loop immediately
                }, 1500); // Hold for 1.5 seconds
            }
        }

        // Initial Setup and Start
        initGrid();
        findPath(0, 0);
        animate();
    </script>
</body>
</html>
```
No usable answer reached the harness (TIMEOUT). Counted as a did-not-finish.
MODEL Ellama3.1:8bDNF
No usable answer reached the harness (TIMEOUT). Counted as a did-not-finish.
MODEL Fqwen3.5:9bBLANKLIMFORMAT
Show code
```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Maze Carving Animation</title>
    <style>body { background: #111; display: flex; flex-direction: column; align-items: center; font-family: sans-serif; color: white; } canvas { border: 2px solid #333; margin-bottom: 20px; }#stats { width: 600px; display: flex; justify-content: space-around; padding: 10px 0; background: #222;}
    </style>
</head>
<body>

<canvas id="mazeCanvas" width="600" height="400"></canvas>
<div id="stats"><div>Carved: <span id="carvedCount">0</span></div><div>Depth: <span id="stackDepth">1</span></div></div>

<script>
const canvas = document.getElementById('mazeCanvas');
const ctx = canvas.getContext('2d');

const COLS = 30;
const ROWS = 20;
const CELL_SIZE = 20;
const WALL_COLOR = '#000';
const PATH_COLOR = '#555';
const CURRENT_COLOR = 'rgba(255, 255, 0, 0.8)';
const STACK_COLOR = 'rgba(0, 150, 200, 0.6)';

let mazeGrid;
let stack;
let carvedCount = 0;
let animationFrameId;

function initMaze() {
    mazeGrid = Array(COLS).fill(0).map(() => Array(ROWS).fill(false));
    stack = [];
    carvedCount = 0;
    document.getElementById('carvedCount').textContent = '0';
    document.getElementById('stackDepth').textContent = '1';

    // Start at a random point (or top-left for determinism)
    let startX = Math.floor(Math.random() * COLS);
    let startY = Math.floor(Math.random() * ROWS);

    // Reset canvas completely
    ctx.fillStyle = WALL_COLOR;
    ctx.fillRect(0, 0, canvas.width, canvas.height);

    // Mark start cell as visited and push to stack
    mazeGrid[startX][startY] = true;
    stack.push({x: startX, y: startY});
    
    animateStep();
}

function drawMaze() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    
    // Draw all permanent paths (already carved)
    for (let x = 0; x < COLS; x++) {
        for (let y = 0; y < ROWS; y++) {
            if (mazeGrid[x][y]) {
                ctx.fillStyle = PATH_COLOR;
                ctx.fillRect(x * CELL_SIZE + 1, y * CELL_SIZE + 1, CELL_SIZE - 2, CELL_SIZE - 2);
            } else {
                 ctx.fillStyle = WALL_COLOR;
                 ctx.fillRect(x * CELL_SIZE + 1, y * CELL_SIZE + 1, CELL_SIZE - 2, CELL_SIZE - 2);
            }
        }
    }

    // Draw stack path (secondary color)
    for (let i = 0; i < stack.length - 1; i++) {
        const p1 = stack[i];
        const p2 = stack[i+1];
         ctx.fillStyle = STACK_COLOR;
         ctx.fillRect(Math.min(p1.x, p2.x) * CELL_SIZE + 1, Math.min(p1.y, p2.y) * CELL_SIZE + 1, (Math.abs(p1.x - p2.x) + 1) * CELL_SIZE - 2, (Math.abs(p1.y - p2.y) + 1) * CELL_SIZE - 2);
    }

    // Draw current cell highlight
    const current = stack[stack.length - 1];
    ctx.fillStyle = CURRENT_COLOR;
    ctx.fillRect(current.x * CELL_SIZE + 1, current.y * CELL_SIZE + 1, CELL_SIZE - 2, CELL_SIZE - 2);
}

function getNeighbors(x, y) {
    let neighbors = [];
    const directions = [[0, 1], [0, -1], [1, 0], [-1, 0]];
    for (const [dx, dy] of directions) {
        const nx = x + dx;
        const ny = y + dy;
        if (nx >= 0 && nx < COLS && ny >= 0 && ny < ROWS && !mazeGrid[nx][ny]) {
            neighbors.push({x: nx, y: ny});
        }
    }
    return neighbors;
}

function selectRandom(arr) {
    return arr[Math.floor(Math.random() * arr.length)];
}

function carveMazeStep() {
    let current = stack[stack.length - 1];
    if (!current) return false; // Should not happen if initialized correctly

    const unvisitedNeighbors = getNeighbors(current.x, current.y);
    const neighborsToVisit = [];

    // Shuffle and select the first few valid moves for animation control
    unvisitedNeighbors.sort(() => Math.random() - 0.5);
    
    if (neighborsToVisit.length === 0) return false; // Maze finished

    let nextCell = neighborsToVisit.shift();

    // Mark the current cell as visited *before* moving to simulate carving
    mazeGrid[current.x][current.y] = true; 

    // Move and carve
    const carvedX = nextCell.x;
    const carvedY = nextCell.y;

    mazeGrid[carvedX][carvedY] = true;
    stack.push(nextCell);
    carvedCount++;

    return { success: true, current: current, next: nextCell };
}

function animateStep() {
    if (stack.length > 1 && stack.length < COLS * ROWS) {
        const step = carveMazeStep();
        drawMaze();
        document.getElementById('carvedCount').textContent = carvedCount;
        document.getElementById('stackDepth').textContent = stack.length;

        animationFrameId = requestAnimationFrame(animateStep);
    } else if (stack.length >= COLS * ROWS) {
        // Maze complete logic
        drawMaze();
        const currentDepthDisplay = document.getElementById('stackDepth');
        currentDepthDisplay.textContent = stack.length;

        setTimeout(() => {
            alert("Maze Complete! Restarting...");
            initMaze(); // Restart the sequence immediately
        }, 1500);
    } else if (stack.length === 0) {
         // Safety break
    }
}

window.onload = initMaze;
</script>

</body>
</html>
```
MODEL Gqwen3-coder:30bERRSTATLIMFORMAT
Show code
```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Animated Maze Generator</title>
    <style>body {background: #111; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; font-family: monospace; color: white;} canvas {border: 2px solid #aaa;}</style>
</head>
<body>
    <canvas id="mazeCanvas"></canvas>

    <script>
        const canvas = document.getElementById('mazeCanvas');
        const ctx = canvas.getContext('2d');

        // Dimensions (30 cells wide, 20 cells high)
        const COLS = 30;
        const ROWS = 20;
        const CELL_SIZE = 20;
        canvas.width = COLS * CELL_SIZE + CELL_SIZE / 2; // Account for outer walls/padding
        canvas.height = ROWS * CELL_SIZE + CELL_SIZE / 2;

        // State variables
        let mazeGrid = Array(ROWS).fill(0).map(() => Array(COLS).fill(false));
        let stack = [];
        let carvedCount = 0;
        let animationFrameId = null;
        let isRunning = true;

        const COLOR_WALL = '#444';
        const COLOR_PATH = '#1a1a1a';
        const COLOR_STACK = 'rgba(70, 70, 255, 0.8)'; // Semi-transparent blue for visited path
        const COLOR_CURRENT = 'yellow';

        function getNeighbors(r, c) {
            let neighbors = [];
            [[0, -1], [0, 1], [-1, 0], [1, 0]].forEach(([dr, dc]) => {
                const nr = r + dr;
                const nc = c + dc;
                if (nr >= 0 && nr < ROWS && nc >= 0 && nc < COLS && !mazeGrid[nr][nc]) {
                    neighbors.push({r: nr, c: nc});
                }
            });
            return neighbors;
        }

        function setVisited(r, c) {
            if (r >= 0 && r < ROWS && c >= 0 && c < COLS) {
                mazeGrid[r][c] = true;
            }
        }

        // Recursive Backtracker modified to be iterative/yield-like for animation
        function carve(r, c) {
            if (!isRunning) return Promise.resolve();

            stack.push({ r, c });
            setVisited(r, c);
            carvedCount++;

            let current = { r, c };

            // Draw the wall disappearing (the actual carving step)
            drawCarvingStep(current.r, current.c); 

            // Find unvisited neighbors
            let neighbors = getNeighbors(r, c);
            neighbors.sort(() => Math.random() - 0.5); // Random order

            for (const neighbor of neighbors) {
                if (!isRunning) return Promise.resolve();

                // Calculate the wall coordinates between current and neighbor
                const dr = current.r === neighbor.r ? 0 : Math.sign(neighbor.r - current.r);
                const dc = current.c === neighbor.c ? 0 : Math.sign(neighbor.c - current.c);

                // The wall is one cell away from the center of both cells
                let wallR = (current.r + neighbor.r) / 2;
                let wallC = (current.c + neighbor.c) / 2;

                // This function needs to simulate a recursive call that pauses for animation
                return new Promise(resolve => {
                    setTimeout(() => {
                        if (!isRunning) return resolve();
                        
                        // Draw the wall removal and path connection
                        drawWallRemoval(current.r, current.c, neighbor.r, neighbor.c);

                        carve(neighbor.r, neighbor.c).then(() => {
                            resolve();
                        });
                    }, 5); // Small delay for visibility
                });
            }
        }


        // --- Drawing Functions ---

        function drawRect(x, y, w, h, color) {
            ctx.fillStyle = color;
            ctx.fillRect(x + 1, y + 1, w - 1, h - 1); // Subtracting padding/border effect
        }

        function drawInitialMaze() {
            // Draw all cells as solid blocks (walls) initially
            for (let r = 0; r < ROWS; r++) {
                for (let c = 0; c < COLS; c++) {
                    drawRect(c * CELL_SIZE, r * CELL_SIZE, CELL_SIZE, CELL_SIZE, COLOR_WALL);
                }
            }
        }

        function drawCurrentHighlight(r, c) {
            // Highlight the current cell (where generation paused)
            ctx.fillStyle = 'rgba(255, 255, 0, 0.3)';
            const x = c * CELL_SIZE;
            const y = r * CELL_SIZE;
            ctx.fillRect(x + 1, y + 1, CELL_SIZE - 2, CELL_SIZE - 2);
        }

        function drawStackPath() {
            // Draw all previously visited cells (the stack path)
            let pathSurface = document.createElement('canvas');
            pathSurface.width = canvas.width;
            pathSurface.height = canvas.height;
            let pCtx = pathSurface.getContext('2d');
            pCtx.fillStyle = COLOR_STACK;
            
            for (let i = 0; i < stack.length - 1; i++) { // Don't draw the current cell as part of 'path' if we are carving it now
                const p = stack[i];
                pCtx.fillRect(p.c * CELL_SIZE + 1, p.r * CELL_SIZE + 1, CELL_SIZE - 2, CELL_SIZE - 2);
            }

            ctx.drawImage(pathSurface, 0, 0);
        }

        function drawCarvingStep(r, c) {
             // Draw the current cell as part of the path/visited set
            ctx.fillStyle = COLOR_STACK;
            const x = c * CELL_SIZE;
            const y = r * CELL_SIZE;
            ctx.fillRect(x + 1, y + 1, CELL_SIZE - 2, CELL_SIZE - 2);
        }

        function drawWallRemoval(r1, c1, r2, c2) {
            // Calculate the coordinates of the wall between (r1, c1) and (r2, c2)
            const pathX = Math.min(c1, c2) * CELL_SIZE + CELL_SIZE / 2;
            const pathY = Math.min(r1, r2) * CELL_SIZE + CELL_SIZE / 2;

            // If horizontal move (same row): wall is at the edge of the column index change
            if (r1 === r2) {
                // Wall coordinates are between c1 and c2
                const startCol = Math.min(c1, c2);
                const endCol = Math.max(c1, c2);
                const wallX = (startCol + 1) * CELL_SIZE - CELL_SIZE / 2;
                const wallY = r1 * CELL_SIZE + CELL_SIZE/2;
                ctx.fillStyle = '#333'; // Fading out the wall
                ctx.fillRect(wallX, wallY, (endCol - startCol) * CELL_SIZE, 1);

            // If vertical move (same column): wall is at the edge of the row index change
            } else {
                // Wall coordinates are between r1 and r2
                const startRow = Math.min(r1, r2);
                const endRow = Math.max(r1, r2);
                const wallX = c1 * CELL_SIZE + CELL_SIZE/2;
                const wallY = (startRow + 1) * CELL_SIZE - CELL_SIZE / 2;
                ctx.fillStyle = '#333'; // Fading out the wall
                ctx.fillRect(wallX, wallY, 1, (endRow - startRow) * CELL_SIZE);
            }
        }


        // --- Animation Loop and Control ---

        async function animate() {
            if (!isRunning || stack.length === 0 && carvedCount > 0) {
                clearInterval(animationFrameId);
                
                // Maze Complete Handling
                const display = document.getElementById('mazeCanvas');
                display.style.transition = 'opacity 1s';
                display.style.opacity = '0';

                setTimeout(() => {
                    console.log("Maze complete! Restarting...");
                    resetState();
                    animate(); // Loop automatically
                    display.style.opacity = '1';

                }, 1000);
                return;
            }

            // Clear canvas for the frame
            ctx.clearRect(0, 0, canvas.width, canvas.height);

            // Draw existing walls (base layer) and paths
            drawInitialMaze(); // Redraw initial state
            drawStackPath();   // Overwrite visited cells with path color
            
            const r = stack[stack.length - 1].r;
            const c = stack[stack.length - 1].c;

            // Draw the current cell highlight (before carving happens)
            drawCurrentHighlight(r, c);

            if (carvedCount < COLS * ROWS) {
                await carve(r, c); // This function handles drawing and recursion/delay
            }


            animationFrameId = requestAnimationFrame(animate);
        }

        function resetState() {
            mazeGrid.fill(false);
            stack = [];
            carvedCount = 0;
            document.getElementById('mazeCanvas').style.opacity = '1';
        }

        // Start the process immediately
        resetState();
        animate();

    </script>
</body>
</html>
```
MODEL Hqwen3:8bDNF
No usable answer reached the harness (ERR). Counted as a did-not-finish.
Reveal the models— compare the answers first, then open. Names, blind scores and latencies are hidden until you do.

Who wrote what

Blind labelModelBlind scoreLatencyStatus
MODEL A deepseek-r1:14b 74.9 sOK
MODEL B gemma4:26b harness
MODEL C qwen3:14b 29.1 sOK
MODEL D mistral-small:24b DNF
MODEL E llama3.1:8b DNF
MODEL F qwen3.5:9b 53.4 sOK
MODEL G qwen3-coder:30b 34.7 sOK
MODEL H qwen3:8b harness

Frontier reference — outside the blind field

These models answered the identical prompt outside the blind field. They are deliberately not scored and not part of the blind comparison — they are there so you can see where a frontier model lands on the same task.

Collected differently from the blind field: the local models run through a plain API harness, the frontier references through a context-free agent, one shot, no retries. Response times are therefore not comparable and are not shown. On two English tasks the reference answer came back in German — an artefact of that harness, flagged on the affected rounds.
Claude Opus 5frontier reference
Show code
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Recursive Backtracker Maze</title>
<style>
*{box-sizing:border-box}
body{margin:0;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;
background:radial-gradient(circle at 50% 0%,#141c33,#070a12 70%);color:#c8d4f0;font:14px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace}
h1{margin:0;font-size:13px;font-weight:600;letter-spacing:.28em;text-transform:uppercase;color:#6f7fa8}
canvas{border-radius:10px;background:#0b0f1a;box-shadow:0 0 0 1px #1e2a47,0 24px 60px -20px #000;max-width:96vw;height:auto}
#hud{display:flex;gap:28px;font-variant-numeric:tabular-nums}
#hud b{display:block;font-size:20px;font-weight:600;color:#e8f0ff}
#hud span{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:#63719a}
</style>
</head>
<body>
<h1>Recursive Backtracker</h1>
<canvas id="c"></canvas>
<div id="hud">
<div><b id="s1">0</b><span>cells carved</span></div>
<div><b id="s2">0</b><span>stack depth</span></div>
<div><b id="s3">-</b><span>state</span></div>
</div>
<script>
const COLS=30,ROWS=20,CS=26,W=COLS*CS,H=ROWS*CS,DPR=Math.min(devicePixelRatio||1,2);
const cv=document.getElementById('c'),g=cv.getContext('2d');
cv.width=W*DPR;cv.height=H*DPR;cv.style.width=W+'px';cv.style.height=H+'px';g.scale(DPR,DPR);
const D=[[0,-1,1,4],[1,0,2,8],[0,1,4,1],[-1,0,8,2]];
const s1=document.getElementById('s1'),s2=document.getElementById('s2'),s3=document.getElementById('s3');
let wall,seen,onStack,stack,carved,done,holdUntil,acc=0,last=0;
function reset(){
  wall=new Uint8Array(COLS*ROWS).fill(15);seen=new Uint8Array(COLS*ROWS);onStack=new Uint8Array(COLS*ROWS);
  const s=(Math.random()*COLS|0)+(Math.random()*ROWS|0)*COLS;
  seen[s]=1;onStack[s]=1;stack=[s];carved=1;done=false;holdUntil=0;
}
function step(){
  if(done)return;
  const i=stack[stack.length-1],x=i%COLS,y=i/COLS|0,opts=[];
  for(let d=0;d<4;d++){const nx=x+D[d][0],ny=y+D[d][1];
    if(nx>=0&&ny>=0&&nx<COLS&&ny<ROWS&&!seen[nx+ny*COLS])opts.push(d);}
  if(opts.length){
    const d=opts[Math.random()*opts.length|0],j=(x+D[d][0])+(y+D[d][1])*COLS;
    wall[i]&=~D[d][2];wall[j]&=~D[d][3];
    seen[j]=1;onStack[j]=1;stack.push(j);carved++;
  }else{onStack[i]=0;stack.pop();if(!stack.length){done=true;holdUntil=performance.now()+1300;}}
}
function draw(t){
  g.clearRect(0,0,W,H);
  for(let i=0;i<COLS*ROWS;i++){
    if(!seen[i])continue;
    const x=(i%COLS)*CS,y=(i/COLS|0)*CS;
    g.fillStyle=onStack[i]?'#2b2160':'#131c33';
    g.fillRect(x+1,y+1,CS-2,CS-2);
  }
  g.lineWidth=1;g.strokeStyle='#7c5cff88';g.beginPath();
  for(let k=0;k<stack.length-1;k++){
    const a=stack[k],b=stack[k+1];
    if(k===0)g.moveTo((a%COLS)*CS+CS/2,(a/COLS|0)*CS+CS/2);
    g.lineTo((b%COLS)*CS+CS/2,(b/COLS|0)*CS+CS/2);
  }
  g.stroke();
  if(stack.length){
    const i=stack[stack.length-1],x=(i%COLS)*CS,y=(i/COLS|0)*CS,p=.6+.4*Math.sin(t/140);
    g.save();g.shadowBlur=16;g.shadowColor='#22d3ee';
    g.fillStyle='rgba(34,211,238,'+p.toFixed(2)+')';g.fillRect(x+3,y+3,CS-6,CS-6);g.restore();
  }
  g.strokeStyle=done?'#4d6ea8':'#38507f';g.lineWidth=2;g.lineCap='square';g.beginPath();
  for(let i=0;i<COLS*ROWS;i++){
    const x=(i%COLS)*CS,y=(i/COLS|0)*CS,w=wall[i];
    if(w&1){g.moveTo(x,y);g.lineTo(x+CS,y);}
    if(w&8){g.moveTo(x,y);g.lineTo(x,y+CS);}
    if(i%COLS===COLS-1&&w&2){g.moveTo(x+CS,y);g.lineTo(x+CS,y+CS);}
    if((i/COLS|0)===ROWS-1&&w&4){g.moveTo(x,y+CS);g.lineTo(x+CS,y+CS);}
  }
  g.stroke();
  s1.textContent=carved;s2.textContent=stack.length;
  s3.textContent=done?'complete':'carving';
  s3.style.color=done?'#4ade80':'#e8f0ff';
}
function loop(t){
  if(!last)last=t;
  const dt=Math.min(t-last,120);last=t;
  if(done){if(t>holdUntil){reset();acc=0;}}
  else{acc+=dt;while(acc>=16&&!done){step();acc-=16;}}
  draw(t);
  requestAnimationFrame(loop);
}
reset();requestAnimationFrame(loop);
</script>
</body>
</html>