// Dictionnaire reduit indexe par longueur (mots majuscules sans accents).
var dictionary = new Dictionary<int,List<string>> {
[2] = new(){ "AI", "OK", "GO", "NO", "OR", "AN", "AT", "IN", "IS", "IT", "ON", "UP", "US" },
[3] = new(){ "CAT", "DOG", "RUN", "SUN", "TOP", "KEY", "ICE", "OLD", "NEW", "BAR", "FOR", "OUT", "TWO", "ONE", "SIX", "TEN", "AGE", "AIR", "ART", "BAD", "BAG", "BED", "BIG", "BIT", "BOX", "BOY", "BUS", "BUY", "CAR", "CUP", "CUT", "DAY", "DRY", "EAT", "END", "EYE", "FAR", "FEW", "FLY", "FUN" },
[4] = new(){ "CODE", "DATA", "FILE", "GAME", "GRID", "HASH", "HELP", "IDEA", "INFO", "JAZZ", "JOIN", "JUMP", "KEYS", "KIND", "LAKE", "LAMP", "LOAD", "LOOP", "NODE", "OPEN", "PATH", "PLAN", "PLAY", "READ", "REST", "ROOT", "RULE", "SAVE", "SEED", "SHIP", "SHOW", "SIGN", "SIZE", "SLOT", "STAR", "STOP", "TASK", "TEST", "TEXT", "TIME", "TREE", "TYPE", "USER", "VIEW", "WAIT", "WALK", "WAVE", "WIND", "WORD", "WORK", "ZERO" },
[5] = new(){ "ALPHA", "ARRAY", "BASIC", "BRAIN", "BUILD", "CACHE", "CHAIN", "CHAR", "CHECK", "CLASS", "CLEAR", "CLICK", "CODES", "DEBUG", "DEPTH", "ENTRY", "ERROR", "EVENT", "FALSE", "FETCH", "FIELD", "FILES", "FLAGS", "FLOAT", "FRAME", "GRAPH", "GROUP", "HEAP", "INPUT", "LOGIC", "LOOP", "MATCH", "MODEL", "MOTOR", "NODES", "NORTH", "OBJECT", "ORDER", "OUTPUT", "PARSE", "PHASE", "POINT", "PRINT", "QUEUE", "RANGE", "RIGHT", "ROUND", "SCOPE", "SHARE", "SHEET", "SHIFT", "SIGHT", "SLEEP", "SLOT", "STACK", "STATE", "STORE", "STYLE", "SWING", "TABLE", "TERMS", "THREE", "THROW", "TOPIC", "TRACE", "TRACK", "TRAIN", "TREE", "TRUST", "TRUTH", "TUPLE", "TYPE", "UNCLE", "UNDER", "UNION", "UNTIL", "USAGE", "VALID", "VALUE", "VIDEO", "WORLD" },
};
var solution = SolveBacktrack(slots, dictionary, inter);
if (solution != null)
{
$"Solution trouvee : {solution.Count} slots assignes".Display();
foreach (var kv in solution.OrderBy(x => x.Key))
$" slot {kv.Key} ({slots[kv.Key].Dir} @ {slots[kv.Key].Row},{slots[kv.Key].Col}, len {slots[kv.Key].Length}) = {kv.Value}".Display();
}
else
{
"Aucune solution (dictionnaire trop petit ou grille trop contrainte).".Display();
}