Spaces:
Running
Running
| import { GameProgression, GameRound, FinalScoreMatrix } from "@/types/game-data"; | |
| export const gameData: GameProgression = { | |
| startTime: "2025-08-16T23:53:03", | |
| endTime: "2025-08-17T01:39:31", | |
| rounds: [ | |
| { | |
| id: "round-1", | |
| timestamp: "2025-08-16T23:53:03", | |
| screenshotPath: "/screenshots/Screenshot 2025-08-16 at 23.53.03.png", | |
| words: ["brilliance", "sports", "peace", "rocket", "icecream", "blush", "friends", "rhythm", "velvet", "ocean"], | |
| roundNumber: 1 | |
| }, | |
| { | |
| id: "round-2", | |
| timestamp: "2025-08-17T00:00:17", | |
| screenshotPath: "/screenshots/Screenshot 2025-08-17 at 00.00.17.png", | |
| words: ["stochastic", "fuselage", "pitfall", "screwdriver", "sand", "spices", "arthritis", "printer", "flute", "dinosaurs"], | |
| roundNumber: 2 | |
| }, | |
| { | |
| id: "round-3", | |
| timestamp: "2025-08-17T00:00:40", | |
| screenshotPath: "/screenshots/Screenshot 2025-08-17 at 00.00.40.png", | |
| words: ["stochastic", "fuselage", "pitfall", "screwdriver", "sand", "spices", "arthritis", "printer", "flute", "dinosaurs"], | |
| roundNumber: 3 | |
| }, | |
| { | |
| id: "round-4", | |
| timestamp: "2025-08-17T01:33:49", | |
| screenshotPath: "/screenshots/Screenshot 2025-08-17 at 01.33.49.png", | |
| words: ["stochastic", "fuselage", "throne", "icecream", "cricket", "remote", "arthritis", "printer", "eel", "speedbreaker"], | |
| roundNumber: 4 | |
| }, | |
| { | |
| id: "round-5", | |
| timestamp: "2025-08-17T01:33:59", | |
| screenshotPath: "/screenshots/Screenshot 2025-08-17 at 01.33.59.png", | |
| words: ["stochastic", "fuselage", "throne", "icecream", "cricket", "remote", "arthritis", "printer", "eel", "speedbreaker"], | |
| roundNumber: 5 | |
| }, | |
| { | |
| id: "round-6", | |
| timestamp: "2025-08-17T01:34:51", | |
| screenshotPath: "/screenshots/Screenshot 2025-08-17 at 01.34.51.png", | |
| words: ["stochastic", "fuselage", "throne", "icecream", "cricket", "remote", "arthritis", "printer", "eel", "speedbreaker"], | |
| roundNumber: 6 | |
| }, | |
| { | |
| id: "round-7", | |
| timestamp: "2025-08-17T01:35:00", | |
| screenshotPath: "/screenshots/Screenshot 2025-08-17 at 01.35.00.png", | |
| words: ["stochastic", "fuselage", "throne", "icecream", "cricket", "remote", "arthritis", "printer", "eel", "speedbreaker"], | |
| roundNumber: 7 | |
| }, | |
| { | |
| id: "round-8", | |
| timestamp: "2025-08-17T01:36:24", | |
| screenshotPath: "/screenshots/Screenshot 2025-08-17 at 01.36.24.png", | |
| words: ["stochastic", "fuselage", "throne", "icecream", "cricket", "corporate", "arthritis", "butter", "eel", "speedbreaker"], | |
| roundNumber: 8 | |
| }, | |
| { | |
| id: "round-9", | |
| timestamp: "2025-08-17T01:36:35", | |
| screenshotPath: "/screenshots/Screenshot 2025-08-17 at 01.36.35.png", | |
| words: ["stochastic", "fuselage", "throne", "icecream", "cricket", "corporate", "arthritis", "butter", "eel", "speedbreaker"], | |
| roundNumber: 9 | |
| }, | |
| { | |
| id: "round-10", | |
| timestamp: "2025-08-17T01:38:24", | |
| screenshotPath: "/screenshots/Screenshot 2025-08-17 at 01.38.24.png", | |
| words: ["stochastic", "fuselage", "throne", "icecream", "foosball", "corporate", "arthritis", "chilli", "lens", "speedbreaker"], | |
| roundNumber: 10 | |
| }, | |
| { | |
| id: "round-11", | |
| timestamp: "2025-08-17T01:38:36", | |
| screenshotPath: "/screenshots/Screenshot 2025-08-17 at 01.38.36.png", | |
| words: ["stochastic", "fuselage", "throne", "icecream", "foosball", "corporate", "arthritis", "chilli", "lens", "speedbreaker"], | |
| roundNumber: 11 | |
| }, | |
| { | |
| id: "round-12", | |
| timestamp: "2025-08-17T01:39:08", | |
| screenshotPath: "/screenshots/Screenshot 2025-08-17 at 01.39.08.png", | |
| words: ["stochastic", "fuselage", "throne", "icecream", "foosball", "corporate", "arthritis", "chilli", "lens", "speedbreaker"], | |
| roundNumber: 12 | |
| }, | |
| { | |
| id: "round-final", | |
| timestamp: "2025-08-17T01:39:31", | |
| screenshotPath: "/screenshots/Screenshot 2025-08-17 at 01.39.31.png", | |
| words: ["stochastic", "fuselage", "throne", "corporate", "arthritis", "chilli", "lens"], | |
| roundNumber: 13 | |
| } | |
| ], | |
| finalMatrix: { | |
| words: ["stochastic", "fuselage", "throne", "corporate", "arthritis", "chilli", "lens"], | |
| distances: [ | |
| [0, 103, 100, 93, 94, 98, 94], | |
| [103, 0, 94, 98, 96, 91, 79], | |
| [100, 94, 0, 95, 98, 101, 98], | |
| [93, 98, 95, 0, 97, 100, 92], | |
| [94, 96, 98, 97, 0, 86, 87], | |
| [98, 91, 101, 100, 86, 0, 104], | |
| [94, 79, 98, 92, 87, 104, 0] | |
| ], | |
| finalScore: 95.08, | |
| percentile: 99.98 | |
| } | |
| }; | |
| export function getWordEvolution(): { round: number; changes: Array<{ type: 'added' | 'removed' | 'kept'; word: string }> }[] { | |
| const evolution = []; | |
| for (let i = 1; i < gameData.rounds.length; i++) { | |
| const prevWords = new Set(gameData.rounds[i - 1].words); | |
| const currWords = new Set(gameData.rounds[i].words); | |
| const changes: Array<{ type: 'added' | 'removed' | 'kept'; word: string }> = []; | |
| // Find removed words | |
| Array.from(prevWords).forEach(word => { | |
| if (!currWords.has(word)) { | |
| changes.push({ type: 'removed', word }); | |
| } else { | |
| changes.push({ type: 'kept', word }); | |
| } | |
| }); | |
| // Find added words | |
| Array.from(currWords).forEach(word => { | |
| if (!prevWords.has(word)) { | |
| changes.push({ type: 'added', word }); | |
| } | |
| }); | |
| if (changes.some(c => c.type !== 'kept')) { | |
| evolution.push({ | |
| round: gameData.rounds[i].roundNumber, | |
| changes | |
| }); | |
| } | |
| } | |
| return evolution; | |
| } |