17-årige Cathrine afvist til teoriprøve: Politisystem mener, hun er 4 år

Foto: Rigspolitiet
En systemfejl hos politiet gør, at borgere født i et skudår ikke kan tilmelde sig teoriprøve som alle andre.

Et it-system, der håndterer køreprøver hos politiet, evner ikke at tage højde for borgere, der er født den 29. februar i et skudår, skriver TV 2 Lorry.

Derfor afviste systemet i torsdags den ellers 17-årige Cathrine Skjøtt i at kunne tage en teoriprøve til kørekort. Fordi hun er født den 29. februar.

Dermed har hun strengt teknisk kun haft fødselsdag fire gange i sit liv. Og så meldte systemet pas:

»Jeg blev trukket til side, og så sagde de, at jeg ikke kunne tage prøven. De havde haft fat på it-afdelingen, men der var ikke noget at gøre, så jeg måtte tage hjem igen. Det blev jeg virkelig nederen over, for jeg havde læst rigtig meget op og taget online teoriprøver for at blive klar,« siger hun til TV 2 Lorry.

Cathrine Skjøtt må nu tage testen på gammeldags manér på papir.

Rigspolitiet oplyser, at det er første gang, man har hørt om fejlen, men man lover dog at få den rettet.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (46)
Jan Gundtofte-Bruun

Kan nogen oplyse om, hvordan det foregår uden papir nutildags?

Ifølge artiklerne blev hun "trukket til side", men kommer ikke ind på hvordan spiller IT ind? Hvorfor skulle hun sendes hjem, hvorfor kunne hun ikke tage prøven med papir og kuglepen sideløbende med de andre prøvetagere?

... sagde manden der tog køreprøve i et andet årtusinde.

Og hvad er det da i øvrigt for en båtnakke af en programmør, der ikke kan finde ud af at lave en dato-beregning, den slags er der altså gennemtestede standard-løsninger til! Egentlig ville jeg gerne se koden, for jeg tror det er lige til "the daily wtf", det kan ikke være ligetil at gå galt i byen.

Jørn Wildt

Hvordan i alverden virker den algoritme? Er det en tæller i et loop der finder antallet af en given dato siden et fødselsår?

Altså, det er ikke lang tid siden jeg så et forsøg på at beregne perioden mellem to tidspunkter A og B ved at lægge 24 timer til A, N gange i en løkke, hvor N så bliver antal dage i mellem A og B, når summen passerer B ... gæt hvad der skete ved sommertidsskift hvor der er 25 timer i et døgn :-)

Der vil hver dag, jorden rundt, være mindst én ny programmør som laver tilsvarende. Du kan ikke kæmpe imod ...

Henning Wangerin

Der står i artiklen at hun blev afvist fordi systemet mente hun kun var 4 år gammel. Det lyder ikke som en modulus11 fejl

Ja. Det står som overskrift.

Dermed har hun strengt teknisk kun har haft fødselsdag fire gange i sit liv. Og så meldte systemet pas:

{quote]
Der står i artiklen at hun blev afvist fordi systemet mente hun kun var 4 år gammel. Det lyder ikke som en modulus11 fejl
[/quote]

Jeg læser ikke artiklen som at systemet meddelte hende at jun kun er 4., men deriomod blot at hun blev afvist pga en fejl. Hvorfor det fejlede står ikke klart for mig.

Om systemet rent faktisk ikke kunne beregne 29/2 over 17 år til 17år eller om den "blot" ikke funde ud af at der kan være 29 dage i februar,, skal jeg ikke sige. Blot at hun helt pbenlyst blev afvist pga en fejl.

/Henning

Mads Bendixen

Jeg læser ikke artiklen som at systemet meddelte hende at jun kun er 4., men deriomod blot at hun blev afvist pga en fejl. Hvorfor det fejlede står ikke klart for mig.

I artiklen på tv2lorry.dk står der:

Men det var politiets computer ikke enig med hende i, da hun torsdag skulle tage sin teoriprøve. Computeren mente, at hun var fire år gammel, og dermed ikke kunne tage prøven.
- Da jeg fortalte min mor det, troede hun, det var en joke. Jeg selv tænkte, at det ikke kunne passe, siger Cathrine Skjøtt.

Baldur Norddahl

Hvor svært var det?

