Forum: LISP - Personnummer

Forum huvudsida -> Programmering -> LISP - Personnummer

Sidor: 1

Till botten

DemonicDM 13:04 - 15:e September 2007 | Post #1
Medlem
Inlägg: 10


Skicka PM
Hej.

jag håller på med självstudier och behöver lite hjälp
Hur gör man en personnummer kontroll med hjälp av LISP

mvh dary


ps: jag vet vad man ska göra men inte hur man ska skriva koden.


edit:
jag har skrivit färdigt koden. tack för visat intresse.Smiley


Senast redigerad 12:05 - 4:e Oktober 2007


HärJ 18:02 - 15:e September 2007 | Post #2
Moderator
Inlägg: 1198


Skicka PM
jag kan lite lisp så om du talar om hur man kontrollerar personnummer så kan jag hjälpa dig.
(jag är lat och orkar inte googla på det q:)

EDIT: Eftersom jag inte hade nåt att göra har jag nu skrivit ett program som gör detta. Det var lite klurigare än jag trodde, kanske beroende på att det var ett tag sen jag höll på med lisp.
Kan ge dig upplägget på min kod(för ful för att publiceras):
1. Ta emot personnummer
2. Omvandla till lista
3. Räkna ut delsummor
4. Summera
5. Jämför med kontrollsiffran

det var så jag gjorde...
(om jag snyggar till koden kommer den upp, om som sagtSmiley)

-------------------------
Tänk om jag vore en skalärprodukt!

Senast redigerad 23:57 - 15:e September 2007


webbgbg 18:27 - 21:a Oktober 2007 | Post #3
Medlem
Inlägg: 2


Skicka PM
Här är ett javascript som ordnar det där med att kolla personnummer:

<script type="text/javascript">

function personnummer(nr){
this.valid=false;
if(!nr.match(/^(\d{2})(\d{2})(\d{2})\-(\d{4})$/)){ return false; }
this.now=new Date(); this.nowFullYear=this.now.getFullYear()+"";
this.nowCentury=this.nowFullYear.substring(0,2);
this.nowShortYear=this.nowFullYear.substring(2,4);
this.year=RegExp.$1; this.month=RegExp.$2; this.day=RegExp.$3;
this.controldigits=RegExp.$4;

this.fullYear=(this.year*1<=this.nowShortYear*1)?(this.nowCentury+this.year)*1:((this.nowCentury*1-1)+this.year)*1;
var months = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
if(this.fullYear%400==0||this.fullYear%4==0&&this.fullYear%100!=0){
months[1]=29; }

if(this.month*1<1||this.month*1>12||this.day*1<1||this.day*1>months[this.month*1-1]){ return false;
}
this.alldigits=this.year+this.month+this.day+this.controldigits;
var nn="";
for(var n=0;n<this.alldigits.length;n++){
nn+=((((n+1)%2)+1)*this.alldigits.substring(n,n+1)); }
this.checksum=0;
for(var n=0;n<nn.length;n++){ this.checksum+=nn.substring(n,n+1)*1; }
this.valid=(this.checksum%10==0)?true:false;
this.sex=parseInt(this.controldigits.substring(2,3))%2;
}
</script>
<br><br><br><br><br><br><br><br><br><br>
<center>
<font face="Arial" size="4" color="#ff0000">
Kontrollera om personnumret är giltigt
</font>
<br><br>
<font face="Arial" size="2">

<form onsubmit="if(new personnummer(this.pnr.value).valid){
alert(''Giltigt personnummer''); } else { alert(''0giltigt
personnummer''); }; return false;">
Personnummer: <input type="text" value="ååmmdd-nnnn" name="pnr">
<input type="submit" value="Kontrollera">
</form>
</center>
</font>

Håll tillgodo

-------------------------
http://www.webbgbg.se -för dig som behöver hjälp med SEO, webbdesign, webbhotell och översättning



DemonicDM 17:48 - 9:e December 2007 | Post #4
Medlem
Inlägg: 10


Skicka PM
tack för den långa koden,
men jag har redan skrivit koden. vill ni så maila mig skickar jag er en kopia av koden




HärJ 21:10 - 9:e December 2007 | Post #5
Moderator
Inlägg: 1198


Skicka PM
webgbg: inte för att vara elak men vad tänkte du med när du postar javascript när det är lisp som efterfrågas?
Han skulle studera koden och översätta den till lisp? Jag är skeptisk.

-------------------------
Tänk om jag vore en skalärprodukt!



Sidor: 1

Forum huvudsida -> Programmering -> LISP - Personnummer
Atom feed

Du får inte posta i den här tråden | Till toppen