Seuraa 
Viestejä45973
Liittynyt3.9.2015

Hei

Löysin vuosia vanhan sfnet-viestiketjun jossa väitettiin että on mahdollista tarkistaa henkilötunnuksen muodollinen oikeus säännöllisellä lausekkeella.
En ole kuullut, että kukaan olisi vielä todistanut tätä oikeaksi. Mitä mieltä te olette, onkohan se teoreettisesti mahdollista?

Kommentit (14)

Vierailija
Ronron
Mikä on säännöllinen lauseke?



"Säännöllinen kieli on yksinkertaisin Noam Chomskyn neliportaisessa kielioppien hierarkiassa. Säännölliset kielet voidaan tunnistaa äärellisillä automaateilla. Äärellinen automaatti on malli tietokoneelle, joka saa syötteen merkki kerrallaan, eikä voi kelata syötettä edestakaisin"

http://fi.wikipedia.org/wiki/S%C3%A4%C3 ... en_lauseke

Volta
Seuraa 
Viestejä123
Liittynyt19.7.2012
penttipentti
Hei

Löysin vuosia vanhan sfnet-viestiketjun jossa väitettiin että on mahdollista tarkistaa henkilötunnuksen muodollinen oikeus säännöllisellä lausekkeella.
En ole kuullut, että kukaan olisi vielä todistanut tätä oikeaksi. Mitä mieltä te olette, onkohan se teoreettisesti mahdollista?


Aika helposti näkee, että sen modulon voi laskea 31-tilaisella äärellisellä automaatilla. Siispä tarkistus voidaan tehdä äärellisellä automaatilla. Mitä tahansa säännöllistä lauseketta vastaa joku äärellinen automaatti ja voisi kuvitella että tämän konversion voisi tehdä myös toiseen suuntaan. Jos se on mahdollista, on olemassa säännöllinen lauseke jolla tuon tarkistuksen voi tehdä.

Edit: ja nyt kun luin tuon annetun linkin kunnolla, niin siellähän se on annettu:

http://tarkistusmerkit.teppovuori.fi/tarkmerk.htm#hetu1

^(0[1-9]|[12]\d|3[01])(0[1-9]|1[0-2])([5-9]\d+|\d\d-|[01]\dA)\d{3}[\dA-Z]$

Vierailija

Onkohan tää aihe liian käytännönläheinen tiede.fi palstalaisille? Jonninjoutavia tähtienvälisiä laskelmia osataan tehdä mutta sellaista matemaattista kaavaa jolla olisi käytännön hyötyä ihmisille ei osata..

PPo
Seuraa 
Viestejä12697
Liittynyt10.12.2008
penttipentti
Onkohan tää aihe liian käytännönläheinen tiede.fi palstalaisille? Jonninjoutavia tähtienvälisiä laskelmia osataan tehdä mutta sellaista matemaattista kaavaa jolla olisi käytännön hyötyä ihmisille ei osata..

Luulen, että et ole aivan ymmärtänyt tarkistusmerkin laskemisen ideaa.
Syntymäaika ja kolme numeroa tunnuksessa muodostavat luvun, kun jätetään pisteet pois. Saatu luku jaetaan luvulla 31. Jakojäännöksestä saadaan tarkistusluku jopa lyhyen matematiikan tiedoilla. Tämä nimittäin on periinteellinen tehtävä lukion matemtiikan kurssilla 6,7?. Eiköhän tämä laskelma voida algoritmisoida?

NytRiitti
Seuraa 
Viestejä2703
Liittynyt12.9.2012

RegExp (onneksi) ei kuulu osaamisalueisiini, mutta olisko tässä ongelma kaksinumeroisen jakojäännöksen korvaaminen aakkosella taulukosta, joka on "harva"
korjathan
Olkoon ensimmäinen ja viimeinen kerta kun yritän ymmärtää RegExpiä, mutta luulen, että sillä voitaisiin tarkistaa henkilötunnuksen muodollinen oikeellisuus, muttei tarkistusmerkin oikeellisuutta.

pöhl
Seuraa 
Viestejä917
Liittynyt19.3.2005

Mielestäni henkilötunnusten tarkistaminen onnistuu säännöllisillä lausekkeilla. Hetuhan on muotoa ppkkvvyzzzq, missä pp tarkoittaa syntymäpäivää, kk syntymäkuukautta, vv syntymävuotta, y on vuosisadan tunnus, zzz on yksilönumero, q on tarkistusmerkki.

Uskoakseni noita vuosisadan tunnuksia on vain äärellisen monta. Jos näin on, niin silloin hetujakin olisi äärellisen monta, jolloin voi laatia säännöllisen lausekkeen, jossa on kaikki mahdolliset hetut lueteltuna.

Mutta tällä tavalla tuosta lausekkeesta tulee aika ruma.

Volta
Seuraa 
Viestejä123
Liittynyt19.7.2012
penttipentti
Abbath

Edit: ja nyt kun luin tuon annetun linkin kunnolla, niin siellähän se on annettu:

http://tarkistusmerkit.teppovuori.fi/tarkmerk.htm#hetu1

^(0[1-9]|[12]\d|3[01])(0[1-9]|1[0-2])([5-9]\d+|\d\d-|[01]\dA)\d{3}[\dA-Z]$




Et lukenut linkkiä kunnolla, et lukenut (tai ymmärtänyt?) edes liittämääsi lauseketta, tuossahan ei tehdä minkäänlaista tarkistusmerkin laskentaa.

Olet oikeassa, ei tuo ole vielä se ratkaisu, luin hieman turhan pikaisesti. Mutta niin kuin sanoin, tarvitse kuin tehdä mappaus äärellisiltä automaateilta regexp:eille, mikä varsin todennäköisesti on olemassa ja konstruoitavissa. Tuolla asenteella saat kuitenkin pitää tunkkisi.

Vierailija
PPo
penttipentti
Onkohan tää aihe liian käytännönläheinen tiede.fi palstalaisille? Jonninjoutavia tähtienvälisiä laskelmia osataan tehdä mutta sellaista matemaattista kaavaa jolla olisi käytännön hyötyä ihmisille ei osata..

Luulen, että et ole aivan ymmärtänyt tarkistusmerkin laskemisen ideaa.
Syntymäaika ja kolme numeroa tunnuksessa muodostavat luvun, kun jätetään pisteet pois. Saatu luku jaetaan luvulla 31. Jakojäännöksestä saadaan tarkistusluku jopa lyhyen matematiikan tiedoilla. Tämä nimittäin on periinteellinen tehtävä lukion matemtiikan kurssilla 6,7?. Eiköhän tämä laskelma voida algoritmisoida?



Siitä vain todistamaan väitteesi oikeaksi...

Suosituimmat

Uusimmat

Uusimmat

Suosituimmat