OverviewCode › R86
Code · blind round

R86 · Scrolling terrain from value noise

blind round 5/8 local models answered

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

The field: deepseek-r1:14b · gemma4:26b · llama3.1:8b · mistral-small:24b · qwen3-coder:30b · qwen3:14b · qwen3:8b · qwen3.5:9b — listed alphabetically, which is not the order of the cards below.

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.

Show task
Create ONE self-contained HTML file (STRICT LIMIT: max 7000 characters in total — this is a budget on characters, not on lines, so removing line breaks does not help) that renders an endlessly scrolling landscape from value noise on a <canvas>: build a noise field by interpolating smoothly between random values at grid points, sum two or three octaves, and draw the result as a height profile coloured by altitude (water, sand, grass, rock, snow). Scroll the world sideways so new terrain is generated on the fly and never repeats visibly. Show the current world offset. 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 Aqwen3-coder:30bERRBLANKMINIFIED
Show code
<!DOCTYPE html>
<html><head><title>Infinite Noise Landscape</title><style>body{background:#000;margin:0;overflow:hidden}canvas{display:block}</style></head><body><canvas id="c"></canvas><script>let c=document.getElementById('c');let ctx=c.getContext('2d');c.width=window.innerWidth;c.height=window.innerHeight;let offset=0;let seed=Math.random();let lastTime=0;const scale=0.005;const numOctaves=6;function pseudoNoise(x,y,z){let n=Math.sin(x*123.4+seed)*453.1+Math.cos(y*987.6+seed)*453.1+Math.sin(z*543.2+seed)*453.1;return Math.abs((n-0)/453.1);}//Modified trigonometric noise function for speed and simplicity
function getNoise(x,y){let n=pseudoNoise(x*scale, y*scale, 0);return (Math.sin(x*0.1+seed)*0.4+Math.cos(y*0.1+seed)*0.4+Math.sin((x+y)*0.05+seed)*0.2)/1.0;}
function fBM(x,y){let total=0;let amplitude=1;let frequency=1;for(let i=0;i<numOctaves;i++){total+=getNoise(x*frequency, y*frequency)*amplitude;amplitude*=0.5;frequency*=2;}return total/Math.pow(2,numOctaves-1);}
function drawWorld(){const width=c.width;const height=c.height;ctx.clearRect(0,0,width,height);let imageData=ctx.getImageData(0,0,width,height).data;for(let x=0;x<width;x+=2){for(let y=0;y<height;y+=2){const nx=x/2;const ny=y/2;const heightVal=fBM(nx-offset,ny);let h=Math.floor(heightVal*5)+10;let color=0;if(h<=10){color=Math.min(255, Math.max(0, 255*(1-h/10)));}else if(h<=30){color=Math.floor(Math.random()*100+50);}//Sand
else if(h<=60){color=Math.floor(Math.random()*80+100);}//Grass
else if(h<=90){color=40;}//Rock
else{color=255;}//Snow

let r,g,b;if(h<=10){r=g=b=Math.floor(255*(1-h/10));}else if(h<=30){r=Math.max(50, Math.random()*100);g=Math.max(50, Math.random()*100);b=Math.floor((h-10)*2+50);}else if(h<=60){r=Math.min(255, Math.max(80, 150-(h-30)/3));g=Math.min(255, Math.max(100, 150-(h-30)/3));b=Math.floor(100);}(r,g,b);
imageData[x*4]=r;imageData[x*4+1]=g;imageData[x*4+2]=b;imageData[x*4+3]=255;}}ctx.putImageData(imageData,0,0);}
function loop(timestamp){if(!lastTime)lastTime=timestamp;const elapsed=timestamp-lastTime/1000;offset+=elapsed*0.2;drawWorld();lastTime=timestamp;}requestAnimationFrame(loop);window.addEventListener('resize',()=>{(c.width=window.innerWidth;c.height=window.innerHeight;)});
</script></body></html>
MODEL Bmistral-small:24bERRBLANKFORMAT
Show code
```html
<canvas id="landscape" style="border:1px solid #000;"></canvas>
<script>
// Noise generation functions:
function lerp(x,y,a){return x+(y-x)*a;}
function fade(t){return t*t*t*(t*(t*6-15)+10);}
function grad(hash,x,y){let h=hash&3;let u=(h&1)?x:y;let v=(h&2)?y:x;return ((h&1) ? -u : u)+(h&2?v:-v);}
function noise(x,y){const p=[[151, 164, 180, 137], [91, 192, 129, 131],[192, 101, 143, 134],[151, 131, 180, 164]];let X=(x&255)+((y&255)<<8);X=(((p[X&255]|(p[((X>>8)&255)]<<8))|(X<<16)));

	return (grad(p[(X<<13)^X>>7]%4, x,y) + grad(p[((X>>19)^X>>20) * 4], x - y, y))/Math.sqrt(3);}

function fbm(x,y,n){let a=0;let b=1;for(let i=0;i<n;i++){a+=b*noise(x/b,y/b);b/=2}}return a;}
function drawTerrain(){const canvas=document.getElementById('landscape');const ctx=canvas.getContext('2d');
    let width=window.innerWidth;let height=window.innerHeight;
    canvas.width=width;canvas.height=height;
    const imgData=new ImageData(256,1);
    let offsetX=-Math.floor(-scrollPos/4)*4;
    for(let x=0;x<width+4*3;x++){
        let n=fbm((offsetX+x)/16, 0, 3) * 8 + 80;
        let c=255;
        if(n<-10)n=-10;
        else if(n>160){c=Math.floor(255*Math.sin((n-140)/10));}
        imgData.data[x*4]=c;imgData.data[x*4+1]=(c/3)|0;imgData.data[x*4+2]=(c/2)|0;imgData.data[x*4+3]=255;}
    ctx.putImageData(imgData, 4);ctx.fillStyle="black";ctx.font="18px Arial";ctx.fillText(`Offset: ${Math.floor(scrollPos)}`, 10, height-20);
    scrollPos+=scrollSpeed;if(Math.abs(scrollPos)>1e6){location.reload();}}let scrollPos=0;
let scrollSpeed=-1.5;function animate(){drawTerrain();
    requestAnimationFrame(animate);}requestAnimationFrame(animate);
</script>
```
MODEL Cqwen3:14bSTATFORMAT
Show code
```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Endless Noise World</title>
    <style>
        body { margin: 0; overflow: hidden; background: #000; }
        canvas { display: block; cursor: default; }
    </style>
</head>
<body>

<canvas id="c"></canvas>

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

let W, H;
let offset = 0;
const MAX_OCTAVES = 6;
const FREQ_BASE = 0.015;
const AMPLITUDE_BASE = 0.8;

function init() {
    W = c.width = window.innerWidth;
    H = c.height = window.innerHeight;
}
window.addEventListener('resize', () => {
    c.width = c.height = W = H = Math.min(window.innerWidth, window.innerHeight); // Keep it square for simplicity if needed, or just use full size
    W = c.width = window.innerWidth;
    H = c.height = window.innerHeight;
});

// Pseudo-noise function using trig functions for smooth gradient simulation
function noise2D(x, y) {
    let n = 0;
    n += Math.sin(x * 13.9 + y * 1.7) * 45;
    n += Math.cos(y * 8.1 - x * 16.3) * 25;
    return (Math.sin(n) / Math.sin(0)) % 1.0; // Normalize to [0, 1] range roughly
}

// Multi-octave noise generator
function getNoiseHeight(x, y) {
    let total = 0;
    let frequency = FREQ_BASE;
    let amplitude = AMPLITUDE_BASE;
    let sum = 0;
    for (let i = 0; i < MAX_OCTAVES; i++) {
        total += noise2D(x * frequency, y) * amplitude;
        sum += amplitude;
        frequency *= 2.0;
        amplitude *= 0.5;
    }
    return total / sum; // Normalize the result to roughly [-1, 1] range
}

// Color mapping based on normalized height (h): -Water to +Snow
function getColor(h) {
    let normalized = Math.max(-1, Math.min(1, h));
    let r = 0, g = 0, b = 0;

    if (normalized < 0.2) { // Water (Deep blue -> Shallow blue)
        r = Math.floor(5 + normalized * 10);
        g = Math.floor(10 + (normalized + 0.2) * 30);
        b = Math.floor(100 - (Math.abs(normalized) * 100));
    } else if (normalized < 0.45) { // Sand/Beach (Yellowish-brown)
        r = Math.floor(200 + (normalized - 0.2) * 80);
        g = Math.floor(190 - (normalized - 0.2) * 50);
        b = Math.floor(100 - (normalized - 0.2) * 30);
    } else if (normalized < 0.65) { // Grass/Forest (Green)
        r = Math.floor(50 + (normalized - 0.45) * 100);
        g = Math.floor(200);
        b = Math.floor(50 + (normalized - 0.45) * 80);
    } else if (normalized < 0.9) { // Rock/Mountain (Grey/Brown)
         r = Math.floor(150);
         g = Math.floor(Math.max(50, 200 - (normalized - 0.65) * 70));
         b = Math.floor(100 + (normalized - 0.65) * 40);
    } else { // Snow (White/Light blue)
        r = g = b = Math.floor(255 - (normalized - 0.9) * 100);
    }

    return `rgb(${Math.max(0, r)}, ${Math.max(0, g)}, ${Math.max(0, b)})`;
}


function draw() {
    // Draw the terrain profile across the entire width
    for (let x = 0; x < W; x++) {
        const currentX = x + offset * 0.5; // Apply scroll offset
        ctx.strokeStyle = '';

        // Iterate y from top to bottom, drawing horizontal slices
        for (let y = 0; y < H; y += 2) {
            // Sample height at the current coordinates
            const h = getNoiseHeight(currentX * 0.1, y * 0.05);
            const color = getColor(h);

            ctx.beginPath();
            ctx.strokeStyle = color;
            ctx.lineWidth = 2;
            ctx.moveTo(x, y);
            // We are drawing the height profile across all columns at a fixed Y level
            // For simplicity and performance, we draw lines representing the altitude change for this column 'x'
             
        }
    }

    // Optimized rendering: Draw vertical strips of constant width (2 pixels)
    ctx.clearRect(0, 0, W, H);
    for (let x = 0; x < W; x += 2) {
        const currentX = x + offset * 0.5;
        
        // Determine the height profile for this column 'x'
        // We iterate through vertical slices of the canvas to draw a gradient/column
        for (let y_level = 0; y_level < H; y_level += 2) {
            const h = getNoiseHeight(currentX * 0.1, y_level * 0.05);
            ctx.fillStyle = getColor(h);
            ctx.fillRect(x, y_level, 2, 2);
        }
    }

    // Display World Offset (Top Left)
    ctx.fillStyle = 'rgba(255, 255, 255, 0.8)';
    ctx.font = "16px monospace";
    ctx.fillText(`Offset: ${offset.toFixed(3)}`, 10, 20);

    // Scroll the world and update offset for next frame
    offset += 0.05;
}


function animate() {
    draw();
    requestAnimationFrame(animate);
}

init();
animate();
</script>

</body>
</html>
```
MODEL Dgemma4:26bDNF
No usable answer reached the harness (TIMEOUT). Counted as a did-not-finish.
MODEL Eqwen3.5:9bOKFORMAT
Show code
```html
<!DOCTYPE html>
<html>
<head><title>Infinite Noise Landscape</title></head>
<body style="margin:0; overflow:hidden;"><canvas id="c"></canvas><script>
const c = document.getElementById('c');
const ctx = c.getContext('2d');

let W, H;
let offsetX = 0;

function resize() {
    W = window.innerWidth;
    H = window.innerHeight;
    c.width = W;
    c.height = H;
}
window.addEventListener('resize', resize);
resize();

// Simple seeded pseudo-random number generator (for consistent noise generation)
let seed = Math.random() * 10000;
function rand(x, y) {
    let s = x * 34527 + y * 59621 + seed;
    s ^= s >>> 18;
    return (s / 0x100000000);
}

// Interpolation function: smoothstep
function smooth(t) { return t * t * t * (t * (t * 6 - 15) + 10); }

// Perlin/Value Noise implementation for a single point (x, y)
function noise(x, y) {
    let X = Math.floor(x);
    let Y = Math.floor(y);
    let xf = x - X;
    let yf = y - Y;

    // Interpolate 4 corners using randomized values
    return (
        smooth(xf) * (rand(X, Y) * (1 - smooth(yf)) + rand(X + 1, Y) * smooth(yf)) +
        smooth(Math.min(xf, 1 - xf)) * (rand(X + 1, Y) * (1 - smooth(yf)) + rand(X, Y + 1) * smooth(yf))
    ) / 2; // Normalize the range slightly

}

// Fractional Brownian Motion (FBM) using multiple octaves
function fbm(x, y, scale, octaves, persistence, lacunarity) {
    let total = 0;
    let frequency = 1;
    let amplitude = 1;
    let maxValue = 0;

    for (let i = 0; i < octaves; i++) {
        total += noise(x * scale * frequency, y * scale * frequency) * amplitude;
        maxValue += amplitude;
        amplitude *= persistence;
        frequency *= lacunarity;
    }
    return total / maxValue; // Normalize the result roughly to [-1, 1]
}

// Color mapping based on normalized height (0.0 to 1.0)
function getColor(h) {
    h = Math.max(0, Math.min(1, h));
    let r, g, b;

    if (h < 0.2) { // Water (deep blue)
        r = Math.floor(Math.sin(h * 5) * 50 + 100);
        g = Math.floor(Math.sin(h * 3) * 50 + 80);
        b = Math.floor(Math.cos(h * 2) * 50 + 120);
    } else if (h < 0.35) { // Sand/Shallow Water (yellow-brown)
        r = 255; g = Math.floor((h - 0.2) * 400); b = 0;
    } else if (h < 0.5) { // Grass/Dirt (green)
        r = Math.floor(100 + (h - 0.35) * 150); g = 180; b = Math.floor(50 + (h - 0.35) * 100);
    } else if (h < 0.7) { // Rock/Stone (gray)
        r = g = b = Math.floor(100 + (h - 0.5) * 200);
    } else { // Snow/Peak (white)
        r = g = b = Math.floor(255 * (h - 0.7) / 0.3);
    }

    return `rgb(${Math.min(255, r)}, ${Math.min(255, g)}, ${Math.min(255, b)})`;
}

function draw() {
    ctx.clearRect(0, 0, W, H);

    // Draw the world offset indicator (top left)
    ctx.fillStyle = 'rgba(0, 0, 0, 0.6)';
    ctx.fillRect(10, 10, 250, 30);
    ctx.fillStyle = 'white';
    ctx.font = '14px Arial';
    ctx.fillText('Offset X: ' + offsetX.toFixed(Math.floor(offsetX % 100)) + ' px', 15, 28);

    // Landscape rendering parameters
    const SCALE = 0.003;
    const OCTAVES = 6;
    const PERSISTENCE = 0.5;
    const LACUNARITY = 2.0;

    for (let x = 0; x < W; x++) {
        // Sample height at current X position, using global offset for seamless scroll
        let h_normalized = fbm(
            offsetX + x * 0.1 * SCALE, // Horizontal input uses the scroll offset
            Math.floor(x / 50),       // Vertical input is constant across a row but changes slowly over width
            SCALE, OCTAVES, PERSISTENCE, LACUNARITY
        );

        // Map noise [-1, 1] range to height [0, H]
        let height = h_normalized * 0.5 + 0.5; // Scale to [0, 1]
        height *= (H - 20) / 2; // Max height scale

        // Color the column slice
        ctx.fillStyle = getColor(height);
        ctx.fillRect(x, H - Math.min(height * W/W, H-20), 1, Math.max(1, height * W/W));
    }
}

function animate() {
    // Update offset smoothly (scroll speed)
    offsetX += 1; // Controls horizontal scrolling speed (pixels per frame)
    draw();
    requestAnimationFrame(animate);
}

// Start the animation loop
animate();
</script></body></html>
```
MODEL Fqwen3:8bDNF
No usable answer reached the harness (ERR). Counted as a did-not-finish.
MODEL Gllama3.1:8bERRSTATFORMAT
Show code
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Noise Landscape Scroller</title>
<style>
body {
  margin: 0;
  padding: 0;
}
canvas {
  display: block;
}
</style>
<script type="text/javascript">
var octaves = 3;
var amplitude = 1.5;
var frequency = 0.05;
var offset = 0;
var canvas = document.createElement("canvas");
document.body.appendChild(canvas);
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
var ctx = canvas.getContext('2d');
function generateNoise(x, y) {
  var value = 0;
  for (var i = 0; i < octaves; i++) {
    value += Math.sin((x * frequency + offset) * amplitude) *
             Math.sin(y * 10 * amplitude);
    frequency *= 1.5;
    amplitude /= 2;
  }
  return value;
}
function draw() {
  ctx.fillStyle = "rgba(0, 0, 0, 0)";
  ctx.fillRect(0, 0, canvas.width, canvas.height);
  for (var x = -100; x <= 100; x++) {
    for (var y = -50; y <= 50; y++) {
      var height = generateNoise(x + offset, y) * 100;
      if (height > 20 && height < 80) ctx.fillStyle = "rgb(0, 255, 0)";
      else if (height > 10 && height <= 20) ctx.fillStyle = "rgb(128, 128, 0)";
      else if (height > 5 && height <= 10) ctx.fillStyle = "rgb(192, 192, 192)";
      else if (height >= -20 && height < 5) ctx.fillStyle = "rgb(255, 255, 255)";
      else ctx.fillStyle = "rgb(128, 0, 0)";
      var w = 10;
      var h = Math.floor(height);
      ctx.fillRect(x * w + canvas.width / 2 - (canvas.width - w*100) / 2,
                    y * h + canvas.height / 2 - (canvas.height - h*50) / 2, w, h);
    }
  }
  offset += 0.01;
}
var startDraw = function() {
  draw();
  requestAnimationFrame(startDraw);
};
startDraw();
document.addEventListener("visibilitychange", function() {
  if (document.visibilityState === "visible") startDraw();
});
</script>
<script type="text/javascript">
requestAnimationFrame(function(){
  document.title = 'Noise Landscape: ' + Math.round(offset * 100) / 100;
});
</script>
</head>
<body>
</body>
</html>
```
MODEL Hdeepseek-r1:14bDNF
No usable answer reached the harness (TIMEOUT). 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 qwen3-coder:30b 18.7 sOK
MODEL B mistral-small:24b 84.5 sOK
MODEL C qwen3:14b 27.5 sOK
MODEL D gemma4:26b harness
MODEL E qwen3.5:9b 25.6 sOK
MODEL F qwen3:8b harness
MODEL G llama3.1:8b 9.3 sOK
MODEL H deepseek-r1:14b DNF