Kan du vise at du altid rammer rigtigt også for folk der forsøger en dag for tidligt, på dagen og en dag efter? Bevis det, lav test cases etc. Selv hvis du kunne, hvilket jeg ikke tror da metoden ikke virker til at være korrekt, så er det alt for kompliceret.

Den korrekte måde er den simple: tjek dag og måned med specialbehandling af den 29. februar. Hvis ikke vi er i et skudår, så behandles den 29. februar som 1. marts. Eftersom at vi blot skal tjekke om eleven er gammel nok, så kan det ske implicit:

IF ELEV_ÅR < NU_ÅR - 17 OR ELEV_ÅR = NU_ÅR - 17 AND (ELEV_MÅNED < NU_MÅNED OR ELEV_MÅNED = NU_MÅNED AND ELEV_DAG ≤ NU_DAG) THEN er_17 ELSE under_17

Lars Skovlund

Noget af det første jeg husker fra da jeg begyndte at læse fagtidsskrifter (nytår 1990, månedsbladet Alt om Data) er en serie læserbreve omhandlende netop dato-kode (beregning af ISO-ugenumre). Det tog et halvt års brevveksling at nå frem til en løsning, og alle forslag var på en halv sides penge eller så. Dette bare for at sige, at dato/tid er ikke simpelt, men man bør naturligvis have udtømmende testcases på det.

Kim Madsen

Jeg mener at det mindst er lige så interessant at det ikke er muligt at udvise en smule konduite, og lade hende tage prøven med det samme. Men det er typisk med de systemer der bruges alle steder efterhånden, It burde lette folks hverdag men det er langt fra altid min oplevelse.

Mikael Boldt

Borgere født i et skudår ikke kan tilmelde sig - Det er jo ikke rigtigt.

Borgere født på skuddag, så? - Nej for skuddag er den 24. februar i de år det er skudår.

Hvad kalder man så den sidste dag i februar måned, når det er skudår?
29. februar.

Bo Andersen

Det offentlige ?!?!

Det smarte system er sandsynligvis lavet af en programmør fra et privat firma ?!

De fleste IT skandaleprojekter er mig bekendt kørt i grøften af private firmaer og deres smarte konsulenter - selvfølgelig i parløb med inkompetente offentlige chefer og sammenrendet af snakkende DJØF'ere.

Baldur Norddahl

Siden jeg får thumps down er det måske nødvendigt at forklare hvorfor Martin Nielsens løsning ikke fungerer.

Det er ikke muligt at lave en funktion der omregner alder opgivet i antal dage til alder i år. Beviset er et eksempel: Hvor mange år er et barn som er 365 dage gammelt? Der er to mulige svar. Barnet kan være præcis 1 år gammelt. Eller det kan være 1 år minus 1 dag, såfremt barnet har levet den 29. februar i et skudår. Bemærk at barnet ikke behøver være født den 29. februar.

Martins løsning var at tage kandidatens alder i dage og dividere med 365,245. Uanset hvordan du afrunder, så kan den formel netop ikke afgøre om det er et barn i et skudår. Formlen kan bruges til at udstede kørekort når personen er 17 år plus/minus en dag. Politiet er meget regelrette, så de vil ikke bryde sig om at udstede kørekort en dag for tidligt...

Hvis man derimod bare regner på dag/måned/år sådan som det står skrevet direkte i CPR nummeret, så behøver man slet ikke tage stilling til skudår. Det er nemlig langt nemmere at svare på spørgsmålet "er personen X år gammel, ja/nej" end det er at udregne personens alder.

Hvis datoen er den 28. februar 2017 (280217) og vi har en person med CPR 290200-9999 så kan vi direkte se at personen ikke er 17 år endnu da 28 < 29. Dagen efter har vi datoen 1. marts 2017 (010317) og her er svaret klart ja da 03 > 02.

Denne simple og direkte sammenligning behøver ingen viden omkring skudår, herunder behøves der ikke regler for år der går op i 100 eller 400.

Jakob Damkjær

Hvorfor er der ikke en godkendt dato klasse som alle offentlige IT projekter kan kalde ? (selvfølgeligt implementeret i forskellige C klasser og Java)...

Som så er skrevet ind i samtlige kravspecifikationer ?

Så slipper man for alt det hjemme gøjlede møgkode som der åbentlyst benyttes...

