Basta spostare poche lettere perché un’idea ne diventi un’altra: LOGARITMI si trasforma in ALGORITMI. Non è soltanto una coincidenza divertente. Gli anagrammi permettono di incontrare, nello stesso gioco, lingua, matematica, informatica e creatività.

Il percorso parte da una domanda semplicissima: che cosa deve rimanere identico quando cambiamo l’ordine delle lettere? Da lì arriveremo a contare le possibilità, scegliere un algoritmo efficiente e capire perché una frase brillante non è necessariamente un anagramma corretto.
LOGARITMI ⇄ ALGORITMI
1. Le lettere cambiano posto, non identità
Un anagramma riordina tutte le lettere di una parola o frase senza aggiungerne o eliminarne. Non basta ritrovare gli stessi tipi di lettere: deve coincidere anche il numero di volte in cui ogni lettera compare. In matematica è un multinsieme: un insieme in cui contano le ripetizioni.
In questo articolo ignoriamo spazi, apostrofi, punteggiatura e differenze tra maiuscole e minuscole. Conserviamo invece accenti e lettere come ñ: non li cancelliamo per far funzionare un esempio. Nella verifica digitale la normalizzazione Unicode NFC evita che una stessa lettera accentata, codificata in modi equivalenti, venga trattata diversamente.
La correttezza delle lettere è una condizione oggettiva. Il senso, l’ironia e la naturalezza sono un secondo livello: un buon anagramma letterario deve superare entrambi i controlli.
Normalizzazione Unicode: riferimento tecnico
2. Quando le parole raccontano una storia
ATTORE trova il suo TEATRO; un BIBLIOTECARIO può diventare BEATO COI LIBRI. Il piacere nasce quando la nuova disposizione conserva le lettere ma cambia, o illumina, il significato. Gli esempi seguenti sono giochi linguistici, non invenzioni attribuite qui a un autore.
| Partenza | Anagramma | Legame di significato |
|---|---|---|
| ATTORE | TEATRO | Un protagonista e il suo luogo naturale. |
| BIBLIOTECARIO | BEATO COI LIBRI | Una descrizione scherzosa della professione. |
| ROMA | RAMO | La città diventa una parte dell’albero. |
| ANGELO | GELANO | Un nome e una forma verbale: le lettere restano identiche. |
Una trappola istruttiva: SANTA → SATANA
Non è un anagramma: SANTA ha due A, SATANA ne ha tre. Il contrasto di significato non può compensare una lettera aggiunta.
3. Un gioco che non si traduce alla lettera
Tradurre il significato non significa conservare le lettere. LISTEN e SILENT sono un anagramma inglese; «ascoltare» e «silenzioso» ne spiegano il senso, ma non ne sono la traduzione come gioco di lettere. Per questo le quattro versioni dell’articolo usano esempi locali, anziché tradurre meccanicamente le coppie.
La coppia iniziale è una felice eccezione: LOGARITMI/ALGORITMI in italiano, LOGARITHM/ALGORITHM in inglese, LOGARITHME/ALGORITHME in francese e LOGARITMO/ALGORITMO in spagnolo funzionano ciascuna nella propria lingua. Non hanno però tutte la stessa lunghezza o le stesse ripetizioni, e dunque non danno lo stesso conteggio combinatorio.
Ecco tre esempi inglesi mantenuti nella lingua originale: le spiegazioni italiane chiariscono il legame, senza pretendere di essere a loro volta anagrammi.
| Partenza | Anagramma | Legame di significato |
|---|---|---|
| ASTRONOMER | MOON STARER | Astronomo / osservatore della Luna. |
| DORMITORY | DIRTY ROOM | Dormitorio / stanza sporca. |
| ELEVEN PLUS TWO | TWELVE PLUS ONE | Undici più due / dodici più uno: entrambe le somme valgono 13. |
4. Quanti ordinamenti possiamo costruire?
Con quattro lettere tutte diverse, per il primo posto abbiamo quattro scelte; scelta la prima lettera, ne restano tre per il secondo, due per il terzo e una per l’ultimo. Moltiplichiamo perché stiamo attraversando fasi successive.
n! si legge «n fattoriale»: è il prodotto degli interi da 1 a n; per convenzione 0! = 1. Il conteggio comprende anche la parola originale. Se chiediamo soltanto riordinamenti diversi dall’originale, ne sottraiamo uno.
I 24 ordinamenti di ROMA non sono 24 parole italiane. ROMA, RAMO, ORMA, MORA e il poetico AMOR sono riconoscibili; altre sequenze non significano nulla. La formula conta disposizioni di lettere, non parole presenti nel dizionario.
ROMA: 4 × 3 × 2 × 1 = 4! = 24
5. Le lettere ripetute: perché bisogna dividere
Immaginiamo di etichettare temporaneamente le due A e le due N di ANNA: A₁, A₂, N₁, N₂. Avremmo 4! ordinamenti, ma scambiare A₁ con A₂ non cambia la parola visibile. Lo stesso vale per N₁ e N₂: ogni disposizione è contata 2! × 2! volte.
In generale, se n lettere comprendono gruppi di n₁, n₂, …, nₖ lettere identiche, con somma uguale a n, dividiamo per tutte le permutazioni invisibili dentro ciascun gruppo. Non stiamo dividendo per il numero delle lettere ripetute: dividiamo per i fattoriali delle loro molteplicità.
P = n! / (n₁! × n₂! × … × nₖ!)
ANNA: 4! / (2! × 2!) = 6
LOGARITMI: 9! / (2!) = 181440
AANN · ANAN · ANNA · NAAN · NANA · NNAA
6. L’esplosione delle possibilità e il ponte con gli algoritmi
Il fattoriale cresce molto più rapidamente di quanto suggeriscano le prime righe della tabella. Aggiungere una lettera distinta moltiplica il totale per il nuovo numero di posizioni. Produrre ogni disposizione solo per controllare una coppia di parole è quindi un lavoro sproporzionato.
LOGARITMI e ALGORITMI creano anche un ponte concettuale: la ricerca binaria dimezza ogni volta uno spazio ordinato di candidati, e il numero di dimezzamenti cresce come log₂ n. Da 1024 possibilità a una servono dieci dimezzamenti. Questo legame tra concetti non è una dimostrazione di parentela etimologica tra le due parole.
| Lettere tutte diverse | Ordinamenti |
|---|---|
| 4 | 24 |
| 6 | 720 |
| 8 | 40.320 |
| 10 | 3.628.800 |
| 12 | 479.001.600 |
| 15 | 1.307.674.368.000 |
7. Come verifica un anagramma il computer
Possiamo ordinare le lettere di ciascuna espressione e confrontare le sequenze ottenute. La sequenza ordinata è una firma: se coincide, coincidono tutte le lettere e le loro ripetizioni.
Oppure possiamo contare. Incrementiamo un contatore leggendo la prima parola e lo decrementiamo leggendo la seconda. Alla fine tutti i contatori devono essere zero. La somma dei codici delle lettere non è una firma sicura: A+D e B+C hanno la stessa somma nei codici ASCII, ma non le stesse lettere.
Nel confronto dei costi n indica la lunghezza normalizzata complessiva e k il numero di lettere dell’alfabeto scelto. Per un alfabeto fissato il conteggio è lineare: O(n+k) diventa O(n). Per testi e alfabeti più complessi bisogna definire con cura che cosa conta come lettera; la normalizzazione non autorizza a eliminare distinzioni linguistiche.
ATTORE → AEORTT
TEATRO → AEORTT
| Lettera | Prima parola | Seconda parola |
|---|---|---|
| A | 1 | 1 |
| E | 1 | 1 |
| O | 1 | 1 |
| R | 1 | 1 |
| T | 2 | 2 |
| Metodo | Lavoro richiesto | Perché |
|---|---|---|
| Generare ogni disposizione | Fattoriale nel caso di lettere distinte | Esplora moltissimi candidati che non servono per verificare una sola coppia. |
| Ordinare e confrontare | O(n log n) con un ordinamento per confronti efficiente | Porta le lettere uguali nelle stesse posizioni. |
| Confrontare frequenze | O(n+k), cioè O(n) con alfabeto fissato | Visita le lettere e confronta i k contatori. |
VERIFICA(s, t)
s ← PREPARA(s); t ← PREPARA(t)
se lunghezza(s) ≠ lunghezza(t): ritorna FALSO
contatori ← zeri per tutte le lettere ammesse
per ogni lettera c di s: contatori[c] += 1
per ogni lettera c di t: contatori[c] -= 1
ritorna TUTTI_ZERO(contatori)
Per approfondire il conteggio delle frequenze: Princeton · Count.java
8. Cercare non è la stessa cosa che verificare
Verificare una proposta significa rispondere sì o no a un vincolo preciso. Inventare una frase nuova richiede invece esplorare un vocabolario, combinare parole e valutarne il senso. Non occorre però tentare ciecamente tutte le permutazioni.
Un programma può indicizzare un dizionario per firma: parole con gli stessi conteggi finiscono nello stesso gruppo. Per cercare frasi, sceglie una parola compatibile, sottrae le sue lettere dal materiale disponibile e continua. Se una lettera richiesta manca, abbandona subito quel ramo: è potatura. Se deve cambiare scelta, torna al passo precedente: è backtracking.
Il risultato dipende dal dizionario e dalle regole: nomi propri, forme flesse e parole rare possono essere ammessi oppure no. Non trovare una frase in un certo elenco non dimostra che non esista nella lingua.
9. Umano, computer e intelligenza artificiale
Il pensiero computazionale entra in gioco quando separiamo il compito in parti: preparare il testo, contare, controllare e infine giudicare il significato. Umano e macchina non devono per forza fare lo stesso lavoro.
Un’IA può proporre collegamenti e formulazioni, ma una frase convincente può aggiungere una lettera senza che ce ne accorgiamo. La proposta linguistica va sottoposta a un controllo deterministico dei conteggi. Creatività e verifica si aiutano: nessuna delle due sostituisce l’altra.
| Problema | Contributo umano | Contributo del computer |
|---|---|---|
| Stabilire le regole | Sceglie lingua, accenti e parole ammesse. | Applica la stessa preparazione a tutti i testi. |
| Verificare una coppia | Spiega perché il controllo è significativo. | Confronta ogni frequenza senza fidarsi del senso. |
| Trovare candidati | Propone temi, ironia e collegamenti. | Cerca nel dizionario e scarta rami incompatibili. |
| Valutare una frase | Giudica naturalezza, contesto e opportunità. | Offre proposte e controlli, senza sostituire il giudizio editoriale. |
10. Galileo: nascondere una scoperta nelle lettere
Nel 1610 Galileo comunicò in forma anagrammatica un’osservazione di Saturno, per riservarne il contenuto e rivendicare la priorità. La frase svelata parlava del pianeta visto in forma triplice: il suo cannocchiale non distingueva chiaramente gli anelli.
È un uso storico degli anagrammi, non un sistema moderno per proteggere dati: riordinare le lettere lascia esposto il loro inventario e non garantisce una sola interpretazione.
Per verificare il contesto storico: Mario Biagioli · From ciphers to confidentiality; Museo Galileo · Saturno.
11. Sei sfide: prova prima di aprire la soluzione
Le soluzioni sono inizialmente nascoste. Prima di aprirle, annota quali informazioni rimangono uguali e quale formula o algoritmo serve davvero.
1. Verifica ATTORE / TEATRO: quale firma ordinata e quali conteggi ottieni?
Mostra soluzione e ragionamento
ATTORE → AEORTT
TEATRO → AEORTTLa firma coincide perché ogni lettera compare con la stessa frequenza.
2. Quanti ordinamenti distinti ha ROMA? Sono tutti parole?
Mostra soluzione e ragionamento
ROMA: 4! = 24La formula comprende l’ordine originale e tutte le sequenze prive di significato: il dizionario è un filtro successivo.
3. Quanti ordinamenti distinti ha ANNA? Perché non basta n!?
Mostra soluzione e ragionamento
ANNA: 4! / (2! × 2!) = 6Scambiare copie identiche non crea un nuovo risultato visibile: perciò dividiamo per i fattoriali delle molteplicità.
4. AAB e ABB contengono gli stessi tipi di lettere: sono anagrammi?
Mostra soluzione e ragionamento
AAB: A=2, B=1
ABB: A=1, B=2No. AAB contiene due A e una B; ABB una A e due B. Stessa lunghezza e stesso insieme di tipi non bastano.
5. Quanti ordinamenti di ROMA iniziano con R?
Mostra soluzione e ragionamento
3! = 3 × 2 × 1 = 6Fissata la prima lettera, restano tre lettere distinte da sistemare: 3! = 6.
6. Un’IA propone una frase molto brillante: come decidi se è un anagramma esatto?
Mostra soluzione e ragionamento
Dichiara le regole, normalizza entrambi i testi, controlla lunghezza e frequenze. Se coincidono verifica poi grammatica e significato; se non coincidono la frase va corretta, anche se è spiritosa.
12. Un’idea da portare con sé
Un anagramma insegna una lezione più grande del gioco: cambiare rappresentazione può rendere semplice un problema che sembrava enorme. Non dobbiamo generare milioni di frasi per verificare due conteggi; non dobbiamo confondere una disposizione possibile con una parola sensata.
La matematica conta, l’informatica organizza, la lingua dà significato e la creatività scopre relazioni. Il controllo finale resta una domanda piccola e precisa: abbiamo usato esattamente le stesse lettere?