docs
evals
scenario-1
scenario-10
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
Utilities for cleaning, comparing, and organizing repeated workshop attendance lists.
["kim","kim","lee","kim","park"] yields ["kim","lee","park"], preserving first-seen order. @test["ash","bo","cato","dee","ash"] and ["cato","ash","em"] produce ["ash","cato"], ordered by first session appearance. @test[ {id:"a",team:"red"}, {id:"b",team:"red"}, {id:"c",team:"blue"}, {id:"d",team:"red"} ] return {red:3, blue:1}. @test[ {id:"1",role:"mentor"}, {id:"1",role:"mentor"}, {id:"2",role:"learner"}, {id:"3",role:"learner"} ] yield {mentor:["1"], learner:["2","3"]} with role buckets preserving first-seen order per id. @testexport interface Attendee {
id: string;
name: string;
team: string;
role: string;
}
export function uniqueRoster(names: string[]): string[];
export function sharedAttendees(sessionA: string[], sessionB: string[]): string[];
export function countByTeam(records: Attendee[]): Record<string, number>;
export function groupByRole(records: Attendee[]): Record<string, string[]>;Functional utilities for deduplication, set-style comparisons, counting, and grouping.