Så er det altid "Fødselsdato - current date" og så output i et klart defineret format.

Men hvad kan man sige... hvis man tror programøre næsten altid ved hvad de laver så bliver man skuffet...

Kjeld Flarup Christensen
Ditlev Petersen

Jeg arbejdede engang på et patientsystem skrevet i Java (det kom aldrig i produktion, men det var af andre årsager). Jeg havde skrevet et eller andet og skulle teste dette. Af en eller anden grund valgte jeg en patient (en fiktiv testpatient), der havde været indlagt siden 1930'erne. Sådanne kunne man støde på i psykiatrien, selv om de er sjældne. Jeg oplevede så det sære fænomen, at hver gang jeg kiggede på den patient, blev indlæggelsesdatoen talt én dag op. Tilsyneladende havde Java eller i hvert fald noget af vores kode bygget oven på et slemt problem med datoer før 2. Verdenskrig. Jeg smed problemet over til en anden programmør, der så havde en slem dag med at gennemskue og rette fænomenet (uden at vælte resten). Desværre fik jeg aldrig en ordentlig forklaring på det. Var det os eller var det Java? Men altså en indlæggelsesdato baseret på en tid siden et eller andet var ikke nogen god ide. Var det indførelse af sommertid under krigen i nogle lande, der væltede korthuset?

Ud over at være en advarsel mod at lade idioter programmere, så er det også værd at fremhæve, at en idiot af og til tester noget, ingen andre ville finde på.

Baldur Norddahl

Lad mig så lige stille et opklarende spørgsmål: Hvilken dato måtte hun tidligst komme til teoriprøve?

Det kommer jo an på om juristerne mener at der 30 dage, 31 dage i en måned eller om man fastholder dag nummer i måneden og trækker en fra måneden. I mange sammenhænge er det sidste mulighed og her er der ingen specielle problemer med 29. februar da den 29. januar findes.

Den simple algoritme har ingen problemer med at der kan opstå ugyldige datoer når man trækker en fra måneden.

Peter Kyllesbeck

Og så skal der jo lige tages højde for den der.

Lad mig så lige stille et opklarende spørgsmål: Hvilken dato måtte hun tidligst komme til teoriprøve?


Nu var det netop teoriprøven, hun ikke fik lov til at tage. Jeg kommenterede, at politiet ikke ville udstede kørekortet en dag for tideligt.
Desuden fremgår det jo ikke, hvilken dag hun forsøgte at tage teoriprøven.
Og ellers enig med Baldur Norddahl.

Kim Rasmussen

Ja, hvor lang en måned er er ikke helt nemt...

Skulle for 3-4 år siden bruge en del pladsbilletter i forskellige europæiske tog, herunder Polen r først åbnet for bestilling en måned før.
Da det på datoen måneden før fortsat ikke var muligt at bestille kunne den dygtige Deutscher Bahn medarbejder berolige med at ikke alle jernbaner beregnede en måned på samme måde, og at PKP (den polske operatør) nok brugte måned lig 30 dage når toget fortsat var bloketet - så vi aftale at ringes ved dagen efter.
Dagen efter var toget stadig blokeret for salg og nu kom hun også i tvivl,men en kollega kom hurtigt til hjælp. En måned hos PKP var åbenbart pågældende ugedag (fx fredagen) 4 uger før afgang... Tja sådan kan selvfølgelig også gøre det... Når DB forøvrigt selv sagde 3 mdr på nogle reservationer kunne det bogså betyde enten 91 eller 92 dage før fik jeg fortalt (hvordan det passer med februar måned fik jeg ikke spurgt til)

Henrik Sørensen

Og så er der lige den spidsfindighed at skudår, der er delelige med 100, ikke er skudår ... altså med mindre de er delelige med 400, for så er de alligevel skudår ... år 2000 var således skudår, men det var år 1800 og 1900 ikke ...

Anvendelse af en valideret rutine er absolut at foretrække i stedet for at opfinde noget selv ...

Peter Sjøntoft

Jeg troede først man måtte tage teoriprøve 1 måned før man fylder 18. Det er i hendes tilfælde ved udgangen af januar. Se evt følgende:

https://www.bedrebilist.dk/bilist-haandbogen/koerekort/#ARTICLE_1_1_1

