Kalenderluke 3: En gåte


onsdag 4. desember 2013 Julekalender

I dag var det veldig spennende å følge med på åpningen av julekalenderen. Det ble en skikkelig triller om topp-plasseringene. Jeg var ganske fornøyd med oppgaven jeg hadde laget, og det har virket som om den har engasjert folk i løpet av dagen.

Luke 3, play-by-play

Magnar Sveen (Kodemaker) lå på delt andreplass etter luke 2. 12 sekunder over 9 satset han alt og gamblet på et svar – som ikke var riktig! Han måtte dermed vente i 10 minutter før han kunne forsøke igjen.

Dermed ble det rom for Einar W. Høst (Computas) som få sekunder senere sikret seg 30 poeng og foreløpig sammenlagtledelse.

Også Johannes Brodwall (Exilesoft) klarte oppgaven før det var gått et minutt, men han hadde ikke husket på kalenderen før i dag, og havnet dermed 11 poeng bak Einar sammenlagt.

09:09 ble Bjarte S. Karlsen (Know IT Objectnet) 4. person som klarte oppgaven, og så var det klart for Magnar å forsøke igjen. Nå hadde han hatt god tid til å tenke seg om, kasserte sikkert inn 24 poeng, og overtok dermed ledelsen med 4 poeng mer enn Einar sammenlagt. Johannes, Bjarte og Bente C. Andorsen lå nå på delt tredje.

Helt til klokken ble 09:50. Etter fire misslykkede forsøk klarte endelig Sebastian Holager (CRM Norge) å prikke inn en 10-poenger. Siden han hadde nest beste tid på luke 2 var dette nok til å overta tredjeplassen.

Bente, som ledet sammenlagt etter luke 2, lå altså nå på delt 4.-plass. Hun hadde derimot ikke svart på oppgaven enda, og kunne avansere til like bak Einar om hun gjorde det. Men Bente hadde problemer. Hun forsøkte igjen og igjen, men klarte ikke finne den riktige løsningen.

Topp 10 etter tre luker

luke3_stilling2

Løsningen

Oppgaven denne gangen gikk ut på at en gåte skulle lede deg frem til et ord – og ordet var nil. Her har jeg brutt opp gåten, og forklarer hva jeg har tenkt.

Jeg stammer fra latin,

Nil er en forenkling av det latinske ordet Nihil. Null kommer også fra latin (nullus), og kunne vært riktig.

men er reservert i flere andre språk.

Nil er et reservert nøkkelord i flere språk, for eksempel i SmallTalk og Pascal.

Jeg er der når alt annet er borte, jeg er en serie av ingenting.

Nihil betyr "ingenting", og kan representere den tomme mengden. I Lisp og språk som har arvet mye derfra er også nil og en tom liste nøyaktig det samme. Her skiller bruken av nil og null lag.

Det finnes bare én av meg,

Nil er det man av og til kaller en pseudovariabel, og alle pekere til nil peker til akkurat det samme / til samme lokasjon.

og for noen er jeg det motsatte av t.

Her er det tydeligste sporet for å løse gåten. I Common Lisp har man ikke true og false. Man har en konstant for sannhet som bare heter t, og for falskhet har man kun den tomme listen - som altså er det samme som nil.

Hvilke andre svar ble forsøkt?

Her er en oversikt over de gale svarene som gikk  oftest igjen (målt sånn ca midt på dagen):

luke3_svar

Void og null var jo ikke langt unna, og false var ikke dumt tenkt det heller. Jeg har forståelse for dem som mener "null" burde vært et akseptabelt svar. Men kjenner du historien til nil, null og void så mener jeg du tydelig ser at gåten snakker om nil fremfor de andre.

I tillegg til disse ble mange andre ord forsøkt, blant annet nullptr, NaN, ROM, \0, assert, binær, binær, bug, caret, class, const, delete, dynamic, else, file, head, heap, infinite, integer, list, lorem, lorem impsum, main, n, new, object, omega, origo, phi, pseudo, return, root, sleep, type, variabel, whitespace og zero.

Poengtrøbbel

For tredje dag på rad inntraff den kjedelige buggen som gjorde at enkelte spillere fikk flere poeng enn de skulle. Og igjen måtte jeg inn og justere resultatene. Jeg tror fortsatt problemet ligger i MongoDB, for jeg har funnet en enkelt mongo-spørring som løser opp tilstanden.

Men nå har jeg implementert en liten endring i poengberegningen som jeg håper vil omgå problemet, og jeg pusher denne til prod i natt.

I luke 3 gikk det ikke an å få mindre enn 10 poeng for et riktig svar, mens de ti første som hadde riktig fikk flere poeng. Dette endrer jeg også nå. Vi begynner på 40 poeng for første riktige i luke 4, og så reduserer vi med ett poeng for hver som svarer riktig, helt til vi ender på minimum som er ett poeng. Jeg håper det faller i smak :)


comments powered by Disqus