Een hobbyprojectje: een loco-opdrachten om een paar heldere sterrenbeelden te leren kennen. Ik kon geen goede plaatjes van de sterrenbeelden vinden, dus die heb ik zelf met Astropy, Vizier en nog wat code gemaakt. Als er belangstelling voor is, kan ik die code wel delen, samen met de code om de loco te husselen. Dat doe ik nu nog niet, want de code is een beetje te rommelig…
Instructies: download sterrenbeelden.pdf en print hem (let op, op 100% grootte). Printen, uitknippen en spelen maar. Je hebt wel een loco-doosje nodig. Ik heb er ook een gemaakt met de tekens van de dierenriem: dierenriem.pdf.
Deze loco-opdrachten zijn trouwens op de grens van wat ik zelf weet.
I just released the first version of my first iOS app SnapSolve. It is an app that solves Ruzzle or Boggle: it finds all the words in the 4×4 letter grid. There are already many such apps, but the new thing about SnapSolve is the input: you take a picture of the game, and the letters are automatically detected.
Making this game took me a lot of time, since I had to learn XCode, Objective C, C++, OpenCV and had to come up with an actual algorithm to do the letter detection. In the end I resorted to Python + OpenCV to do prototype the algorithm, so three programming languages were involved. Just as I was submitting the app to Apple for review, a blog appeared about just the thing I was making. I’ll try to illustrate the algorithms I developed in the style of the Megafauna blog. Actually, both our algorithms were inspired by SudokuGrab.
My algorithm consists of
Scale the image to 360×480
Detect if it’s Ruzzle or Boggle
Adaptive threshold
Find all contours
Select contours that have a reasonable size (could be a letter)
From the centers of all these contours, select the 16 that are on a 4×4 rectangular grid
Recognize the score modifiers (only for Ruzzle)
Recognize the letters: for every of the 16 letters:
Draw the letter on a 30×30 image
Overlay it with all (26 x 4 = 104) reference letters, find the letter with the largest overlap
Ik ben een fan van het artikel The trouble with em ‘n en (dat schreef ik eerder al eens. Soms is het lastig om het juiste afbreek- dan wel gedachtestreepje in te voegen. Daarvoor moet je of een slim Office-pakket hebben – slimmer dan Microsoft Office – of de Unicode-codes van de betreffende streepjes uit je hoofd kennen. Omdat mij het laatste niet lukt hierbij een spiekbriefje:
Afbreekstreepje
‐
2010
Vast afbreekstreepje
‑
2011
Minteken (voor Excel)
‒
2012
En-streepje
−
2013
Em-streepje
—
2014
Minteken (binaire operator)
−
2212
Plusteken
+
+
Keerteken
×
00D7
Om deze tekens te typen gebruik ik de sneltoets Alt+[plus op numpad]+code. Om dat werkend te krijgen moet je wel iets in het register aanpassen (method 1 op deze pagina).
Zoals velen al hebben geconstateerd, hou ik m’n weblog niet meer zo frequent bij. In de loop van de tijd is de inhoud van dit weblog ook nogal veranderd. In het begin ging het over alles wat ik meemaakte (zoals wat ik in het weekend deed), maar in de loop van de tijd draaide dit naar dingen die ik in de context van m’n werk als wiskundige bedacht (zoals het Kassa-avontuur hieronder, de voetbalplaatjessommen en Mathematica-bevindingen).
Af en toe zal ik nog wel eens wat uitvinden, en dat dan op m’n weblog zetten. Maar ik stop nu officieel met de berichten van de persoonlijke categorie. Wil je weten hoe het met me gaat of wat ik dit weekend gedaan heb, bel dan gerust.
Naar aanleiding van mijn voetbalplaatjesavontuur werd ik onlangs gebeld door iemand van het tv-programma Kassa. Zij wilden, in het kader van het komende WK, de verzamelacties van alle supermarkten met elkaar vergelijken. En of ik dan kon uitrekenen hoe lang het duurde voordat je alle ‘gadgets’ compleet had.
Helaas, helaas, was ik vorige week op vakantie, dus heeft Vincent het voor Kassa doorgerekend, aangevuld met wat simulaties die ik onderweg heb gedaan. We werden in de uitzending maar kort genoemd (van 23:30 tot 24:42 in het filmpje), maar op de site staat al een uitgebreider verhaal, inclusief het document waarin Vincent de resultaten toelicht.
Toen we twee maanden geleden in het programma van de Stadsschouwburg keken, zagen we het Internationaal Danstheater staan. Omdat we toen nog niet wisten dat het nu razend druk is op het werk, boekten we enthousiast kaartjes. En daardoor heb ik nu heerlijk uitgerust tijdens het kijken naar tango’s, lindy hop, Oost-Europese dansen, accordeonsolo’s en wat dies meer zij. Toegegeven, tijdens de trage tango heb ik m’n ogen even dichtgedaan.
Tot mijn genoegen herkende ik sommige moves in het een na laatste nummer, de Lindy Hop, van acrobatisch rock-‘n-roll. Die had ik zo mee kunnen doen. En ook de toegift had ik zo mee kunnen doen, dat was namelijk een tango die ik ook nog heb geleerd van mijn accordeonleraar.
Onlangs heeft Mustafa mijn haar eens bijgewerkt. Brenda wees me erop dat hij wat haastig te werk was gegaan, en een haartje over het hoofd heeft gezien en dus op m’n hoofd heeft laten zitten. Gelukkig ben ik niet teruggestuurd, een nagelschaartje bood uitkomst.
Jaren geleden heb ik eens een Boggle-oplosser geprogrammeerd in PHP. Er stonden al een hoop andere op internet (Untangle, NetBoggle, Boggle Solver, Automated Boggle Solver, en nog veel meer), maar toch niet helemaal wat ik zocht. Om te beginnen vinden de meeste alleen Engelse woorden, en speel ik Boggle in het Nederlands. En verder was de layout van een stel andere net niet mooi genoeg naar mijn wensen.
Natuurlijk vond ik het ook leuk om eens een stukje te programmeren. De maker van een van de bestaande programma’s heeft een uitgebreide beschrijving van de werking van zijn programma online gezet. Deze beschrijving heb ik uitgewerkt in een objectgeoriënteerd stukje PHP. Nu is PHP een geïnterpreteerde computertaal, en daardoor niet ontzettend snel. Toen ik mijn code op mijn studentenwebsite bij Wiskunde zette, was het altijd spannend of de oplossing binnen 30 seconden te voorschijn kwam. Na 30 seconden stopte de webserver (grit) namelijk met rekenen. Daardoor heeft de solver nooit het grote publiek bereikt.
Inmiddels, 6 jaar later, is mijn website al drie keer verhuisd, en ook de boggle-machine is er nog. Ik heb ‘m vanochtend even aangepast aan de nieuwste PHP-eisen, waardoor hij het weer doet. En gelukkig is de computer van m’n huidige website-hoster een stuk sneller dan ollie.
Het programma, nog steeds met de werknaam losop.php is te gebruiken via http://www.tammo80.nl/losop.php?board=aagrmvndifesarte. Om een ander boggle-bord te proberen, moet je de letters in het adres aanpassen (daar heb ik nog geen mooie interface voor gemaakt, maar wie weet).
Donderdag begon in Den Haag het Surinamefestival. De opening bestond uit een groot dansspektakel met dansen uit allerlei culturen. Onder andere de Nederlandse, vertegenwoordigd door Pieremachochel. En ik was erbij.