http://koerekort-guiden.dk/koereproeve#Hvornr_kan_man_aflgge_teoriprve

Er I helt sikre på at det har noget med hendes fødeslsdag 29 februar at gøre?

Mvh

Peter

Baldur Norddahl

Øh?

Sorry var på vej ud af døren. Sådan her:

Kandidaten har fødselsdag den 31. marts. Dermed må kandidaten gå til prøve den 1. marts. Det bliver håndteret korrekt af algoritmen selvom den sammenligner med den ugyldige dato 31. februar. Den 28. februar er for tidligt da 28 < 31. Og den 1. marts er ok da 3 > 2.

Det bliver noget mere besværligt hvis juristerne mener at "en måned" skal fortolkes efter andre regler, som eksempelvis at en måned altid er 30 dage (som bankerne) eller at fødselsdag den sidste dag i en måned betyder at man kan gå til prøve den sidste dag i måneden før.

Henning Wangerin

Jeg troede først man måtte tage teoriprøve 1 måned før man fylder 18. Det er i hendes tilfælde ved udgangen af januar. Se evt følgende:

De unge nu til dags må tage kørekort når de bliver 17. Indtil de bliver 18 SKAL de have en erfaren bilist med på forsædet til at guide dem.

Jeg formoder at det er den type kørekort hun er ved at tage.

/Henning

Ditlev Petersen

En eller anden foreslog engang, at den gregorianske kalenderreform (skudårsreglen) skulle erstattes af noget enklere, som programmører kunne forstå (i modsætning til præster, der kan forstå skudårsreglen?). Nu har jeg glemt det snedige (og jeg er noget sløv), men det gik ud på at skrive årstallet binært, hvis de mindst betydende bit havde et bestemt mønster, så var der altså skudår.

På den måde kan vi indlede en ny epoke af kaos og forvirring (så folk glemmer f.eks. Sundhedsplatformen og udsalget af folks personlige data).

Jakob Gram

Op til år 2000-hoaxen var der faktisk BIOS- og OS'er der ikke kunne finde ud af 400-års-regelen. Og det var bla. Microsoft NT 4. Der udkom dog en SP der rettede problemet (inden det blev et problem).

Ditlev Petersen

Et eller andet officielt organ, måske Indenrigsministeriet, udsendte før år 2000 en skrivelse, der forklarede, at år 2000 skulle "behandles som et skudår". Da jeg er en stor pedant, hidsede jeg mig voldsomt op over formuleringen, det "skal ikke behandles som", det ER et skudår Muligvis var der en jurist, der ikke ønskede at skrive noget forpligtende om et emne, han/hun ikke forstod.

PS. År 2000 var ikke nogen "hoax", det var skam meget reelt. Personligt ville jeg ikke have oplevet et atomkraftværk ryge i luften på grund af kode, jeg havde ansvaret for, for jeg arbejdede med sygehus-it. Men sygehusene ville nok have mistet overblikket over deres patienter, hvis ikke vi havde arbejdet hårdt på at undgå et sammenbrud. Men muligvis overvurderede vi opgaven. Jeg kan forstå, at det ikke betyder så meget i praksis, at it-systemerne på sygehusene fungerer (ahem!).

Om der ville være sket noget i retning af eksploderende atomkraftværker, fly der faldt ned fra himlen, og kampvogne der kørte i rundkreds, aner jeg ikke. Man kan jo først vide den slags, når man har undersøgt problemerne. Og rettet evt. problemer. Og testet dem. Tro kan flytte bjerge (hævdes det - vi venter stadig), men tro kan ikke fikse et it-system.

Log ind eller Opret konto for at kommentere
Pressemeddelelser

Welcome to the Cloud Integration Enablement Day (Bring your own laptop)

On this track, we will give you the chance to become a "Cloud First" data integration specialist.
15. nov 2017

Silicom i Søborg har fået stærk vind i sejlene…

Silicom Denmark arbejder med cutting-edge teknologier og er helt fremme hvad angår FPGA teknologien, som har eksisteret i over 20 år.
22. sep 2017

Conference: How AI and Machine Learning can accelerate your business growth

Can Artificial Intelligence (AI) and Machine Learning bring actual value to your business? Will it supercharge growth? How do other businesses leverage AI and Machine Learning?
13. sep 2017