'vocab DEFINT A-Z DIM s$(2000), th(1999, 2), ct(2000), tc(1000, 2) DIM carlu AS STRING * 1, c AS STRING * 1 DIM ni AS LONG CONST ficent = 5, maxhash = 1999 ps = 1 pc = 1 nf$ = "toulet.bas" 'fichier texte OPEN nf$ FOR RANDOM AS #ficent LEN = 1 ni = 1 mot$ = "" CLS WHILE NOT EOF(ficent) GET #ficent, , carlu GOSUB transfocar WEND transfocar: c = carlu SELECT CASE carlu CASE "…", "ƒ" c = "A" CASE "‚", "Š", "ˆ" c = "E" CASE "Œ" c = "I" CASE "“" c = "O" CASE "—", "–" c = "U" CASE "a" TO "z" 'END c = UCASE$(carlu) CASE ELSE END SELECT 'PRINT ">"; c 'a$ = INPUT$(1) IF (ASC(c) > 64) AND (ASC(c) < 91) THEN mot$ = mot$ + c ELSE IF (mot$ <> "") THEN GOSUB Hachage mot$ = "" END IF RETURN Hachage: hc = 0 FOR i = 1 TO LEN(mot$) hc = 1 + hc + ASC(MID$(mot$, i, 1)) NEXT i hc = hc - maxhash * (hc \ maxhash) PRINT mot$, hc a$ = INPUT$(1) IF (th(hc, 1) = 0) THEN s$(ps) = mot$ ct(ps) = 1 th(hc, 1) = ps ps = ps + 1 ELSEIF (s$(th(hc, 1)) = mot$) THEN ct(th(hc, 1)) = ct(th(hc, 1)) + 1 ELSEIF (th(hc, 2) = 0) THEN th(hc, 2) = pc tc(pc, 1) = ps s$(ps) = mot$ ct(ps) = 1 ps = ps + 1 pc = pc + 1 ELSE hc = th(hc, 2) IF (mot$ = s$(tc(hc, 1))) THEN RETURN