Newsgroup: it.comp.lang.visual-basic
Titolo: Algoritmo per trasformare i CODICI FISCALI in nu numero max 11

Ciao...qualcuno può aiutarmi ?
cerco un algoritmo matematico per trasformare il CODICE FISCALE in un
numero univoco (positivo max 11 caratteri)
stringa alfanumerica di 16              ------>        in numero di 11
(univoco)
non so come cercare!!! 
avete qualche consiglio utile ? 
grazie

 numero univoco (positivo max 11 caratteri)
bhe createlo tu... ma ti serve anche tornare indietro ?
cioe' da un numero di 11char tornare una stringa alfanumerica di 16char?
cmq prima trasforma tutti i caratteri del CF nei loro codici ascii (magari
con un tuo alfabeto di 26lettere+10cifre = 36 caratteri)
ad esempio
ABC 123 diventa 01 02 03  37 38 39
cosi' hai un numerone di 16x2 = 32 caratteri ora in esadecimale gia recuperi
un po di caratteri ...
insomma dacci maggiori info, cosa ci devi fare con questo codice ?
-- 
-Gigio@work-
G2k Blog : 
http://www.g2kweb.it/?3098
G2k Snip Url : 
http://www.g2kweb.it/?3015
G2k Free Gallery : 
http://www.g2kweb.it/?218

 numero univoco (positivo max 11 caratteri)
E' ovviamente impossibile.
Un carattere alfanumerico ha un contenuto informativo più che doppio 
rispetto ad una cifra.
Dei 16 caratteri alfanumerici del CF, in realtà 8 sono alfanumerici 
veri e propri, 7 sono numerici, e uno potresti anche ignorarlo perchè è 
un checksum.
Hai quindi un contenuto informativo di 8*2+7 cifre, ossia 23 cifre.
Poi, in realtà la popolazione non è completa (nel senso che non vengono 
usate tutte le lettere dell'alfabeto nè tutte le cifre), per cui può 
essere che il vero contenuto informativo possa essere in qualche modo 
ridotto a una ventina di cifre.
Ma 11, non credo proprio.
Ciao
Alberto
-- 
A questo punto hanno trovato un muro,
un muro duro, molto molto duro,
che siamo noi.

Ti ringrazio per avermi dedicato un pò del tuo tempo...
Premetto sono una chiavica in matematica!!!
Non mi serve tornare indietro
Ho un gestionale che gestisce SOLO la ricerca per Partita IVA  (numero
di 11 byte) ma ci sono soggetti che non hanno la P.I. ma solo il codice
fiscale (campo che gestisco nell'archivio ma non in chiave..)
Non posso modificare le strutture di base degli archivi quindi vorrei
trovare un algoritmo che mi crei una "finta" Partita IVA al fine di
utilizzare questo numero come campo di chiave (non devo tornare
indietro.. è solo un numero univoco da generare!!





Dopo dura riflessione, smarg ha scritto :

Come soluzioni più immediata (e corretta formalmente) vedo una banale 
tabella con ID_Record-CodiceFiscale.
La ricerca la fai lì, e poi, trovato l'ID, individui il record vero e 
proprio.
Lo si fa anche con una normale query Left Outer Join, e non devi 
toccare le tabelle esistenti.




 indietro.. č solo un numero univoco da generare!!
uff allora i metodi son infiniti come ti dicevo, la tabella di appoggio
ID-PIVA e' la soluzione corretta, come piva (che non hai) puoi mettere ad
esempio i campi del cf con la data e la citta' tipo
79c16g141
diventa : 79 03 16 07 141 -> 79031607141 penso che le possibilita' che una p
iva sia simile ad una data di nascita oramai siano poche , e in piu' come
codice e' abb. univoco perche' prendi data di dascita e citta' quindi solo
in grosse citta' c'e' il rischio di uguaglianze,
al limite generi la chiave, la cerchi nella tabella, se non c'e' la
inserisci e bon, altrimenti la incrementi di un tot e ricerchi finche' non
la riesce ad inserire.
quando dovrai fare una ricerca chiederai o la piva o la data ( e luogo
opzionale ) di nascita.
Che te ne pare ?


A quanto sopra aggiungerei che, ahimé, il codice fiscale
non è univoco.

 non è univoco.
In che senso?
Credevo che anche i CF temporanei fossero comunque progressivi ed 
univoci...


....non ho un database Access o MSDE  ...ho un banalissimo e
rigidissimo file ISAM  (cobol) 
purtroppo :-))))

Mi piace!!!
anche se non ho un database Access o MSDE  ma  un banalissimo e
rigidissimo file ISAM  (cobol) posso utilizzare la tua soluzione per
abbattere i tempi di ricerca.
Infatti estrapolando dal codice fiscale una sequenza numerica
"parziale" comune anno mese giorno posso posizionarmi con il comando
FIND in quel COMUNE - ANNO MESE GIORNO e ricercare il codice fiscale
spazzolando solo pochi record
grazie......
Giorgio da CATANIA
 auguri :-)



 univoci...
si ma tu usi solo anno e comune non dimenticartelo 9 caratteri su 16...


Alberto
Nel senso che nel caso ci siano due mario rossi, nati a roma
il 01-04-1950 non sarà possibile avere due c.f. distinti: in tal caso
verrà assegnato ad uno dei due un c.f. speciale, ovvero:
quando l'espressione alfanumerica relativa ai primi quindici caratteri
del codice risulta comune a due o più soggetti, si provvede a
differenziarla
per ciascuno dei soggetti successivi al primo codificato. A tal fine,
si
effettuano nell'ambito dei sette caratteri numerici contenuti nel
codice
sistematiche sostituzioni di una o più cifre a partire da quella di
destra,
con corrispondenti caratteri alfabetici.

verrà assegnato ad uno dei due un c.f. speciale, ovvero:
Questo è ovvio.
Ma questo serve proprio a garantire che i CF siano univoci.
Quello che non capisco è la tua affermazione che i CF non siano univoci.
Sono curioso.
Alberto

 si ma tu usi solo anno e comune non dimenticartelo 9 caratteri su 16...
Io uso solo anno e comune?
C'è qualcosa in questo thread che mi sfugge...
Alberto

 Sono curioso.
probabilmente intendeva una cosa lievemente diversa: essendo noti i dati
di nascita di una persona, non puoi calcolare il codice fiscale in modo
univoco e sicuro. quello che ottieni potrebbe non essere il suo ma quello
di un omonimo. poi, una volta assegnato, ogni codice e' univoco.
ciao, a.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 di un omonimo. poi, una volta assegnato, ogni codice e' univoco.
Non che mi cambiasse la vita, ma mi era venuto il dubbio che mi sfuggisse
qualcosa.
Così va meglio.
Ciao
Alberto

Grazie, mi hai tolto le parole di bocca. :-)

E usare una sorta di hashing?
Dovrebbe esistere qualcosa a 64 bit (a cui aggiungi altre 3 cifre 
inutili, giusto per riempire la stringa).
Altrimenti puoi usare il CRC32 (quindi 32bit di hash univoco e il resto 
lo aggiungi tu)
http://www.freevbcode.com/ShowCode.Asp?ID=655
(and google too...)
bye