diff --git a/results.json b/results.json index ecca04a..78d0c65 100644 --- a/results.json +++ b/results.json @@ -375,5 +375,18 @@ "7_scheduler": 48.61515529499997, "8_json_validator": 36.715725561, "9_stream_visualizer": 20.464613763000003 + }, + "anthropic/claude-opus-4.5 TEMP:0.7": { + "10_scrypt_hash": 3.390702887, + "11_geospatial": 3.506444718, + "1_dijkstra": 5.516664937000001, + "2_convex_hull": 5.606021382000001, + "3_lis": 2.975131071, + "4_determinant": 1.5542161800000032, + "5_markdown_parser": 1.6900872840000012, + "6_csv_processor": 5.3806070250000015, + "7_scheduler": 13.963300305999997, + "8_json_validator": 3.6207129579999964, + "9_stream_visualizer": 4.672214089000001 } } \ No newline at end of file diff --git a/tests/10_scrypt_hash/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js b/tests/10_scrypt_hash/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js new file mode 100644 index 0000000..6566c3d --- /dev/null +++ b/tests/10_scrypt_hash/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js @@ -0,0 +1,7 @@ +async function hashPassword(p, s) { + const { scrypt } = await import('https://cdn.jsdelivr.net/npm/scrypt-js@3.0.1/+esm') + const e = new TextEncoder() + const h = await scrypt(e.encode(p), e.encode(s), 1024, 8, 1, 32) + return [...h].map(b => b.toString(16).padStart(2, '0')).join('') +} +export default hashPassword; \ No newline at end of file diff --git a/tests/11_geospatial/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js b/tests/11_geospatial/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js new file mode 100644 index 0000000..a70810f --- /dev/null +++ b/tests/11_geospatial/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js @@ -0,0 +1,15 @@ +async function analyzeGPS(readings, boundary) { + const turf = await import('https://cdn.jsdelivr.net/npm/@turf/turf@7/+esm'); + + const valid = readings + .filter(r => turf.booleanPointInPolygon(turf.point(r.loc), boundary, { ignoreBoundary: true })) + .sort((a, b) => a.ts - b.ts); + + if (valid.length < 2) return 0; + + const line = turf.lineString(valid.map(r => r.loc)); + const len = turf.length(line, { units: 'kilometers' }); + + return Math.round(len * 100) / 100; +} +export default analyzeGPS; \ No newline at end of file diff --git a/tests/1_dijkstra/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js b/tests/1_dijkstra/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js new file mode 100644 index 0000000..7e28119 --- /dev/null +++ b/tests/1_dijkstra/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js @@ -0,0 +1,32 @@ +async function findShortestPath(graph, start, end) { + const { default: PriorityQueue } = await import("https://esm.run/js-priority-queue"); + + const dist = {}, visited = new Set(); + + for (let n in graph) dist[n] = Infinity; + dist[start] = 0; + + const pq = new PriorityQueue({ comparator: (a, b) => a[1] - b[1] }); + pq.queue([start, 0]); + + while (pq.length) { + const [node, d] = pq.dequeue(); + + if (visited.has(node)) continue; + visited.add(node); + + if (node === end) return d; + + for (let neighbor in graph[node] || {}) { + if (visited.has(neighbor)) continue; + const newDist = d + graph[node][neighbor]; + if (newDist < dist[neighbor]) { + dist[neighbor] = newDist; + pq.queue([neighbor, newDist]); + } + } + } + + return dist[end] ?? Infinity; +} +export default findShortestPath; \ No newline at end of file diff --git a/tests/2_convex_hull/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js b/tests/2_convex_hull/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js new file mode 100644 index 0000000..2f5c210 --- /dev/null +++ b/tests/2_convex_hull/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js @@ -0,0 +1,27 @@ +const findConvexHull = async (points) => { + const _ = (await import("https://cdn.jsdelivr.net/npm/lodash-es@4.17.21/lodash.min.js")).default; + + const cross = (o, a, b) => (a.x - o.x) * (b.y - o.y) - (a.y - o.y) * (b.x - o.x); + + const unique = _.uniqWith(points, _.isEqual); + const sorted = _.sortBy(unique, ["x", "y"]); + + if (sorted.length < 3) return sorted; + + const lower = []; + for (const p of sorted) { + while (lower.length >= 2 && cross(lower[lower.length - 2], lower[lower.length - 1], p) <= 0) + lower.pop(); + lower.push(p); + } + + const upper = []; + for (const p of _.reverse([...sorted])) { + while (upper.length >= 2 && cross(upper[upper.length - 2], upper[upper.length - 1], p) <= 0) + upper.pop(); + upper.push(p); + } + + return [...lower.slice(0, -1), ...upper.slice(0, -1)]; +}; +export default findConvexHull; \ No newline at end of file diff --git a/tests/3_lis/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js b/tests/3_lis/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js new file mode 100644 index 0000000..12f31e1 --- /dev/null +++ b/tests/3_lis/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js @@ -0,0 +1,11 @@ +async function findLISLength(a) { + if (!a?.length) return 0; + const { bisectLeft } = await import('https://cdn.jsdelivr.net/npm/d3-array@3/+esm'); + const t = []; + for (const n of a) { + const i = bisectLeft(t, n); + i < t.length ? t[i] = n : t.push(n); + } + return t.length; +} +export default findLISLength; \ No newline at end of file diff --git a/tests/4_determinant/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js b/tests/4_determinant/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js new file mode 100644 index 0000000..d89e0c0 --- /dev/null +++ b/tests/4_determinant/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js @@ -0,0 +1,5 @@ +async function calculateDeterminant(matrix) { + const { det } = await import("https://esm.run/mathjs"); + return det(matrix); +} +export default calculateDeterminant; \ No newline at end of file diff --git a/tests/5_markdown_parser/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js b/tests/5_markdown_parser/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js new file mode 100644 index 0000000..dfea671 --- /dev/null +++ b/tests/5_markdown_parser/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js @@ -0,0 +1,5 @@ +async function parseMarkdown(t) { + const { marked } = await import("https://esm.sh/marked@12.0.0"); + return marked.parse(t); +} +export default parseMarkdown; \ No newline at end of file diff --git a/tests/6_csv_processor/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js b/tests/6_csv_processor/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js new file mode 100644 index 0000000..775882d --- /dev/null +++ b/tests/6_csv_processor/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js @@ -0,0 +1,32 @@ +async function processCSV(csv, config) { + const { filterColumn, filterValue, groupBy, aggregateColumn, operation } = config; + + const { default: Papa } = await import('https://cdn.jsdelivr.net/npm/papaparse@5/+esm'); + + const { data } = Papa.parse(csv, { header: true, skipEmptyLines: true }); + + const filtered = data.filter(row => row[filterColumn] == filterValue); + + const groups = {}; + for (const row of filtered) { + const key = row[groupBy]; + (groups[key] ??= []).push(row); + } + + const toNum = v => { + const n = Number(v); + return isNaN(n) ? 0 : n; + }; + + const ops = { + sum: rows => rows.reduce((s, r) => s + toNum(r[aggregateColumn]), 0), + avg: rows => rows.length ? ops.sum(rows) / rows.length : 0, + count: rows => rows.length + }; + + return Object.entries(groups).map(([k, v]) => ({ + [groupBy]: k, + result: ops[operation](v) + })); +} +export default processCSV; \ No newline at end of file diff --git a/tests/7_scheduler/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js b/tests/7_scheduler/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js new file mode 100644 index 0000000..003d97e --- /dev/null +++ b/tests/7_scheduler/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js @@ -0,0 +1,77 @@ +async function findAvailableSlots(calendar1, calendar2, constraints) { + const { DateTime, Interval } = await import('https://cdn.jsdelivr.net/npm/luxon@3.4.4/+esm'); + + const { durationMinutes, searchRange, workHours } = constraints; + const rangeStart = DateTime.fromISO(searchRange.start, { zone: 'utc' }); + const rangeEnd = DateTime.fromISO(searchRange.end, { zone: 'utc' }); + const [whStartH, whStartM] = workHours.start.split(':').map(Number); + const [whEndH, whEndM] = workHours.end.split(':').map(Number); + + const busyIntervals = [...calendar1, ...calendar2] + .map(b => Interval.fromDateTimes( + DateTime.fromISO(b.start, { zone: 'utc' }), + DateTime.fromISO(b.end, { zone: 'utc' }) + )) + .filter(i => i.isValid) + .sort((a, b) => a.start - b.start); + + const merged = []; + for (const interval of busyIntervals) { + if (!merged.length || merged[merged.length - 1].end < interval.start) { + merged.push(interval); + } else { + const last = merged.pop(); + merged.push(Interval.fromDateTimes( + last.start, + last.end > interval.end ? last.end : interval.end + )); + } + } + + const freeIntervals = []; + let cursor = rangeStart; + for (const busy of merged) { + if (busy.start > cursor && busy.start <= rangeEnd) { + freeIntervals.push(Interval.fromDateTimes(cursor, busy.start < rangeEnd ? busy.start : rangeEnd)); + } + cursor = busy.end > cursor ? busy.end : cursor; + } + if (cursor < rangeEnd) { + freeIntervals.push(Interval.fromDateTimes(cursor, rangeEnd)); + } + + const getWorkInterval = day => { + const start = day.set({ hour: whStartH, minute: whStartM, second: 0, millisecond: 0 }); + const end = day.set({ hour: whEndH, minute: whEndM, second: 0, millisecond: 0 }); + return start < end ? Interval.fromDateTimes(start, end) : null; + }; + + const slots = []; + + for (const free of freeIntervals) { + let day = free.start.startOf('day'); + const endDay = free.end.startOf('day'); + + while (day <= endDay) { + const workInt = getWorkInterval(day); + if (workInt) { + const intersection = free.intersection(workInt); + if (intersection && intersection.length('minutes') >= durationMinutes) { + let slotStart = intersection.start; + while (slotStart.plus({ minutes: durationMinutes }) <= intersection.end) { + const slotEnd = slotStart.plus({ minutes: durationMinutes }); + slots.push({ + start: slotStart.toISO({ suppressMilliseconds: true }), + end: slotEnd.toISO({ suppressMilliseconds: true }) + }); + slotStart = slotEnd; + } + } + } + day = day.plus({ days: 1 }); + } + } + + return slots.sort((a, b) => a.start.localeCompare(b.start)); +} +export default findAvailableSlots; \ No newline at end of file diff --git a/tests/8_json_validator/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js b/tests/8_json_validator/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js new file mode 100644 index 0000000..b6d6c51 --- /dev/null +++ b/tests/8_json_validator/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js @@ -0,0 +1,18 @@ +async function validateJSON(jsonObject, jsonSchema) { + const { default: Ajv } = await import("https://esm.sh/ajv@8"); + const { default: addFormats } = await import("https://esm.sh/ajv-formats@3"); + + const ajv = new Ajv({ allErrors: true, strict: false }); + addFormats(ajv); + + const validate = ajv.compile(jsonSchema); + const valid = validate(jsonObject); + + return { + valid, + errors: valid ? [] : validate.errors.map(e => + e.instancePath ? `${e.instancePath} ${e.message}` : e.message + ) + }; +} +export default validateJSON; \ No newline at end of file diff --git a/tests/9_stream_visualizer/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js b/tests/9_stream_visualizer/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js new file mode 100644 index 0000000..14f2ce7 --- /dev/null +++ b/tests/9_stream_visualizer/outputs/anthropic_claude-opus-4.5 TEMP_0.7.js @@ -0,0 +1,28 @@ +async function createStreamVisualizer(asyncIterable, options) { + const { maxPoints, alpha, width, height, yDomain } = options; + const d3 = await import("https://cdn.jsdelivr.net/npm/d3@7/+esm"); + + const data = []; + let ema = null; + + for await (const { timestamp, value } of asyncIterable) { + ema = ema === null ? value : alpha * value + (1 - alpha) * ema; + data.push({ timestamp, value, ema }); + data.length > maxPoints && data.shift(); + } + + const xScale = d3.scaleLinear() + .domain([data[0].timestamp, data[data.length - 1].timestamp]) + .range([0, width]); + + const yScale = d3.scaleLinear() + .domain(yDomain) + .range([height, 0]); + + const path = d3.line() + .x(d => xScale(d.timestamp)) + .y(d => yScale(d.ema))(data); + + return { data, path }; +} +export default createStreamVisualizer; \ No newline at end of file