C'è il problema di provare a vedere se due stringhe univoche sono anagrammi l'una dell'altra. La prima soluzione che ho considerato sarebbe quella di ordinare entrambe le stringhe e vedere se erano uguali tra loro.Confronto tra gli anagrammi usando i numeri primi
Ho preso in considerazione un'altra soluzione e vorrei discutere se lo stesso sarebbe fattibile.
L'idea sarebbe quella di assegnare un valore numerico a ciascun carattere e riassumerlo in modo tale che un insieme unico di caratteri produrrebbe un valore univoco. Come stiamo testando per gli anagrammi, non ci importa se il checksum di "asdf" e "adsf" sono gli stessi - infatti, lo richiediamo in questo modo. Tuttavia il checksum delle stringhe "aa" e "b" non dovrebbe essere uguale.
Stavo considerando di assegnare i primi 52 numeri primi agli alfabeti da "a" a "z" e quindi da "A" a "Z" (supponiamo di avere solo alfabeti).
Lo schema precedente si interromperebbe se la somma di due o più numeri primi nell'insieme di 52 numeri primi potrebbe generare un altro numero primo esistente nell'insieme.
I miei dubbi sono: -
- C'è qualche schema di numerazione che satify mie esigenze?
- Non sono sicuro della matematica in questione; è possibile provare/c'è qualche prova che suggerisce che la somma di due o più numeri primi nell'insieme dei primi 52 primi abbia almeno un valore che esiste nello stesso insieme?
Grazie.
destra ... fattorizzazione è unico! – thedayofcondor
Fai attenzione, il tuo numero può diventare molto grande molto rapidamente ... il 26 ° primo è di circa 100, quindi zzzzzzzzzz sarebbe 100^10 – thedayofcondor
Ottima risposta e perfettamente corretta. Quello che puoi fare per fermare la preoccupazione che i numeri diventino più grandi è usare un buffer su ogni stringa. Prendi i numeri dal lato sinistro di una stringa in un buffer e i numeri dal lato destro dell'altro stringa nell'altro buffer. in th Immettere i numeri 'n' nel buffer in modo tale che' 101^n' (dove '^' denota esponente) sia inferiore al numero massimo rappresentabile dal tipo intero che si sta utilizzando. –