Nördtäfvlan 2002


Här kan man kolla längden på källkoden (om den är på en rad), och här kan man fixa en md5-checksumma (räcker som "inskickad kod", om man sen kan uppvisa källkod som ger den checksumman). Här kan man göra både och. Den plockar också bort onödiga radbryt.

Uppgift 1 (deadline 2002-12-07 17:00):
Ett program som genererar alla primtal upp till och med det från kommandoraden angivna (positiva hel)talet, i ordning. Högst ett tal per rad, valfri mängd whitespace. Indataområde 2 - åtminstone 11 miljoner
Highscore: Adam&John, 87 bytes. Adam, 92 bytes. John, 101 bytes.

John, 101 bytes:
main(int i,int**a){int m=atoi(*++a),b;for(;i<=m;i++){for(b=2;b<i;b+=i%b?1:m);b>i?:printf("%d\n",i);}}

Uppgift 2 (deadline 2002-12-13 17:00):
Ett program som faktoriserar ett tal till dess primfaktorer. Indatamängd, inmatning och utskrift samma som uppgift 1. Primfaktorerna behöver inte skrivas ut i någon särskild ordning.
Highscore: John, 77 bytes. Adam, 80 bytes.

John, 77 bytes:
main(int p,int**v){int f=atoi(*++v);while(f>1)f%p?p++:printf("%d\n",p,f/=p);}

Uppgift 3 (deadline 2003-12-04 20:30):
Ett program som givet ett (från kommandoraden angivet) datum på ISO-8601-format (YYYY-[M]M-[D]D) skriver ut veckodagen på svenska (enligt den gregorianska kalendern). Indataområde 1582-10-15 (som nog var en fredag) till åtminstone 100000-12-31.

Adam knäcker John med 162 bytes mot 172, och vinner pokalen. John har ett tjuvknep för att trimma Adams program ytterligare en byte. Best-in-show, på 161 bytes:
main(int y,int**b){int m,d;printf("%sdag\n","fre\0lör\0sön\0mån\0tis\0ons\0tors"+(d-=m<sscanf(b[1],"%d-%d%d",&y,&m,&d)?y--:y-2,23*m/9-d+6+y/4-y/100+y/400)%7*4);}