1package schedule23import (4 "hash/fnv"56 "github.com/FelineStateMachine/puzzletea/game"7 "github.com/FelineStateMachine/puzzletea/registry"8)910type Entry struct {11 Spawner game.SeededSpawner12 GameType string13 Mode string14}1516func BuildEligibleModes(entries []registry.DailyEntry) []Entry {17 result := make([]Entry, 0, len(entries))18 for _, entry := range entries {19 result = append(result, Entry{20 Spawner: entry.Spawner,21 GameType: entry.GameType,22 Mode: entry.Mode,23 })24 }25 return result26}2728func SelectBySeed(seed string, entries []Entry) (Entry, bool) {29 var best Entry30 var bestHash uint6431 found := false32 for _, entry := range entries {33 h := fnv.New64a()34 h.Write([]byte(seed))35 h.Write([]byte{0})36 h.Write([]byte(entry.GameType))37 h.Write([]byte{0})38 h.Write([]byte(entry.Mode))39 score := h.Sum64()40 if !found || score > bestHash {41 bestHash = score42 best = entry43 found = true44 }45 }46 return best, found47}