Astronomie · PalmOS software · Roosteren · Informatica · Windows software · Natuurkunde · Wiskunde · Meteorologie · Fietsen · Diversen

Informatica

Algemeen
lesmateriaal 4H/4V
lesmateriaal 5V/5H
lesmateriaal 5H/6V
lesmateriaal: Verdie
PO: Programmeren
PO: Projecten
PO: Werkstukken
PO: CT
PO: Afgerond
tips: Algemeen
tips: Delphi
tips: Delphi (2)
tips: Logo
tips: NSBasic
tips: OpenOffice
links: Software
links: websites
cc: Voorlopig
cc: Voorlichting
cc: Lokaalgeboden
cc: Excursies
cc: Puzzels
Haiti
tips: Small Basic
PO: Programmeren2008
PO: Programmeren2009
PO: Programmeren2010
PO: Programmeren2011
Gamemaker

Programmeer-opdrachten

 

 

 

 

Aantal opdrachten dit jaar: 194

 

Driehoeksvulling

(27 december 2010)

Een programma genereert een set willekeurige driehoeken. Deze moeten in een vlak gelegd worden zó, dat elke driehoek minimaal een afstand d van elk driehoek verwijderd is. De oppervlakte van de rechthoek die net om al die driehoeken samen past, moet zo klein mogelijk zijn. Schrijf zo een programma.

 

 

File exchange

(23 december 2010)

Schrijf PHP-scripts om bestanden gemakkelijk van de ene naar de andere computer te kunnen sturen via een webserver.

Met het ene script is een bestand te versturen en met het andere weer op te halen. Zorg ervoor dat dit veilig gebeurd met een wachtwoord.

Na een bepaalde tijd moeten bestanden gewist worden.

De beheerder van de scripts moet kunnen instellen hoe lang bestanden bewaard worden en hoeveel bestanden een gebruiker kan bewaren. Geef eventueel de mogelijkheid om uitzonderingen voor bepaalde gebruikers te maken.

 

Bladerbalk

(23 december 2010)

Op de vier grote zijvlakken van een balk is een tekst geschreven. Aan elke tekst is een webadres gekoppeld.

Je kijkt loodrecht op zo een zijde. Dan gaat de balk over de lengteas draaien. Als je op een woord klikt wordt in een webbrowser het bijbehorende adres geopend.

 

Schrijf een programma dat zo een draaiende balk laat zien.

 

Klinkerloos

(23 december 2010)

Zinnen zijn korter op te slaan door de klinkers weg te laten. De vorige zin wordt dan:'znnn zn krtr p t sln dr d klnkrs wg t ltn'.

 

Schrijf een programma dat de volgende dingen kan:

- een lijst zinnen sorteren op zo laag mogelijk gemiddeld aantal klinkers per woord.

- van een klinkerloze zin mogelijke complete zinnen bepalen aan de hand van een woordenboek (bestand met Nederlandse woorden). 'Hll mnr' wordt 'Hallo meneer', maar misschien ook wel iets anders.

- aantal mogelijk complete zinnen van een klinkerloze zin bepalen (je hoeft niet op grammatica te letten)

- een lijst zinnen sorteren op aantal complete zinnen dat er bij past als je er eerst een klinkerloze zin van maakt (zin -> klinkerloze zin -> aantal passende complete zinnen).

- van een complete zin een bijna klinkerloze zin maakt door net zoveel klinkers te laten staan dat er precies 1 complete zin bij past. Het aantal klinkers moet zo laag mogelijk zijn.

 

 

 

 

 

 

Exact Copy Check

(23 december 2010)

Schrijf een programma dat van even grootte bestanden aangeeft of ze byte voor byte hetzelfde zijn of niet.

De gebruiker moet een map kunnen kiezen alle bestanden en mappen in die map worden gecontroleerd.

 

 

 

Sneeuwschittering

(20 december 2010)

In sneeuwfoto's kun je kristallen zien schitteren. Schrijf een programma dat het aantal schitterende kristallen in een deel van een afbeelding kan tellen.

Hieronder is een vierkant van 50 bij 50 cm te zien. Op de 20 december om 13:15 werd deze foto gemaakt. De zon stond 15.1 graden boven de horizon. Deze foto werd genomen op 100 cm vanaf het midden van het vierkant, op één lijn met de zon, op een hoogte van 160cm. Als je inzoomt op de foto zul je duizenden kristallen zien. De vraag is hoeveel het er zijn. Is het aantal kristallen dat als spiegelt reflecteert afhankelijk van de hoek. In dit bestand vind je een aantal foto's vinden die onder een andere hoek gemaakt zijn (op een hoogte van 10cm en hoger).

 

 

Spongo

(20 december 2010)

Hieronder zie je een spel. De vrouw is het startpunt waar twee spelers met elk twee pionnen starten. Het doel is om (na een aantal ronden) terug te komen op het startpunt. Als je daar komt neem je de pion van het bord. Als je beide pionnen van het bord hebt mogen nemen ben je gewonnen. Als je dubbel zes gooit mag je één pion meteen van het bord nemen.

Als je op de Boer komt moet je een beurt overslaan.

Als je op de Koning komt moet je aan een schijf draaien. Je kunt één van deze vier mogelijkheden draaien:

- je moet 2 stappen extra vooruit

- je moet vijf keer extra gooien (en het geworpen aantal ogen vooruit)

- je komt op het gezicht met de uitgestoken tong (je bent dan meteen verloren)

- je komt op het hekje: je mag met dat poppetje dan alleen maar vooruit als je dubbel één gooit (als je dat twee keer lukt ben je met die pion op het startpunt).

 

 

 

Kinderdictee

(16 december 2010)

In dit bestand vind je de kinderdictee's van de afgelopen jaren.

Schrijf een programma dat zo een dictee op kan lezen door de tekst woord voor woord voor te lezen. Ook de leestekens (komma, punt, aanhalingstekens openen, aanhalingsteken sluiten) opleest. Een kind moet de woorden kunnen intypen. Het programma moet het dictee automatisch achteraf nakijken door een lijst met fout gespelde woorden uit te voeren.

 

 

Kaartendeler

(16 december 2010)

Een set rechthoekige kaarten wordt op tafel gelegd. Ze liggen niet perfect recht, maar ze raken elkaar niet. Als je de kaarten aanklikt moeten ze omgedraaid worden.

Schrijf een programma dat de kaarten op tafel legt.

De crux is dus: hoe bepaal je of twee scheefliggende rechthoeken elkaar overlappen en hoe bepaal je of je binnen een scheve rechthoek klikt. Een scheve rechthoek omdraaien is ook een uitdaging.

 

 

Plankendraaiing

(15 december 2010)

De plankjes hieronder hebben de dikke punt als gemeenschappelijk draaipunt. Schrijf een programma dat zulke plankentekeningen maakt.

Het is een pre als de gebruiker de tekening kan aanpassen door per rechthoek het volgende aan te passen:

- lengte en breedte van de rechthoek

- kleur

- draaihoek

 

 

Woordenteller

(14 december 2010)

Bij een brief voor het vak Duits moeten de leerlingen steeds noteren hoeveel woorden ze gebruikt hebben. De docent wacht de oneerbare taak dit voor alle leerlingen na te tellen.

Schrijf een programma dat uit een foto (of een opname van een webcam) bepaalt hoeveel woorden een brief bevat.

Elk deel van de opname dat het programma als een woord herkent, moet door het programma met een rechthoek omlijnd worden.

Voor de eenvoud nemen we aan dat een stuk tekst waar geen spatie in staat een woord is.

 

 

 

Cirkelheuvels

(9 december 2010)

Door gekleurde cirkels in lagen over elkaar heen te leggen krijg je tekeningen zoals hieronder.

Schrijf een programma waarmee je zo'n tekeningen kunt maken.

Zorg ervoor dat je van elke cirkel achteraf de straal, de kleur en de laag (diepte in de tekening) kunt wijzigen.

Viltstift geeft een bepaalde vlekkerige textuur. Kun je er voor zorgen dat de textuur van de viltstift geïmiteerd wordt?

 

 

(klik op de foto voor een grotere versie)

 

 

 

Reservator

(7 december 2010)

De reservator is een programma waarmee je reserveringen kunt vastleggen.

Iemand reserveert iets. Het programma legt de reserveringsdatum en de periode vast.

De beheerder van het programma kan een standaardperiode opgeven (bijvoorbeeld 30 dagen). De gebruiker kan de periode verlagen tot minimaal 1 en maximaal een aantal dagen dat de beheerder opgegeven heeft (bijvoorbeeld 100). Als de periode verlopen is, vervalt de reservering (de status wordt vervallen in plaats van actief). De beheerder kan opgeven hoeveel reserveringen iemand maximaal actief kan hebben.

Een gebruiker of beheerder kan zien wat er nog te reserveren is. De beheerder kan zien wat gereserveerd is en aan wie, voor hoe lang en voor hoe lang nog.

Bovendien kan de beheerder zien welke reserveringen ooit gemaakt zijn.

 

De beheerder kan natuurlijk gebruikers toelaten en een lijst met te reserveren zaken onderhouden.

 

 

Vluchtpunt

(7 december 2010)

Bij de opdracht over de spiegeldoos zie je een tekening staan die in perspectief getekend is.

Schijf een programma dat je helpt bij het maken van dit soort tekeningen.

Verticale lijnen kunnen altijd getekend worden. Andere lijnen alleen als ze in de richting van een van de twee vluchtpunten gaan (dat zijn de twee rondjes op de horizon).

De oranje lijn is alleen mogelijk als je de perspectief-mode uitzet.

Het zou mooi zijn als het programma je helpt om lijnen aan te laten sluiten door een blokje bij het uiteinde van een lijn te tonen als je daar met de muis bent.

 

 

 

In de onderstaande tekening wordt overdreven. Maar misschien dat het je inspireert.

 

 

 

ABCDE

(6 december 2010)

Op een USB-stick staat in vijf mappen informatie. Soms komen er nieuwe bestanden in een map. Soms verdwijnen er bestanden.

 

De gebruiker wil een kopie van de mappen op de PC hebben. Hij wil echter voorkomen dat er bestanden overschreven worden. Daarom moet er elke keer dat hij de bestanden overzet een nieuwe datummap gemaakt worden. Binnen die datum map staan dan de vijf mappen ABCDE weer.

 

Om te voorkomen dat hij bestanden meer dan één keer op zijn PC heeft staan moeten in de laatste kopie de bestanden gewist worden die in een eerdere kopie al bestaan. Dat mogen alleen bestanden zijn met dezelfde naam, datum én grootte hebben.

 

 

Spiegeldoos

(6 december 2010)

Op de binnenwanden van een doos zijn foto's aangebracht. Binnen de doos staan spiegels. De spiegels hebben een dikte van 0 (als je er van opzij tegenaan kijkt zie je ze niet). Van buiten de doos kun je door een spleet naar binnen kijken. Van binnenuit gezien heeft die kijkopening een dikte van 0 (Je ziet hem niet).

Schrijf een programma waarmee je een spiegeldoos kunt maken. De afmeting van de doos en de richting en grootte van de spiegels moet in te stellen zijn.

Ook kun je de positie en de kijkrichting van het oog instellen. Welke zes foto's op de zijwanden staan kan de gebruiker zelf instellen.

Het programma moet dan laten zien wat het oog ziet.

 

Tip: Je kunt het programma als pure raytracer implementeren, maar misschien dat het vervormen van rechthoeken (alle foto's en spiegels zie je immers als rechthoek) sneller werkt.

 

Mogelijkheid: laat het oog in een vloeiende beweging om de doos bewegen.

 

 

 

3D-mijnenveger

(6 december 2010)

In de ruimte zijn 3x3x3 cellen met elkaar verbonden. Er zijn geen schuine verbindingen. In deze ruimte kun je mijnenveger spelen. Je zou natuurlijk ook een grotere ruimte kunnen maken. Schrijf dit spel.

 

 

Levensadem

(6 december 2010)

Deze opdracht is een aangepaste versie van Life.

Schrijf een versie van het programma die op zoek gaat naar levensvormen die blijven leven. Het programma moet binnen een rechthoekje een aantal cellen aanzetten. Daarna laat het de tijd lopen. Na elke stap telt het hoeveel cellen nog aan staan. Als er geen cellen aanstaan sterft deze levensvorm dus uit.

Er zijn twee manieren waarop een levensvorm kan doorleven:

1) na een bepaald aantal stappen ontstaat dezelfde levensvorm als in het begin (na een zelfde aantal stappen zal dat dan weer gebeuren, dus leeft ze oneindig door, tenzij er andere levensvormen in het spel komen).

2) het aantal stappen tot dezelfde levensvorm is zo groot dat het lijkt alsof er geen herhaling is. Er moet natuurlijk herhaling zijn. Als het speelveld c cellen groot is, zijn er 2^c levensvormen nodig, dus na maximaal 2^c stappen moet een vorm zich gaan herhalen. Bij 100 velden is dat aantal zo groot dat je er beter niet op kunt gaan wachten. Het is dan beter om na (bijvoorbeeld) 1000000 stappen te besluiten dat het waarschijnlijk is dat deze levensvorm niet uitsterft.

 

 

Geduld

(6 december 2010)

Rob wilde graag patience maken onder het motto 'gij zult geen spellen spelen die gij zelf niet geschreven hebt'. Daarom mag het. Thomas stelde meteen voor om een patience solver in te bouwen. Dat levert natuurlijk extra mogelijkheden op.

Kun je van een volgens patience uitgedeelde stapel kaarten vaststellen of deze een oplosbare situatie voor patience opleveren? Het antwoord is natuurlijk ' ja'. Maar het kan zelfs voor een computer veel denkwerk opleveren.

 

 

Ritmizeur

(5 december 2010)

De ritmizeur moet getikt op de spatiebalk of de linkermuisknop omzetten naar muzieknoten die de toonduur aangeven (dus niet de toonhoogte).

Het programma meet de tijd tussen tikken. De aanname is nu dat al die tijdsduren een veelvoud van een bepaalde tijdsduur zijn. Achtste noten zijn dan bijvoorbeeld 1x die tijd. Vierde noten 2x die tijd. Halve noten 4x die tijd, etc.

 

Het probleem is dat er kleine afwijkingen in het tikritme zitten, dat moet je programma oplossen.

 

Het programma moet het ritme in een één of andere notatie kunnen noteren. Bijvoorbeeld: 4 2 4 r 2 16 2 2

 

Als je het ook mogelijk maakt om rust in te voeren met een tweede knop levert dat meer punten op.

 

 

Graafvergelijker

(4 december 2010)

Twee grafen worden op een voor een computer begrijpelijke manier ingevoerd (punten verbonden door lijnen).

Dit programma moet nu van twee - op het oog - verschillende grafen kunnen bepalen of ze gelijk zijn of niet.

 

 

Het kan voor het ontwikkelen van je programma gemakkelijk zijn als je ook een routine schrijft die van een graaf een versie maakt die anders lijkt of anders is (in het eerste geval zijn alleen de punten verplaatst, in het tweede geval is het aantal lijnen verschillend).

 

Graafontrafelaar

(4 december 2010)

Van de lamp die je hieronder ziet is de schakeling maar moeilijk vast te stellen.

 

 

 

Schrijf een programma waarmee je een graaf kunt overtekenen van een foto of afbeelding op de achtergrond. Daarna moet je een tweede versie van de graaf kunnen maken door de punten te verschuiven (er hoeft dan niets meer op de achtergrond te staan). Het doel is: bewijs dat deze - op het oog - ingewikkelde schakeling een parallelle schakeling is (eventueel met wat extra verbindingen aan één zijde voor de stevigheid).

 

 

Tabulator

(4 december 2010)

Met CSS en HTML kun je mooie tabbladen maken. Het zou echter mooi zijn als je alleen de tekst van de tabbladen en de inhoud die bij elk tabblad getoond moet worden hoeft in te voeren.

Schrijf een programma dat kant-en-klare HTML-code maakt door de op de juiste plaatsen de ingevoerde tekst in te vullen. Een goed voorbeeld van de benodigde code kun je hier vinden.

 

 

 

PimPamPet en het rad van fortuin

(4 december 2010)

Bij het spel pimpampet moet je aan een wiel draaien dat een letter kiest. Bij een rad van fortuin draait een soort ratel langs het wiel. Werk deze wielen in een programma uit.

 

Mediagebruik

(4 december 2010)

Je wilt van een groep mensen onderzoeken wanneer ze media gebruiken.

Per periode moet de gebruiker opgeven welke media hij/zij gebruikt heeft.

 

Daarbij moet je het apparaat/mediadrager en de functie kunnen noteren:

 

computer:tv

tv:tv

tv:email

computer:e-mail

telefoon:twitter

papier:tijdschrift

computer:sms

tablet:krant

radio:radio

telefoon:radio

telefoon:msn/chat

papier:boek

 

Misschien dat je deze vormen in een tabel kunt zetten waarin de gebruiker dan cellen kan aanvinken.

Van de gebruiker moeten leeftijd en geslacht bekend zijn. Het programma moet overzichten per gebruiker (welke?) en voor een groep gebruikers kunnen maken.

 

Een standalone programma is prima als je deze opdracht wilt uitwerken, maar een mobiel programma dat met een website samenwerkt mag ook.

 

Gevangen licht

(1 december 2010)

Schrijf een programma waarmee gebruikers foto's in een database kunnen plaatsen.

Van elke foto wordt het volgende bewaard:

- naam van de gebruiker die de foto's toevoegde

- de foto zelf

- de geografisch locatie

- de kijkrichting (optioneel)

- een bijschrift (optioneel)

 

Het programma moet een lijst kunnen produceren waarop per gebruiker het aantal foto's staat dat hij/zij toevoegde. Je moet kunnen instellen binnen welke periode (startdatum en einddatum) het aantal geteld wordt.

 

De database moet als een (statische) website te exporteren zijn.

 

GeschiedenisAutomaat

(1 december 2010)

In een lange lijst staat een reeks historische gebeurtenissen opgesomd. Elk item bestaat uit 4 gegevens:

- datum

- categorie (lijst van strings gescheiden door een komma)

- een beschrijving van de gebeurtenis

- een lijst met bronnen (lijst van webadressen)

 

Naast deze lijst heeft de gebruiker de mogelijkheid om een lijst met woorden aan te maken. Bij elk woord hoort een webadres. Deze woordenlijst wordt gebruikt om van overeenkomstige woorden in de lijst automatisch een link te maken.

 

Stel dat in de woordenlijst staat:

 

  supernova http://nl.wikipedia.org/wiki/Supernova 

 

Dan wordt in de lijst met historische gebeurtenissen het woord supernova aan te vullen met een link naar http://nl.wikipedia.org/wiki/Supernova.

 

 

Schrijf een (web-)applicatie waarmee zo een lijst met bijbehorende woordenlijst te onderhouden is.

 

Mogelijkheid 1: als je de lijst kunt sorteren op datum van laatste wijziging is de een pre.

 

Mogelijkheid 2: als je kunt bijhouden wie een item wijzigde (lijst of woordenlijst) is dat ook een waardevolle aanvulling.

 

playlist

(1 december 2010)

In een map staan muziekbestanden. Soms staan die bestanden in een map binnen de hoofdmap.

Schrijf een programma waarmee je op een gemakkelijke manier playlist van die bestanden kunt maken.

De gebruiker moet een muziekbestand kunnen zoeken door een deel van de bestandsnaam in te voeren. De bestanden die met de zoekterm overeenkomen worden in een lijst gezet. De gebruiker kan één of meer bestanden uit die lijst selecteren en in de playlist zetten. De bestanden in de playlist kunnen in een andere volgorde gezet worden. Ook moet een bestand weer uit de playlist verwijderd worden.

Bij elke playlist worden behalve de naam van de muziekbestanden nog de volgende gegevens onthouden:

- naam van de playlist

- aanmaak datum

- datum laatste wijziging

- van (lijst van namen)

- voor (lijst van namen)

 

Het is een pre als je een playlist kunt kopiëren, zodat ze als basis kan dienen voor een nieuwe playlist.

 

Cirkelexplosie (2)

(21 november 2010)

Bij cirkelexplosie 1 bestond de uitstulping uit ongeveer een halve cirkel. Dat geeft een scherpe hoek. Je kunt een uitstulping ook maken met drie cirkeldelen zoals in de tekening hieronder. Dat geeft een veel vloeiendere tekening. In het voorbeeld hieronder ontstaat de uitstulping uit een rechte lijn, maar het is dus de bedoeling dat de uitstulping op een cirkelrand ontstaat.

De uitstulpingen moeten langzaam groter worden en op de uitstulpingen moeten weer nieuwe ontstaan.

 

mogelijkheid: maak het mogelijk om de uitstulpingen ook naar binnen te laten groeien.

 

 

Cirkelexplosie (1)

(21 november 2010)

Een cirkel dijt langzaam uit. Op de rand van de cirkel ontstaan willekeurig nieuwe cirkels die ook uitdijen. Ook op die cirkels ontstaan weer nieuwe cirkels Zo ontstaan figuren als hieronder. Schrijf een programma waarmee dit soort figuren te maken zijn.

 

 

Diepvriesthee

(16 november 2010)

In een cilindervormig glas zit hete thee (water). De thee zal afkoelen doordat warmte aan de omgeving afgegeven wordt. Maakt het iets uit als je een lepeltje in de thee zet? Geeft het uitstekende deel van het lepeltje alleen warmte af aan de omgeving, of geeft het ook warmte door aan het koelere water onderin het glas (het hete water drijft op het koelere water)?

Schrijf een programma dat dit model kan doorrekenen. Het lepeltje kun je modelleren als een balk of een staafje. Maak het mogelijk om de afmetingen van de lepel en het glas in te stellen.

 

mogelijkheid: Maak het mogelijk om ook het aantal lepels in te stellen.

 

 

Filemelding

(14 november 2010)

Waar staat de file en waar niet? Als mensen onderweg regelmatig hun positie en snelheid doorgeven kun je op een kaart laten zien waar files staan.

 

Schrijf een programma dat positie en snelheid doorgeeft door een PHP-script op een website op te roepen:

 

   www.voorbeeld.nl/file.php?l=51.0&b=6.0&v=21.0

 

De website maakt met een bepaald interval (bijvoorbeeld om de 30 seconde) een afbeelding aan waarop met een kleurcode te zien is wat de (gemiddelde) snelheid op een punt (klein gebied?) is.

Bij het bepalen van de snelheid mag je 'iets oudere informatie' gebruiken om voldoende gegevens te hebben. Maar heel oude gegevens vervuilen het beeld.

 

Dit is natuurlijk privacygevoelige informatie. Geef de gebruiker daarom de mogelijkheid om gebieden aan te geven waarbinnen hij geen informatie doorgeeft. Zo zijn woon- en werkplaats te maskeren.

 

Where I Was

(14 november 2010)

Schrijf een programma dat onthoudt waar je was. In de loop van de tijd ontwikkelt zich dan een kaart van je wereldreizen.

Van elke positie is datum, tijd en locatie bekend.

Het programma moet de posities als GPX-bestand kunnen exporteren.

 

Where We Where

(14 november 2010)

Maak het mogelijk dat mensen elkaars wereldreizen met elkaar delen.

Schrijf een website waar gebruikers de posities van Where I Was naar uploaden.

Uit privacy-overwegingen moet de gebruiker kunnen aangeven wie welke gegevens mag zien. Bijvoorbeeld:

 

  familie: locaties en tijdstippen

  bekende: locaties

  rest van de gebruikers: niets

 

 

 

Tekstbericht

(11 november 2010)

Schrijf een programma dat een bericht laat zien op bepaalde periodes van de week.

Bijvoorbeeld:

 

ma,di,wo,do,vr  8:00-9:00  Goedemorgen

vr 15:00-17:00 Prettig weekeinde

wo 9:00-10:00 Lees het laatste nieuws op li-do.nl

 

 

Schriftcirkelaar

(11 november 2010)

Schrijf een programma waarmee je een tekst kunt schrijven met de muis.

In feite is dit een tekening waarbij punten door lijnen verbonden worden,

Deze tekst kan dan roterend getoond worden.

De tekst moet op te slaan en op te vragen zijn.

 

 

 

Thwack

(11 november 2010)

Een aantal spaken spannen een draad op die vloeiend om de uiteinden van de spaken ligt.

De spaken bewegen zo, dat de draad uiteindelijk een rechthoek vormt. De draad vormt dus uiteindelijk geen vloeiende kromme meer, maar maakt op vier punten een rechte hoek. De draad moet dus geleidelijk van vloeiend naar hoekig overgaan.

Als je binnen de draad een vervormde afbeelding kunt laten meebewegen is dat een zeer grote pre.

 

 

MultiDivSeq

(11 november 2010)

Schrijf een programma dat opeenvolgende getallen van de vorm n!m/k+-1 zoekt die dezelfde deler hebben.

Voorbeeld: bij de reeks n!7+-1 komen regelmatig opeenvolgende getallen voor die deelbaar zijn door 7.

Bij DelphiForFun kun je routines vinden die met zeer grote getallen kunnen rekenen.

Meer hierover vind je op de wiskundepagina.

 

 

 

Constante van Brun

(11 november 2010)

Schrijf een programma dat de constante van Brun kan berekenen voor een zeer grote getallen (bijvoorbeeld tot 10^20).

Allereerst moet het programma van getallen van die grote kunnen vaststellen of het priemgetallen zijn. Bovendien moet het ook nog het omgekeerde (1/x) van zulke grote getallen tot veel getallen na de komma kunnen berekenen.

Omdat dit alles zeer veel rekenwerk vergt moet je serieus overwegen om het programma zo te maken dat het rekenwerk over verschillende computers kan verdelen (en layer weer kan verzamelen).

Bij DelphiForFun kun je routines vinden die met zeer grote getallen kunnen rekenen.

 

 

Zelfvermijdende knoop

(11 november 2010)

Schrijf een programma waarmee je een draad willekeurig door de ruimte laat vliegen. De draad mag nooit botsen met zichzelf. Het programma neemt een camerapositie vlak achter het einde van de draad, zodat je deze steeds voor je ziet vliegen.

Om je heen beweegt de kluwen die de draad al gesponnen heeft.

 

Je moet een kluwen kunnen opvragen en opslaan.

 

3D-Peanokromme

(11 november 2010)

Schrijf een programma waarmee je een 3D Paenokromme kunt laten zien.

In aanvulling op de demo kom je de figuur ook kunnen roteren.

Ook de 'diepte' moet in te stellen zijn.

 

 

VergelijkingsPrioriteit

(11 november 2010)

Schrijf een programma dat van alle bestanden op een computer bijhoudt of ze veranderen. Ook het toevoegen of verwijderen van bestanden telt mee.

Of een bestand veranderd kun je meet een soort vingerafdruk controleren: de CRC32 redundatie controle.

Het programma moet een lijst van mappen opstellen. Mappen met bestanden die vaak veranderen staan bovenaan.

Als de gebruiker op de map klikt worden de gewijzigde bestanden in die map in een tweede lijst gezet. Deze bestanden zijn te sorteren op datum of wijzigingsfrequentie.

De gebruiker moet een map onzichtbaar kunnen maken (bijvoorbeeld c:\temp omdat daar veel in gebeurd, maar dat is zelden interessant).

 

mogelijkheid: Laat de gebruiker instellen dat er een alarm afgaat als een map (inhoud of naam) of een bestand veranderd.

 

Als die controle bovendien ook nog eens voor een bepaalde periode geldt (bijvoorbeeld op woensdag tussen 11:00 en 12:00) is dat extra knap.

 

Kleurprioriteit

(11 november 2010)

Schrijf een programma dat een agenda op de onderstaande manier laat zien. De belangrijkste items staan bovenaan in rood. De agenda is te vullen door er in te klikken.

Als je op een cirkel klikt krijg je de bijbehorende tekst te zien. Er moet ook een mogelijkheid om:

- de cirkel te verschuiven binnen een dag (ander tijdstip of prioriteit)

- de cirkel te verschuiven naar een andere dag

- de cirkel te wissen

 

 

Anagramaticus

(10 november 2010)

Een zin bestaat uit woorden. De letters van die woorden kunnen in een andere volgorde ook weer woorden vormen. Soms is het zelfs mogelijk om met die nieuwe woorden weer een kloppende zin te maken.

 

Schrijf een programma dat met de letters van een ingevoerde zin zoveel mogelijk woorden maakt aan de hand van een woordenlijst (de letters mogelijk natuurlijk maar één keer gebruikt worden).

Letters die ongebruikt blijven vormen samen een laatste onzinwoord.

De oplossingen worden in een lijst gezet, de beste (=is minste letters in onzinwoord) bovenaan.

Als de gebruiker een oplossing kiest worden in een tweede lijst alle volgordes van die woorden gezet, zodat de gebruiker kan zien of er een kloppende zin bij staat. Het aantal spaties in de nieuwe zin hoeft niet hetzelfde te zijn als in de oorspronkelijke zin.

 

Op internet stond deze woordenlijst (met nogal wat fouten).

 

 

DNA-fout

(10 november 2010)

Een streng DNA bestaat uit basen. Daarvan zijn vier soorten: A,C,G,T.

Ga ervan uit dat de basen in een willekeurige volgorde kunnen voorkomen.

De lengte van de streng is n. Er zijn dan n basen.

Bij het kopiëren van de streng is er een kans k dat een base verkeerd gekopieerd wordt. De letter verandert dan in een willekeurige andere letter. Gelukkig is er ook een reparatiemechanisme. Er is een kans v dat de fout gevonden wordt en een kans r dat een fout gerepareerd wordt.

 

Schrijf een programma dat willekeurig strengen van lengte n genereert en met de ingestelde kansen bepaald hoeveel basen gemiddeld fout gekopieerd worden.

 

 

Spiekafstand

(10 november 2010)

In een klaslokaal staat r rijen van t tafels. Vaak is r=6 en t=5.

Er zijn n leerlingen die een toets maken. De docent wil ze zo min mogelijk kans tot spieken geven.

De docent denkt dat de kans op spieken afneemt als de afstand groter wordt. Hij wil daarom met een programma berekenen hoe hij de leerlingen over de tafels moet verdelen.

 

Het programma moet werken met een zelf te definiëren afstandstabel. Als je ervan uitgaat dat de bankjes vierkantjes zijn zou je de afstand als volgt kunnen nemen (Pythagoras).

 

wortel(8)

wortel(5)

2

wortel(5)

wortel(8)

wortel(5)

wortel(2)

1

wortel(2)

wortel(5)

2

1

0

1

2

wortel(5)

wortel(2)

1

wortel(2)

wortel(5)

wortel(8)

wortel(5)

2

wortel(5)

wortel(8)


 

Maar de docent zou ook deze afstandtabel kunnen nemen (inf staat voor oneindig): bij leerlingen die achter je zitten kun je nooit spieken...

 

2

2

2

2

2

2

1

1

1

2

2

1

L

1

2

inf

inf

inf

inf

inf

inf

inf

inf

inf

inf


 

Wanneer is een indeling optimaal: als de minimale afstand zo groot mogelijk is, of als de gemiddelde afstand zo groot mogelijk is?

Schrijf een programma waarmee leerlingen optimaal over het lokaal te verdelen zijn.

 

 

Rekenblad

(9 november 2010)

Dit rekenblad is een beetje anders dan Excel. In elke cel past precies één teken.

Dat kunnen getallen zijn (0 t/m 9) , rekenkundige bewerkingen (+-/x) of een teken om streepje mee in te voeren (=).

 

De opgave 12 x 34 wordt ingevoerd door de tekens 1,2,3,4 en x in de cellen te plaatsen zoals hieronder. Een = onder de 3 en de 4 zorgt dan voor een streepje over twee cellen. Het rekenblad weet dat de regel onder het streepje na een vermenigvuldiging bedoeld is om te onthouden.

 

Een deelsom wordt ingevoerd als staartdeling met / en \. In een deelsom komen liggende streepjes voor zonder bewerking (het zijn namelijk altijd minsommen).

 

In het voorbeeld hieronder hebben de cellen die bij één som horen éénzelfde achtergrondkleur gekregen. Dat kan in principe automatisch.

 

Getallen die onthouden worden zijn in een kleiner font en cursief weergegeven.

 

Bij de minsom zie je een uitzondering. Doordat er geleend wordt, staat er boven de 1 nu 11. Dit zijn de enige plaatsen waar 2 tekens in 1 cel kunnen komen te staan.

 

Waar dient dit alles nu voor? Het rekenblad moet fouten in een berekening kunnen aangeven door de betreffende cel een rode achtergrond te geven. In het voorbeeld is dat ook een keer gebeurd.

 

Je kunt je misschien voorstellen dat het handig kan zijn om een hele som in één keer naar een ander deel van het blad te kopiëren. Bouw daartoe een handige knip- en plakfunctie in.

 

mogelijkheid: Er zijn nog wat handige functies denkbaar. Zodra de gebruiker bij de keersom 1234x ingevoerd heeft, kunnen streepjes en het plusteken al automatisch gezet worden, maar het is de vraag of dat het begrip van de gebruiker stimuleert.

 

 

 

 

 

formulator

(9 november 2010)

De formulator is een website of programma dat een formule omzet naar de bijbehorende afbeelding. Als dat te ingewikkeld is mag je ook een website maken waar naast de formule een bestand met de juiste afbeelding te posten is. Bij de afbeelding moeten tags (sleutelwoorden) op te geven zijn.

Een gebruiker moet in de website kunnen zoeken op (delen van) een formule of tags.

Er moet een manier zijn om statisch naar een afbeelding te kunnen linken: bijvoorbeeld met een index: formulator.nl?f=1234

 

mogelijkheid: Geef een gebruiker de mogelijkheid om sets van formules aan te maken. Zo kan bijvoorbeeld een docent formules over een bepaald onderwerp snel terugvinden.

 

Het astronomische jaar

(9 november 2010)

Op deze Duitse website is een prachtige poster te vinden die een heel astronomisch jaar samenvat. Kies een deel van de poster uit een probeer met een programma te reproduceren.

 

 

Vetersimulator

(9 november 2010)

Als je met een losse veter loopt, zal deze op een nonchalante manier om je schoen heen bewegen met elke stap die je maakt. In deze korte video [.mov, 17MB] kun je zien hoe dat gaat.

Schrijf een programma dat de veters van een schoen op een willekeurige manier rond de schoen laat bewegen als deze loopt. Een bovenaanzicht is voldoende.

 

 

 

 

2D WIFI

(9 november 2010)

Met een moderne Android-telefoon kun je onderweg de locatie van wifi-accesspoints vastleggen.

Bij een meting wordt de locatie (geografische lengte en breedte), de naam van het accesspoint (SSID) en de signaalsterkte genoteerd.

Op een website als Wigle worden die gegevens dan verzameld.

Wigle probeert uit meerdere metingen de locatie van een accesspoint preciezer te berekenen. Wigle neemt aan dat de signaalsterkte kwadratisch afneemt met de afstand:

 

   S = P/(r*r)

 

P is de onbekende maat voor het vermogen van het punt.

r de afstand tot het punt.

 

Als dx en dy het verschil van het meetpunt tot het accesspoint zijn wordt dit:

 

   S = P/(dx*dx+dy*dy)

 

In dx en dy zit echter de positie van de meting maar ook de positie van het accesspoint.

Er zijn dus drie onbekenden:

- de geografisch lengte en breedte van het accesspoint

- het vermogen van het accesspoint

 

Met drie metingen op drie verschillende punten zou dus de locatie en het vermogen te berekenen moeten zijn.

 

Neem met een Android telefoon een bestand met meetgegevens op.

 

Schrijf een Windows programma dat de gegevens kan inlezen en hieruit de positie van de accesspoints kan berekenen.

 

mogelijkheid: het is natuurlijk de vraag of de regel van Wigle wel klopt in een bebouwde omgeving. Onderzoek of een benadering met een ingewikkeldere formule betere resultaten levert. Omdat de waarde van a,b,c,d en e ook bepaald moet worden zijn er nu 8 onbekenden. Er zijn dus ook acht metingen nodig.

 

   S = P/(a+b*r+c*r^2+d*r^3+e*r^4)

 

mogelijkheid 2: Als er meer dan 8 metingen beschikbaar zijn kun je uit de verzameling op meerdere manieren 8 metingen kiezen. Die zullen verschillende locaties opleveren. Het gemiddelde daarvan is wellicht een nog betere benadering van de positie.

De positie die de gps berekent is namelijk ook onnauwkeurig.

 

 

 

Onderuit

(9 november 2010)

Bij het spel onderuit zien twee speler elk één kant van een set wielen. Door middel van uitsparingen in de wielen moeten schijfje naar de verzamelbak onderin gedraaid worden.

Maak een programma waarmee één speler schijfjes via de wielen omlaag kan draaien.

 

mogelijkheid 1: maak er een echt spel van dat telt hoeveel zetten je nodig hebt.

 

mogelijkheid 2: maak het spel voor twee spelers.

 

 

Familiekalender

(7 november 2010)

Schrijf een programma waarmee je een gebruiker een familiekalender kunt laten maken.

Een zeer eenvoudige versie hiervan kun je op deze website vinden.

De gebruiker moet een aantal namen en een periode kunnen invoeren.

Per maand moet een foto op te geven zijn.

Als het programma aanbiedt om standaardfeestdagen in de kalender in te voegen is dat een pre.

Als je ook nog eigen data kunt invoeren (verjaardagen bijvoorbeeld) is dat helemaal super.

Het ontwerp moet als een serie HTML-pagina's bewaard worden (die je daarna kunt afdrukken).

 

Cijferschuiver

(7 november 2010)

Schrijf een programma voor de volgende puzzel.

Geef de gebruiker 5 getallen en een rekenkundige bewerking (+-x:).

De getallen verschijnen als kaartjes die met de muis (of een vinger) te verschuiven zijn.

Een getal is in een is-teken te veranderen door er op te klikken.

De gebruiker moet de getallen en de bewerking is de juiste volgorde zetten én één getal in een is-teken veranderen, zodat de berekening klopt.

 

Bijvoorbeeld: 12359+ kan worden: 3+9=12 (5 werd =).

 

De volgorde is te bepalen door naar de x-coördinaat van de kaartjes te kijken.

Je kunt natuurlijk met minder getalen eenvoudige mode maken.

Het is nog moeilijker als je met 1 set getallen méér dan één kloppende combinatie kunt maken, waarvan de gebruiker dan de juiste moet invoeren.

HINT: Je kunt daarbij slim gebruik maken van het kaartje dat in een is-teken moet veranderen

 

Erg leuk is de controle op eenvoudige verwisselingen als: 3+9=12 wordt 9+3=12.

Dat geeft de gebruiker het gevoel dat het programma intelligent is!

 

 

Watermodel

(7 november 2010)

Water wordt in het spelletje Animal Crossing op een mooie manier gemodelleerd. Op een lichtblauwe achtergrond bewegen donker blauwe cirkels en ellipsen. Bij het strand verschijnt bovendien een soort branding op het water. Hier staat een filmpje.

Op youtube staan ook voorbeelden.

Schrijf een programma waarin je water op een soortgelijke manier modelleert.

 

 

Update: 15 augustus 2012

 

Bij het spel Crazy Hedge (bijvoorbeeld op de iPod) is een mooie simulatie van water te zien.

 

 

Sterrenteller

(7 november 2010)

Schrijf een programma voor een mobiel apparaat waarmee je iemand kunt laten bepalen hoe helder het is. Op de website van nachtvoordenacht staan mooie afbeeldingen van het sterrenbeeld Cassiopeia die je daarvoor kunt gebruiken. De afbeeldingen kun je ook in dit bestand vinden.

Geef het programma een nachtmode. De sterren worden dan als rode puntjes op een zwarte achtergrond weergegeven.

Bewaar de locatie, de datum, het tijdstip en de gemeten waarde in een bestand of database.

 

 

mogelijkheid: maak het mogelijk om de waarden van meerdere gebruiker op een website te bewaren.

 

Laat de gebruiker zichtbare sterren op het kaartje aanklikken voor een nog nauwkeuriger resultaat.

 

 

Striptekenaar

(6 november 2010)

Schrijf een programma waarmee een stripverhaal digitaal op te maken is.

Allereerst moet een collectie tekeningetjes te bewaren zijn. Die moeten op een rechthoekig vlak te leggen zijn.

De tekeningetjes zijn op een eenvoudig manier te bewerken door met een potlood te tekenen. en met een gum te gummen.

 

mogelijkheid: maak het mogelijk om een bibliotheek van bijvoorbeeld poppetjes , autootjes en achtergronden aan te leggen. Een nieuwe tekening uit het verhaal is dan te maken door een bestaand element uit de bibliotheek te gebruiken.

 

Reflector

(2 november 2010)

Schrijf een programma waarmee je ergens onder een afbeelding een weerspiegeling van (een deel van) de afbeelding plaatst. De weerspiegeling moet naar beneden toe steeds lichter worden. De hoogte van de weerspiegeling en de mate waarin de weerspiegeling lichter wordt moet vrij in te stellen zijn.

 

 

 

EHBO

(2 november 2010)

Schrijf een programma voor een mobiel apparaat waarmee je onderweg EHBO-tips kun opzoeken. De gegevens moeten zonder internet te gebruiken zijn.

 

Cooper-test

(30 oktober 2010)

Schrijf een programma waarmee je een Cooper-test kunt opnemen.

Het programma moet de route opnemen die je gelopen hebt. De afstand na 12 minuten komt in een tabel te staan.

De laatste tests moeten terug te kijken zijn.

 

mogelijkheid: maak het mogelijk een snelheids-tijd-grafiek van de run te laten zien

mogelijkheid: maak het mogelijk om de route op een kaart te bekijken

 

 

Shuttle-run-test

(30 oktober 2010)

Schrijf een programma dat op de juiste manier piepjes laat horen om een Shuttle-run-test af te nemen.

 

Zorg er voor dat de gebruiker een groepen mensen (een klas, een team, ...) kan aanmaken en deze kan aanklikken, zodat ze afvallen.

 

mogelijkheid: zorg dat het programma de score omrekent naar een cijfer.

 

 

Kleinste cirkel

(28 oktober 2010)

Rond een verzameling punten is altijd een cirkel te teken. Maar er is ook een kleinste cirkel. Er bestaat een algoritme waarmee de snelste cirkel snel te berekenen is.

Schrijf routine met een testprogramma dat de coördinaten van het middelpunt en de straal van die cirkel berekend.

 

Zie ook: 

http://www.personal.kent.edu/~rmuhamma/Compgeometry/MyCG/CG-Applets/Center/centercli.htm

 

 

Gravidoolhof

(27 oktober 2010)

Op moderne telefoons kun je de stand van het apparaat gebruiken om een spel te sturen. Maak een eenvoudig doolhof waarbij je de bal moet sturen door de telefoon te laten overhellen.

 

 

 

Viltschilderij

(27 oktober 2010)

Je kent vast de schilderijen wel die je maakte met vilt, stickers (of iets anders dat plakt) toen je jonger was.

Schrijf een programma waarmee je allerlei cirkels, vierkant, driehoeken, halve cirkels en bladvormen in vrolijke kleuren op een blad kunt leggen om artistieke creaties te maken.

 

 

Lichtbreker

(27 oktober 2010)

Schrijf een programma waarmee je lichtstralen kunt laten invallen op doorzichtig blokjes.

De volgende blokjes moeten te gebruiken zijn:

 

- rechthoek

- cirkelsegment (dus ook een halve cirkel)

- lenzen

 

 

De brekingsindex van elk blokje moet willekeurig in te stellen zijn.

Maak het programma zo interactief mogelijk: het programma moet de weg die een lichtstraal aflegt berekenen en live intekenen. Maak het eventueel mogelijk om een blokje te verplaatsen of roteren en meteen gewijzigde lichtstraal te laten zien.

 

 

The resistance

(27 oktober 2010)

Schrijf een programma waarmee je een willekeurige schakeling met elektrische weerstanden kunt maken. Van Elke weerstand moet de waarde op een willekeurig geheel getal in te stellen zijn. Het programma moet de totale weerstand van de schakeling uitrekenen.

(In de afbeelding hieronder worden weerstanden met een zaagtandvorm weergeven. Dat is in Angelsaksische landen gebruikelijk. In Nederland tekenen we een rechthoek).

 

 

mogelijkheid: Laat je programma ook de elektrische stroom op elk punt van de schakeling kan berekenen. Zie Wikipedia voor de wetten van Kirchhoff.

 

   http://nl.wikipedia.org/wiki/Wetten_van_Kirchhoff

 

 

Domino-effect

(26 oktober 2010)

Maak een programma waarmee je dominostenen kun opstellen. Je moet de plek en de richting van elke steen kunnen wijzigen (ook achteraf). Een opstelling moet te bewaren en op te vragen zijn.

Als je klaar bent kun je de eerste steen om laten vallen waarna een animatie loopt.

 

Het is voldoende als je de stenen van bovenaf kunt bekijken. Het hoeft dus niet zo mooi als in de afbeelding.

 

 

 

Do the shuffle

(26 oktober 2010)

Op de website neurocampus.nl kun je veel leuke puzzels vinden.

Deze opdracht gaat over het onderdeel Shuffle. Schrijf een programma dat een willekeurige Shuffle-opgave genereert voor een in te stellen niveau.

 

 

Het programma moet dus 3 afbeeldingen en vier mogelijke opties voor de volgende afbeelding genereren.

De opgave is moeilijker als de alternatieven net niet correct zijn.

 

De gegenereerde opgave moet zijn te exporteren als HTML-pagina, zodat je ze kunt afdrukken of op internet kunt zetten.

 

Bovendien moet de opgave in het programma te spelen zijn.

 

Bij de opgaven van neurocampus kunnen de balletjes bij de volgende stappen niet in één vakje terecht.

maak in jouw programma een optie waarmee je dat wel mogelijk maakt.

Er zijn verschillende manieren denkbaar waarop je kunt laten zien dat er meer dan één balletje in een vakje ligt.

 

Als je in het programma de volgende stap gekozen hebt kan het programma met een animatie laten zien welk antwoord correct was.

 

mogelijkheid: maak de opgaven moeilijker dan op neurocampus. Dat kan eenvoudig door een groter rooster met meer balletjes te nemen.

 

 

Kalenderwijsheid

(26 oktober 2010)

In de afbeelding hieronder zie je een voorbeeld van een opgave waarmee leerlingen met de kalender kunnen oefenen.

 

 

Schrijf een programma dat willekeurige versies van deze opgave genereert.

Bij alle mogelijk zaken die te variëren zijn moet het programma keuzes maken.

Bij de datum zou het programma een willekeurige maand in het actuele jaar kunnen kiezen.

Voor een naam wordt bijvoorbeeld een willekeurige naam uit een tekstbestand naam.txt gekozen.

In plaats van het zwembad wordt ook een activiteit uit een tekstbestand gekozen.

 

De willekeurige opgave moet op twee manieren te gebruiken zijn:

 

1) door de opgave als HTML-bestand te exporteren kan deze ook gemakkelijk afgedrukt of op internet gezet worden.

2) Live in het programma, waarbij het programma de antwoorden controleert als de leerling op een Controleer-knop drukt.

 

 

Foto-omslag

(26 oktober 2010)

Het omslaan van een afbeelding komt vaak voor in programma´s.

Bij de versie van patience in Window 7 worden de kaarten om een mooie manier omgeslagen.

Het doel van deze opdracht is dat een routines schrijft die het omslaan van een afbeelding kunnen animeren.

 

Als voorbeeld bekijken de afbeelding hieronder.

 

 

 

De linkerbovenhoek beweegt naar het midden en komt dan iets hoger te liggen (perspectief).

De hoek rechtsboven beweegt ook naar het midden en komt dan iets lager te liggen.

Met de dikke zwarte lijn is hieronder aangegeven hoe de hoeken bewegen.

 

Als de afbeelding rechtop staat wordt daarna de achterkant van de afbeelding getoond.

Het punt beweegt verder over de dunne lijn.

 

 

 

  

 

mogelijkheid 1: Maak ook een routine die maar één helft van de pagina omslaat, zoals bij het bladeren in een boek.

 

mogelijkheid 2: Hierboven wordt gesuggereerd dat de punt van bladzijde over twee lijnstukken beweegt. Maak ook versies waarbij een hoekpunt over een parabool of een deel van een cirkel beweegt.

 

 

 

Memory

(26 oktober 2010)

Maak met behulp van de routines van Foto-omslag een versie van memory die de kaartjes op een mooie manier omdraait.

 

 

 

 

 

Fotomozaïek

(26 oktober 2010)

Er zijn programma's die op een één op andere manier een mozaïek maken.

Deze opdracht gaat over het soort dat je in de foto hieronder ziet (download de foto om de veelhoeken beter te kunnen bekijken).

 

 

 

Allereerst wordt het gebied van de foto in aaneengesloten veelhoeken verdeeld.

Daarna wordt een beperkte verzameling kleuren bepaald. Binnen elke veelhoek wordt een gemiddelde kleur berekend. Uit de verzameling kleuren worden de kleur gekozen die het dichtst bij dat gemiddelde zit. Met die kleur wordt de veelhoek gevuld.

 

Schrijf een programma dat dit soort mozaïeken kan maken uit een afbeelding die de gebruiker zelf kiest.

 

 

Eliza was hier

(26 oktober 2010)

Dat Eliza hier was, is nogal duidelijk in allerlei reclame-uitingen.

Rond de tekst staan zogenaamde iso-afstandslijnen, lijnen die een gelijke afstand hebben. In dit geval een gelijke afstand tot de buitenrand van de letters.

 

 

Schrijf een programma waarmee je dit soort afbeeldingen kunt maken rond een zelf te kiezen afbeeldingen (die afbeelding kan een tekst voorstellen).

Een aantal parameters moeten in te stellen zijn:

 

- worden de lijnen getekend rond punten met een bepaalde kleur (in dit geval roze), of juist rond punten die niet een bepaalde kleur hebben (bijvoorbeeld ongelijk aan wit)

- op welke afstanden worden een isoafstandslijn getekend?

- kleur van de lijn

- vulkleur tussen twee lijnen

- aantal openingen in de lijn

 

 

 

Thue-Morse (palin)dromen

(25 oktober 2010)

De Thue-Morse rij is eigenlijk heel erg eenvoudig:

 

stap 1: begin met 0

stap 2: plaats de bitsgewijze inverse van de rij tot nu toe achter de rij (met de bitsgewijze inverse wordt bedoeld dat nullen één worden en énen nul. Dus het omgekeerde van 101 is 010).

stap 3: ga naar stap 2

 

Je kunt waarden van de rij zien als binaire getallen. De rij begint als volgt:

 

0, 01, 0110, 01101001, 0110100110010110, ...

 

Het derde en vijfde getal in de rij zijn een palindroom.

Er is een eenvoudige regel die zegt wanneer een getal in de rij palindroom is.

 

Andere vragen zijn veel moeilijker te beantwoorden.

 

Bijvoorbeeld deze:

 

- reken de bitrij om naar een digitaal getal p

- controleer op 2^(p-1) mod p gelijk is aan 1

 

Of deze:

 

Zoek het grootste palindroom binnen een getal in de Thue-Morse rij. Bijvoorbeeld:

 

- Het grootste palindroom in 01101001 is 0110 of 1001.

- Genereer op zo een rij met de bitlengte van de langste palindromen

 

Of:

 

Zoek het langste bitrij uit die omgerekend naar een digitaal getal p, dat voldoet aan 2^(p-1) mod = 1.

 

 

 

Ontwijkgedrag

(25 oktober 2010)

Over een rechte weg lopen (of rijden) punten elkaar tegemoet.

Om elkaar te kunnen passeren is aan beide zijden van de lijn is een berm aanwezig.

Een punt van andere punten in de buurt (wat is in de buurt precies?) de laatste p posities (x- en y-coördinaat) onthouden. De tijd tussen elke positie is t seconde (bijvoorbeeld 0,1 seconde).

Aan de hand van die posities bepaald elk punt of en hoe het moet uitwijken.

 

Bepaal een aantal parameters die vastleggen hoe een punt reageert. Bijvoorbeeld:

- afstand tot het andere punt

- snelheid van het andere punt

- snelheid waarmee het andere punt naar de berm uitwijkt.

 

Zorg ervoor dat er een bepaalde mate van willekeur in de reactie zit om te voorkomen dat twee punten elkaars gedrag precies spiegelen.

 

Hierboven werd al terloops het verschil tussen lopen en rijden genoemd.

Lopend kan de beweging meteen van richting veranderen. Rijdend moet de beweging een vloeiende kromme volgen. Kun je dit verschil modelleren?

 

Cirkelvulling

(25 oktober 2010)

Deze opdracht lijkt op vier cirkels (12 april 2010).

Vul een rechthoekig vlak met cirkels van verschillende grootte. Elke cirkel moet aan minimaal twee andere cirkels raken. Cirkels mogen elkaar niet overlappen.

Hint: Vul het vlak eerst met grote cirkels.

 

Bestandruimte

(25 oktober 2010)

Schrijf een routine die berekent of een set bestanden die naar een bepaalde datadrager (HD, USB-Stick) wordt gekopieerd past.

 

Van de te kopiëren bestanden is de drive, de map, de bestandsnaam en de doelmap bekend, bijvoorbeeld:

 

- D:\fotos\dsc2010.jpg + F:\fotos

- D:\documenten\brief.doc + G:\kopie

 

Het kan zijn dat er van het betreffende bestand al een exemplaar in de doelmap staat, die wordt dan overschreven.

 

Op elke datadrager wordt de data in zogenaamde sectoren (zie deze of deze pagina) weggeschreven. Daardoor kan een bestand op een datadrager méér ruimte innemen dan de werkelijke grootte. Als de sector grootte 512 Bytes is, kun je de werkelijke grootte vinden door af te ronden naar een veelvoud van 512 Bytes. Voorbeeld: Als de werkelijke grootte 4000 Bytes is, zijn 4096 Bytes nodig. Voor 1024 Bytes zijn exact 1024 bytes nodig.

 

Of een set bestanden past  op de datadrager is te bepalen door door elke datadrager die als bestemming gebruikt wordt, het volgende te berekenen:

 

- totaal aantal vrije sectoren: V

- totaal aantal sectoren dat door eerdere kopieën gebruikt wordt: O

- totaal aantal sectoren dat door de te kopiëren bestanden gebruikt zal gaan worden: N

 

Als V + N - O > 0 zullen de bestanden passen.

 

 

Woordhusselaar

(15 oktober 2010)

Als je de letters van een woord in een willekeurige volgorde zet, is dat meteen een leuke puzzel. Je kunt iemand laten raden wat het oorspronkelijke woord was.

Al op jonge leeftijd worden kinderen met deze puzzel beziggehouden. In de lesmethode taalslagwerk kwam ik de volgende gehusselde woorden tegen:

 

rsto, sal, chilt, ltevch, weet, nijba, techpa, chatlk, dinvelr, giepels, raanied, oernie, kiemste, natnew, ekooni, aainekr

 

Het is snel duidelijk dat niet iedereen even goed is in het vinden van het oorspronkelijke woord. Ook zijn er duidelijke moeilijke en gemakkelijke woorden.

Meer letters maken het moeilijk, maar ook meer klinkers kunnen daar voor zorgen.

 

Schrijf een programma waarmee je een gebruiker een gehusseld woord voor kunt leggen.

 

In een bestand staat een collectie met woorden waaruit het programma kan kiezen.

Achter elk woord staat een getal wat de minimumleeftijd van de gebruiker aangeeft:

 

sla 7

aaien 9

hydrograaf 14

vlindercollectie 3

 

De computer kiest een woord dat bij de leeftijd van de gebruiker past.

 

De gebruiker moet dan het oorspronkelijke woord vinden.

Schrijf van een sessie de volgende gegevens in een bestand:

 

naam

geboortedatum

geslacht

 

en daarna per beurt:

 

oorspronkelijk-woord   gehusseld-woord  onthusseld-woord starttijd eindtijd

 

Het onthusselde woord kan natuurlijk onjuist ingevoerd zijn.

De starttijd is het tijdstip waarop de puzzel getoond werd.

De eindtijd is het tijdstip waarop de gebruiker op enter drukte om de oplossing in te voeren.

 

Gebruik een systematisch manier om het bestand van de sessie een naam te geven, bijvoorbeeld: 201010151215-1234.ses

Dit is dan de sessie die op 15 oktober 2010 om 12:15 met testpersoon 1234 opgenomen werd.

 

Tijdens een sessie toont het programma een score met het aantal juiste antwoorden.

 

Husselanalyse

(15 oktober 2010)

Met dit programma moeten sessies van de woordhusselaar in te lezen zijn.

De gebruiker kiest een map. Alle sessies in die map worden door het programma gebruikt.

Het programma geeft dan van een bepaald woord aan hoe goed de gebruikers het woord konden onthusselen.

 

Om te beginnen moet het programma een lijst genereren van alle woorden en het aantal husselvarianten dat in de sessies voorkomen:

 

woord aantalhusselsvarianten totaalhusselvarianten

sla     2                              5

regen 12                            119

 

De gebruiker kan dan een woord kiezen waar hij meer over wil weten.

(noot: het totaal aantal husselvarianten van en woord is: aantal-letters faculteit min één, dus woordlengte!-1)

 

 

Laten we ervan uitgaan dat er al veel husselvarianten van het woord 'sla' in de sessies voorkomen.

 

Stel dat de gebruiker meer wil weten over het woord 'sla'.

Van elke beurt is dan de volgende informatie bekend:

 

- leeftijd

- geslacht

- gebruikte tijd

- of het antwoord correct was of niet

 

De gebruiker moet nu een selectie uit deze gegevens kunnen maken, bijvoorbeeld:

- alle leeftijden

- alle geslachten

- alle husselvarianten

- antwoord moet correct zijn

 

Van deze selectie is dan een grafiek te maken waarin informatie over de gebruikte tijd staat, bijvoorbeeld:

 

- staafdiagram met een verdeling over klassen

- minimale, gemiddelde en maximaal benodigde tijd

 

 

Het programma moet tegelijkertijd (minimaal) twee van zulke selecties kunnen tonen, zodat je twee woorden met elkaar kunt vergelijken,

 

Husselleeftijd

(15 oktober 2010)

Voor dit programma zijn sessie's uit het programma woordhusselaar nodig.

Het vermoeden is dat met name de complexiteit van het woord en de leeftijd van de testkandidaat belangrijke factoren zijn die bepalen of een gehusseld woord snel onthusseld kan worden.

 

Het programma moet de gemiddelde tijd per variant/per leeftijd in een tabel kunnen zetten.

 

 

sla

14 jaar

15 jaar

als

0:15

0:12

las

0:21

0:20


 

 

Eén van de problemen is natuurlijk dat er van één woord moeilijke en gemakkelijke husselvarianten bestaan.

 

Als het woord 'tafel' is, zal 'tafle' sneller onthusseld worden dan 'aeflt'.

 

Bedenk een manier waarop een programma de tijd kan 'wegen' op grond van de moeilijkheid. De gemiddelde tijd die uit die berekening komt is een maat voor de moeilijkheid. Deze tijd noemen we de onthusseltijd

 

mogelijkheid: een mogelijke manier is de Levenshtein-afstand tussen het oorspronkelijke en het gehusselde woord.

 

Jouw algoritme kan voor elke leeftijd de onthusseltijd berekenen en in een tabel zetten:

 

 

 

14 jaar

15 jaar

sla

0:17

0:15

kanarie

0:23

0:21

rookworst

0:43

0:44


 

 

 

 

 

 

Temperatuursverwachting

(12 oktober 2010)

Schrijf een programma voor een mobiel apparaat waarmee je door de verwachte temperatuur kunt bladeren.

De temperatuur moet als grafiek weergegeven worden. Je kunt die gegevens op deze pagina vinden.

Als je de verwachte temperatuur van de komende dagen in de grafiek erbij kunt plotten levert dat meer punten op. Je kunt de verwachte temperatuur extraheren uit deze pagina.

 

 

Kubusvouwer

(8 oktober 2010)

Op internet kun je mooie applets (klik op het tabblad Unfold en vink enabled Unfold aan) vinden waarmee je een kubus (of een ander model) open en dicht kunt vouwen. Schrijf zelf zo'n programma waarmee je een uitslag van een kubus in elkaar kunt vouwen.

 

 

 

Menumaker

(5 oktober 2010)

Schrijf een programma dat je kunt gebruiken waarmee een gebruiker een menu kan samenstellen uit twee lijsten.

 

De lijst met hoofdmenu items is bijvoorbeeld:

- bestand

- invoegen

- help

 

De lijst met menu-items is bijvoorbeeld:

- nieuw

- opslaan

- opslaan als ...

- sluiten

- afsluiten

- afbeelding

- link

- kopje

- help

- over...

 

De gebruiker moet die twee lijsten kunnen inlezen uit een tekstbestandje.

 

De gebruiker moet dan:

- de items van het hoofdmenu van volgorde verwisselen

- de menu-items aan een hoofdmenu-items toewijzen

- de volgorde binnen hoofdmenu veranderen

 

De positie van de hoofdmenuitems kan met één getal beschreven worden.

Bijvoorbeeld: Bestand 2, Help 1, Invoegen 3 (Dit zullen de meeste mensen geen voor de handliggende volgorde vinden).

 

De positie binnen het menu van elk item kan dan met twee getallen beschreven worden.

Het eerste getal staat voor het hoofdmenu waarbinnen het geplaatst is. Het tweede getal voor de positie binnen dat menu.

Bijvoorbeeld: nieuw 2,3 (derde item binnen tweede hoofdmenuitem=Help)

 

De gekozen menustructuur moet te bewaren en later weer op te vragen zijn.

 

Menuvoorkeur

(5 oktober 2010)

Dit programma moet menustructuren die je met menumaker gemaakt hebt in kunnen lezen. Het doel is om na te gaan op welke positie gebruikers een menu item meestal neerzetten. Dat kan door de gemiddelde positie te berekenen van verschillende door meer gebruikers gemaakte structuren.

Dit programma heeft alleen zin als iemand de menumaker maakt. Je mag ook beide programma's combineren.

 

 

 

 

 

Zebracirkel

(2 oktober 2010)

Schrijf routines waarmee je gestreepte cirkels kunt laten teken. Er zijn 3 varianten:

 

variant 1:

De volgende eigenschappen moeten vrij in te stellen zijn:

- of de cirkelomtrek getekend moet worden (zo niet, dan valt de zwarte cirkel in de tekening hiernaast dus weg)

- met welke twee kleuren de strepen getekend moeten worden

- welke twee diktes de twee streepkleuren moet hebben.

- onder welke hoek de gestreepte cirkel gedraaid moet worden

- de straal van de cirkel

- worden de uiteinden van de balken afgerond, zodat ze precies binnen de cirkel vallen (zo niet, wat gebeurd er dan?)

 

variant 2:

Je kunt het strepenpatroon compleet vastleggen door van alle opeenvolgende strepen de kleur en de dikte vast te leggen. De kleur en de dikte van elke lijn is dus vrij te kiezen

 

variant 3:

Je kunt de strepen ook zien als een paar balken die na elkaar over een cirkel getekend worden.

In dat geval moet van elke streek vastleggen hoe die getekend moet worden. Dat kan bijvoorbeeld door per streek het volgende vast te leggen:

- coördinaten begin- en eindpunt

- kleur en dikte

 

De strepen hoeven in dit geval dus niet meer parallel te lopen.

 

Priemrijtjes

(30 september 2010)

Op de wiskundepagina vind je een programma waarmee priemrijtje te maken zijn.

Dat programma heeft nogal wat tekortkomingen (o.a. voor grote waarden van n is het traag).

Pas het programma aan (of schrijf het opnieuw), zodat het sneller werkt en gemakkelijker gebruikt kan worden om priemrijtjes te onderzoeken.

- bestaat er een priemrijtje(1,n) voor elke n>5?

- wat is het kortste priemrijtje(b,n) voor vaste n

- hoeveel verschillende priemgetallen zitten er in een rijtje(a,b)

- zoek priemrijtjes met zo weinig of juist zoveel mogelijk verschillende priemgetallen

- zijn er priemrijtjes(1,n) met n-1 verschillende priemgetallen?

 

N.B. 9 april 2010: Ed heeft zich uitgebreid met dit programma bezig gehouden. Het versnellen voor grote waarden van n blijft een probleem. Er is wellicht nog een eenvoudige manier die helpt: zet de getallen in een willekeurige volgorde om te zien om er nu wel snel een oplossing te vinden is. Eventueel kun je dat herhalen als na een bepaalde tijd nog geen oplossing gevonden is.

 

AdvertentieRuimte

(13 september 2010)

Hieronder zie je een grapje in de krant. Een advertentie drukt woorden van de artikelen ernaast weg. Maak een programma waarmee je dit effect kunt maken.

In tekstvakken moet een vrij te kiezen tekst te plaatsen zijn. Eén van de tekstvakken wordt als 'advertentie' gebruikt. Als de advertentie een ander tekstvak overlapt, worden woorden weggedrukt.

Het resultaat moet als bitmap te bewaren zijn. Het kernprobleem is hoe je ontdekt dat een letter tegen een woord botst. Het woord moet dan op een bepaald manier weggedrukt worden.

 

 

 

Fixaties -php -JavaScript

(5 september 2010)

De onderstaande afbeelding komt uit dit artikel. De essentie is dat een gebruiker een formulier sneller invult als de labels boven het invoerveld staan.

Schrijf een programma waarmee je een aantal invoervelden in 1 tot 3 kolommen kunt plaatsen met het label ernaast of erboven.

Gebruik logische invoer zoals naam, woonplaats, adres, postcode, telefoonnummer etc.

 

Het programma moet de tijd kunnen meten die een gebruiker nodig heeft om een formulier in te kunnen vullen.

Als je deze opdracht als webapplicatie kunt schrijven is dat een pre.

 

 

Het pogramma moet de resultaten van verschillende tests in een tekstbestanden kunnen opslaan. Dat tekstbestanden kan dan later eventueel in een spreadsheet bewerkt worden.

 

mogelijkheid 1:

Er zijn nog andere manier van invoer denkbaar:

 

- zet de velden willekeurig op het venster (dat zal waarschijnlijk een slechte methode zijn).

- laat steeds slechts 1 invoerveld zien, en toon het volgende pas als het vorige ingevuld is.

- laat een kolom met invoervelden omhoogscrollen, zodat het in te vullen veld steeds op dezelfde hoogte staat.

- zet de velden in een cirkel

 

mogelijkheid 2:

maak het mogelijk om de correctietijd te kunnen meten.

- eerst wordt alle invoer correct ingevuld.

- dan wordt in 1 veld 1 teken veranderd (of weggehaald)

- er wordt een rode rechthoek rond het invoerveld getoond

- de gebruiker moet de invoer zo snel mogelijk corrigeren

 

mogelijkheid 3:

Bij het meten van de invoertijd kun je zeer uitgebreid te werk gaan. Het meeste nauwkeurige is om alle invoer (elke click en elke toetsaanslag) vast te leggen. je moet dan natuurlijk ook een manier hebben om de resultaten te analyseren.

 

 

Kwetterlijst

(5 september 2010)

Schrijf een programma waarmee je een aantal zelf te kiezen Twitterberichten achter elkaar kunt zetten. Deze berichten moeten als HTML-code te exporteren zijn, zodat je ze in een website kunt opnemen.

Op Twitter kun je zien hoe je één bericht kunt laten zien. Er moeten dus verschillende berichten onder elkaar staan. Een achtergrond zoals in het voorbeeld is niet nodig. Wel zou het mooi zijn als de kleur, het lettertype en de lettergrootte van de tekst en de kleur van het tekstvak kunt bepalen.

 

Kompas

(5 september 2010)

Schrijf een Android-programma dat een werkend kompas op het scherm laat zien.

 

mogelijkheid: laat je programma ook nog de windrichting waarin je je beweegt uitspreken.

 

 

Coin Dozer

(5 september 2010)

Je kent vast de muntenbulldozer van de kermis wel. Schrijf een programma dat de Coin Dozer op het scherm emuleert.

 

Deze opdracht is heel veel niveaus interessant:

- hoe laat je de munt door de hindernissen vallen?

- wat gebeurt er precies als een munt tegen de muur van eerdere munten aanduwt?

- hoe teken je dit op het scherm, zodat het driedimensionaal lijkt.

- hoe laat je de zwaartekracht op de overhangende stapel muntjes werken.

 

 

 

Matroesjka-tekst

(17 augustus 2010)

In de afbeelding hieronder zie je letters (en cijfers) in elkaar als Matroesjka-poppetjes.

Van een letter wordt alleen de omtrek genomen. Eventuele openingen in het binnendeel worden gevuld en soms overschreven door kleinere tekens.

 

 

 

Schrijf een programma waarmee je een tekst als matroesjka-tekst kunt laten zien. De afbeelding moet te bewaren zijn. De grootte van de afbeelding in pixels en de achtergrondkleur moet in te stellen zijn.

 

Maak het mogelijk om voor elk teken de kleur, het lettertype en de grootte te bepalen.

Je kunt de invoer versnellen door de waarden van de eerste twee tekens te gebruiken:

 

- A wit 20 Arial

- B zwart 15 Times New Roman

 

geeft voor de volgende regels:

 

- C wit 10 Arial

- D zwart 5 Times New Roman

 

mogelijkheid: Laat een lange tekst als animatie zien. De letters worden daarbij steeds groter (en zijn uiteindelijk nog maar deels te zien). In het binnendeel duiden steeds de volgende letter van de tekst op.

 

bewaar de opeenvolgende beelden als gif-bestand, zodat er met een extern programma een GIF-animatie van te maken is.

 

 

Diepte-letters

(17 augustus 2010)

Schrijf een programma dat letters met diepte maakt, zoals in de afbeelding hieronder. Als je een tekst invoert moeten de letter van de tekst onafhankelijk van elkaar te positioneren zijn (zowel de plaats als de richting in 3D).

 

golfletters II

(17 augustus 2010)

Schrijf een programma waarmee je een tekst uit een golfpatroon stanst. De letter moeten in het platte vlak onafhankelijke van elkaar te verplaatsen en te draaien zijn. Daarmee krijg je iets wat lijkt op de onderstaande afbeelding, maar dan zonder de diepte.

 

 

golfletters I

(17 augustus 2010)

Schrijf een programma dat een letter met een golfpatroon laat zien zoals in de onderstaande afbeelding.

De diepte en de achtergrond hoeft je programma niet te maken.

 

 

 

 

 

 

 

Fotolabel

(31 juli 2010)

In de onderstaande afbeelding is een originele manier te zien om een deel van een foto te labelen. Hier is dat een onderdeel van een apparaat, maar het zou ook een gezicht van een persoon kunnen zijn.

Schrijf een programma waarmee je zulke labels op een foto kan aanbrengen.

De oriëntatie (richting) van het label moet te variëren zijn.

 

 

 

Vierkantsmasker

(31 juli 2010)

Op de poster van de Movie Awards kun je een mooie presentatie van foto's zien.

Welk deel van een foto te zien is wordt bepaald door een collectie van vierkanten.

Die vierkanten vormen als het ware een masker waardoor je een deel van de foto kunt zien.

 

 

Schrijf een programma waarmee dit effect kunt maken. Je moet:

 

- een foto kunnen inlezen

- een vierkantsmasker kunnen maken

- het resultaat kunnen bewaren

 

Het is een pre als je alle gegevens van het vierkantsmasker in een bestand kunt bewaren, zodat je het later kunt bewerken.

 

Hagelslag

(31 juni 2010)

Op een pak hagelslag staat een afbeelding van een boterham waarop hagelslag ligt (hoe verrassend).

De maker heeft zijn best gedaan om de grootte en de vorm (kromming) van de korrels te variëren. Ook liggen de korrels willekeurig, maar wel mooi verspreid over de boterham.

 

Schrijf een programma dat willekeurig hagelslagkorrels willekeurig op de boterham legt.

 

 

 

Wortelvergelijking

(26 juni 2010)

Bedenk algoritmen om de wortel van een getal te berekenen.

Je mag ook gebruik maken van bronnen, als je deze maar vermeldt.

Verwerk minimaal 5 van deze algoritmen in een programma.

In het programma moet ook een methode zitten om de verschillende algoritmen te kunnen testen en vergelijken.

 

 

 

Bloksgewijs

(26 juni 2010)

In de afbeelding hiernaast zien je een afbeelding bloksgewijs naar de witte achtergrond overlopen.

 

Schrijf een programma waarmee je een afbeelding naar een achtergrond kunt laten overlopen op deze blokkerige wijze.

De achtergrondkleur en de grootte van de blokjes moet vrij in te stellen zijn.

Ook de ruimte (aantal pixels) dat nodig is om naar de achtergrond over te lopen moet in te stellen zijn. Als de afbeelding een uitsnede uit een grotere afbeelding is kun je de kleur van de blokjes afleiden uit het deel van de afbeelding dat je weglaat. Maar hoe moet dat als je buiten een kleine afbeelding blokjes moet tekenen. 

 

Kaartkans

(26 juni 2010)

Kaartspelers hebben vaak allerlei weetjes over het spel.

Zo wordt bij het spel toepen wel eens gezegd dat als je met z'n tweeën speelt en de een drie kaarten van dezelfde soort heeft, dat de ander dat dan vaak ook heeft.

 

Schrijf een programma waar je dit soort kansen kunt onderzoeken.

 

Allereerst moet je kunnen vastleggen welke kaarten gedeeld worden (bij toepen zijn dat minder kaarten dan bij hartenjagen).

Daarnaast moet je het aantal spelers en het aantal kaarten per speler kunnen vastleggen.

 

Als je kunt naar het 'aantal kaarten van dezelfde soort' zijn er de volgende mogelijkheden:

 

4 dezelfde

3 dezelfde

2 dezelfde + nog 2 dezelfde

2 dezelfde + 2x1 verschillende

4 verschillende

 

Je kunt die 5 mogelijkheden ook bij de tegenspeler nemen. Je krijgt dan een tabel van 5x5 waarin 25 kansen berekend moeten worden.

 

mogelijkheid: neem in je berekening mee of de kaarten die de tegenspeler heeft wel of niet van dezelfde soort zijn als je eigen kaarten.

Het wordt dan een tabel met 5x(2+4+4+8+1)=19 mogelijkheden. De twintigste mogelijkheid komt nooit voor: 4 verschillende die de tegenspeler niet heeft is onmogelijk.

 

Driehoekteller

(26 juni 2010)

Als binnenkomertje: hoeveel driehoeken tel je in de onderstaande figuur? De cirkel is alleen getekend om aan te geven dat de punten op een cirkel liggen.

Als alle verbindingen tussen de punten getekend zijn spreken we van een complete graaf.

 

Schrijf een programma dat driehoeken in grafen kan tellen.

Het programma moet een instelling hebben om snel een de punten van een regelmatige n-hoek met x verbindingen te kunnen kiezen.

 

Beantwoord met je programma de volgende vragen:

 

- hoeveel driehoeken zijn er in een complete graaf (n=4..100)

- bereken exact de kans op d driehoeken als je x verbindingen tekent tussen de n punten van een regelmatige n-hoek. Schrijf de resultaten in een tabel.

 

mogelijkheid: Maak de mogelijkheid om het programma n punten willekeurig in een vlak te laten leggen (het hoeft dus geen regelmatige n-hoek meer te zijn).

 

 

 

 

 

 

 

 

 

 

Roosterafstand

(26 juni 2010)

In delen van New York is de stad zo ingericht dat het stratenpatroon van boven gezien op een rooster lijkt.

We gaan van een stad uit waarbij de hoogte van een roosterblokje eventueel wat groter kan zijn dan de breedte.

 

In die stad is een kat op jacht naar een muis. De kat en de muis weten van elkaar niet waar ze zijn, maar proberen elkaar niet tegen te komen.

 

 

Schrijf een programma waarmee je

 

- de hoogte van de stadsblokken kunt instellen (de breedte is altijd 1)

- de snelheid van de kat en de muis kunt instellen.

- de startplek van de kat en de muis kunt instellen.

- bouw een manier in om de kans in te stellen dat een kat of muis over een wegloopt waar ze al eerder geweest is.

 

De kat en de muis beginnen te lopen/rennen. Hoe lang duurt het eer ze elkaar zien?

 

Dat zien kun je op verschillende manier uitleggen.

 

- ze zijn op hetzelfde moment op exact dezelfde plek

- ze lopen op dezelfde weg, maar niet van elkaar weg

- net als de vorige voorwaarde maar alleen als ze niet te ver van elkaar verwijderd zijn (beperkte kijkafstand)

 

 

 

Laat het programma een groot aantal keer opnieuw te beginnen om te onderzoeken hoe lang het gemiddeld duurt, eer ze elkaar tegenkomen.

 

mogelijkheid 1: bouw de mogelijkheid in om meer dan 1 kat door de straten te laten lopen.

mogelijkheid 2: bouw de mogelijkheid in om de afstand tussen de katten altijd minimaal een bepaald afstand te laten zijn.

mogelijkheid 3: bouw de mogelijkheid in dat de verschillende katten niet/zo weinig mogelijk over wegen loopt waar een andere kat al geweest is.

 

Tijdsbalk

(26 juni 2010)

Schrijf een programma waarmee je een tijdbalk kunt maken. Hieronder zie je een voorbeeld.

 

 

Je moet dus:

 

- Tijdstippen of data kunnen opgeven. Deze komen in de label onder de tabel

- een tekst en achtergrond- en fontkleur voor de periodes

- de gegevens die nodig zijn om de tijdsbalk te maken moeten in en bestand te bewaren en op te vragen zijn.

 

De tijdsbalk moet als BMP of JPG te exporteren zijn, zodat je hem in een verslag of website kunt gebruiken.

 

Hint: Misschien dat je de gegevens in een tabel van de volgende vorm kunt laten invoeren

 

 

label

periode

bgcolor

fontcolor

?

10.000 jaar geleden

 

 

 

 

 

Steentijd

0,0,255

0,0,0

 

1700 v. Chr

 

 

 

 

 

Bronstijd

0,200,200

0,0,0

 

700 v. Chr

 

 

 

 

 

IJzertijd

100,200,0

0,0,0

 

12 voor Christus

 

 

 

 


 

 

Dat geeft meteen de extra mogelijkheid om een mooie tabel bij de tijdsbalk te maken:

 

10.000 jaar gelden - 1700 v. Chr   Steentijd

1700 v. Chr - 700 v. Chr              Bronstijd

700 v. Chr - 12 voor Christus        IJzertijd

 

 

Cosmic Ray

(24 juni 2010)

Volgens sommigen zou er bij 4 GB geheugen 1 bitje per dag omflippen door kosmische straling.

Hoe kun je dat controleren? Simpel. Vul een groot array met nullen (of enen, of een ander vooraf te bepalen patroon). Daarna doorloop je voortdurend het array om te zien of er (n)iets veranderd is.

Zorg ervoor dat de meting automatisch in een bestand bewaard wordt:

- start meting (datum en tijd)

- einde meting (datum en tijd)

- grootte array in bytes

 

en daarna voor elke verandering:

-  datum en tijd en de index van de gewijzigde geheugenplaats in het array.

 

Hint:

Gebruik iets als array[1..1000000] of byte

Als een 0 in iets anders veranderd is, maak je er weer een nul van.

 

mogelijkheid:

Treed het fenomeen vaker overdag of 's nachts op?

Is er een verband met de leeftijd van de PC?

Worden computers bij een raam vaker getroffen?

 

 

 

ColorPhyll

(23 juni 201)

Hiernaast zie je het venster van het spel ColorPhyll.

In elke zet kies je een kleur. Alle cellen van die kleur die aan een zwarte cel grenzen worden zwart.

Binnen een bepaald aantal zetten (in de afbeelding 25) moet je het veld leeg (=zwart) maken.

 

In het begin is alleen het vakje linksboven zwart.

 

Je kunt het spel 'vrij' maken door iemand te laten proberen om in zo weinig mogelijk zetten het veld leeg te maken.

Het is leuker om het binnen een bepaald aantal zetten te moeten doen.

 

Neem in het programma dus een routine op die het laagste aantal zetten bepaald waarin het veld leeg kan zijn.

 

Een andere uitdaging is de routine die een veld tekent: vul je het veld willekeurig met kleuren of wil je eerst zeker weten dat het niet te gemakkelijk is?

 

 

 

voetbalintelligentie

(22 juni 201)

Laat een klein team van voetballertjes tegen elkaar spelen op het scherm. twee teams met 1 keeper en maximaal vijf spelers is genoeg.

Hoe laat je een speler reageren op de positie de bal van andere spelers?

Wat maakt de reactie van een keeper anders dan die van een veldspeler?

Zijn er snelle en trage lopers? Hoe beslis je of de speler met de bal gaat lopen of dat hij hem afspeelt?

 

 

 

cirkelschatting

(19 juni 2010)

Hiernaast zie je een bekende optische illusie. De cirkels in het midden zijn in beide tekeningen even groot, maar de linker cirkel lijkt groter.

 

 

Schrijf een programma waarmee je metingen aan deze illusie kunt doen.

 

Toon 1 tekening van een cirkel met kleinere cirkels erom heen.

Naast de tekening worden cirkels met een oplopende grootte getoond.

Eén van de cirkels is even groot als de middelste cirkel. De gebruiker moet aangeven welke cirkel volgens hem even groot is (zet er labels bij om deze stap te vereenvoudigen).

De gebruiker moet tussen zijn duim en wijsvinger de diameter van de cirkel aangeven. Meet deze afstand met een meetlat op (in mm) en noteer deze bij de meting.

 

De metingen worden in een bestand opgeslagen.

 

Ten slotte moeten dezelfde metingen ook gedaan worden met een cirkel zonder cirkels eromheen.

 

 

hand van God

(19 juni 2010)

Schrijf een programma waarmee mensen kunnen vastleggen hoe groot ze de afmeting van hun hand inschatten.

Dat zou als volgt kunnen:

 

- de gebruiker legt zijn hand in een afgesloten doos

- op de doos ligt een blad papier. Daarop tekent de gebruiker de grootte van zijn hand (zonder hij die kan zien)

- daarna leggen hij de hand op de doos en op het vel papier. De polsen moeten hetzelfde liggen

- ten slotte trekt hij de echte hand ook op het vel over met een andere kleur.

 

De tekeningen worden in de computer ingelezen door ze op een tekentablet over te nemen (voor een programma werkt dat hetzelfde als een muis).

 

De beide tekeningen worden in een bestand opgeslagen.

 

 

Sjoelen

(19 juni 2010)

Het spel sjoelen is een ingewikkelde versie van pong. Schrijf een programma waarmee je verkleinde versies van de hier afgebeelde houten schijven over een parcours kunt lanceren, in de hoop dat ze in een scoreveld terecht komen.

Het moeilijke bij dit spel is hoe je de botsingen tussen schijven modelleert.

 

 

 

Cyclomatisch complexiteit II

(19 juni 2010)

Schrijf een programma dat van de broncode van een Small Basic een HTML-tabel maakt met per sub de volgende gegevens. De code buiten een sub noem je main.

 

- routinenaam

- aantal regels

- cyclomatisch complexiteit

 

Je berekent de cyclomatische complexiteit per routine als volgt:

 

- begin met 1

- tel voor elke if of if-else 1 erbij op

- tel voor elke while of for er 1 bij op

- de waarde 1 in de vorige twee regels geldt alleen bij eenvoudige voorwaarden als x>1. Als de voorwaarde in de if of while complexer is, tel je voor elke OR of AND 1 erbij op.

 

Cirkelring

(19 juni 2010)

Schrijf een programma dat een ring van cirkels maakt zoals in de afbeelding op de kaft van het boek van Barabási.

 

Je moet de afbeelding kunnen exporteren naar een bitmap.

 

 

 

 

 

 

 

 

 

 

Opgave selector

(18 juni 2010)

Volgens Jochem zou het handig zijn als er een manier waat waarop je snel een selectie zou kunnen maken uit de opgave op deze pagina.

Laten we daar dan meteen een opgave van maken.

Schrijf een webapplicatie waarmee dat kan.

Een opgave bestaat uit een:

- titel

- een datum

- een beschrijving (waarin afbeeldingen kunnen staan)

- een lijst met tags

- een serie links naar een uitwerkingen (als die voorhanden zijn).

 

Een gebruiker moet een zoekterm kunnen invoeren. De applicatie zoekt dan opgaven die zoekterm in de titel, beschrijving of bij de tags hebben staan.

 

 

x_loves_y

(18 juni 2010)

Je kent misschien wel het spelletje waarmee je kunt bepalen voor hoeveel procent x van y houdt. Het gaat als volgt:

 

Schrijf de namen op: "willem loves maxima"

Tel hoe vaak de letters van voor naar achter voorkomen: 1-2-3-2-3-1-1-1-1

Tel daarna de eerste en het laatste getal bij elkaar en werk zo naar binnen door: 2-3-4-5

Herhaal dit tot je 1 of twee getallen overhoudt: 7-7

Als het er twee zijn: plak deze getallen dan achter elkaar: 77

Het getal dat je overhoudt is het percentage: 77%

 

Maak het programma zo, het ook y_loves_x meteen uitrekent.

Als je het programma voor een mobiel apparaat maakt is dat een pre.

 

mogelijkheid: Voeg een bestand met namen aan je programma toe en laat alle combinaties (in beide richtingen) berekenen. Het resultaat moet in een uitvoerbestand bewaard worden.

 

Cijferreeksen

(13 juni 2010)

Schrijf een programma waarmee je een gebruiker kunt testen op het onthouden van cijferreeksen. Dat moet op verschillende manieren:

 

- De computer spreekt een aantal getallen uit (via de luidspreker). Daarna moet de gebruiker je in de juiste volgorde intypen.

 

- De computer laat een aantal getallen op het scherm zien. Daarna moet de gebruiker je in de juiste volgorde intypen.

 

Dezelfde twee manier worden ook aangeboden, waarbij de gebruiker ze in omgekeerde volgorde moet intypen.

 

Het aantal getallen dat onthouden moet worden wordt steeds groter.

Het programma moet in een bestand de opdrachten en de invoer van de gebruiker onthouden.

 

 

 

Interpolatie -moeilijk

(13 juni 2010)

Schrijf een programma dat tussen 3 gegeven punten een kromme tekent door zowel de x als de y-coördinaat te interpoleren met een Lagrange-polynoom.

 

hint:

Meestal worden de y geïnterpoleerd uitgaande van de gegeven x-coördinaten

Dat werkt echter alleen als x3>x2>x1.

Door de 3 punten een t-waarden te geven (punt1:t=0, punt3:t=1, punt2:t is ergens er tussenin). kun je x en y afhankelijk van t maken (in plaats van y afhankelijk van x).

 

FTP-then-delete

(13 juni 2010)

Schrijf een programma dat bestanden in een map via FTP naar een webadres upload.

Na het uploaden moet het programma de bestanden downloaden en vergelijken met het origineel.

Als de bestanden gelijk zijn, worden de originele bestanden gewist.

 

 

 

Cirkel -moeilijk

(13 juni 2010)

Schrijf een programma dat door 3 gegeven punten een cirkel tekent.

Maak de routine zo dat de routine ook alleen het deel van de cirkel tussen het eerste en het derde punt kan tekenen.

 

google grammatica

(13 juni 2010)

Schrijf een programma dat zoekopdrachten bij Google (of een andere zoekmachine) gebruikt om de spelling van woorden en woordvolgordes in een zin te controleren.

Het idee is dat woordvolgordes die veel voorkomen waarschijnlijk correct zijn, woordvolgordes die weinig voorkomen waarschijnlijk fout of dubieus. Je kunt bij veel zoekmachines naar een vaste volgorde van woorden zoeken door ze tussen dubbele aanhalingstekens te schrijven.

 

 

splitsbare woorden

(13 juni 2010)

Een woord heet splitsbaar als je ergens in het woord 1 spatie kunt, zodat en er dan twee geldige woorden ontstaan.

 

Bijvoorbeeld: 'natuur' -> 'na' 'tuur' | 'nat' 'uur'.

 

Je kunt dit voor Nederlandse woorden doen, maar natuurlijk ook voor een andere taal.

Bovendien kun je niet 1 spatie invoegen maar meer:

 

Bijvoorbeeld: 'natuurlijk' -> 'na' 'tuur' 'lijk' | 'nat' 'uur' 'lijk'.

 

Schrijf een programma dat een bestand met woorden in een bepaalde taal doorzoekt naar splitsbare woorden. De splitsbare worden moet in een tweede bestand bewaard worden in de notatie van hierboven: woord -> deelwoord deelwoord | deelwoord deelwoord.

 

 

Uitslag

(12 juni 2010)

Schrijf een programma dat een aanzicht van een kubus en minimaal 2 mogelijke uitslagen laat zien (3 of 4 zo ook moeten kunnen).

De speler van het spel moet zo snel mogelijk bij 15 aanzichten de juiste uitslag vinden.

 

 

 

 

 

Piano

(12 juni 2010)

Met het nieuwe Sound.PlayMusic() van Small Basic 0.9 moet het mogelijk zijn om een piano te maken zoals in de onderstaande afbeelding.

Schrijf zo'n piano. Bedenk hoe je de piano met het toetsenbord kunt bespelen.

 

 

 

Binair mastermind 1

(12 juni 2010)

Je kent vast het spel mastermind. Dit spel lijkt daarop.

De ene speler neemt een binair getal van een afgesproken lengte. De andere speler probeert het getal te raden. De andere speler geeft het aantal juist geraden getallen als antwoord. Daarna raadt de andere speler weer. Enzovoorts. Tot het getal geraden is.

 

voorbeeld:

 

speler 1 neemt een binair getal van lengte 5 in gedacht: 10101

 

speler 2 raadt 11100

speler 1 antwoordt 3

 

Nu zijn alleen de antwoorden nog mogelijk waarbij 3 van de cijfers uit 11100 overgenomen worden, en de 2 overige omgekeerd worden. Dus:

 

11111

11001

11010

etc.

 

 

speler 2 raadt 10001

speler 1 antwoordt 4

etc.

 

Schrijf een programma waarmee een mens binaire mastermind tegen een computer kan spelen

 

Binair mastermind 2

(12 juni 2010)

Schrijf een programma dat met een optimale strategie speelt tegen een mens. Optimaal betekent in dit geval in zo weinig mogelijk stappen.

Het programma moet in elke stap uitleggen (=op het scherm of in een bestand schrijven). Waarom de computer het volgende getal noemt.

 

Hint 1

Als de lengte van het te raden binaire getal n is, zijn er aan het begin van het spel 2^n mogelijke getallen.

Als er na de eerste ronde m nullen of enen goed geraden zijn. Blijven er C(n,m)=n!/(m!(n-m)!) getallen over.

 

Na de tweede ronde blijft weer een aantal mogelijkheden over, maar het werkelijke aantal ligt lager, omdat alleen de getallen die aan beide antwoorden voldoen mogelijk zijn.

 

Hint 2

Welk getal moet de computer raden?

Als de lengte n is, zijn er 2^n mogelijke getallen.

Als je die getallen vergelijkt met de mogelijkheden die nog over zijn (zie hint 1), krijg je bij elke mogelijkheid een waarden voor het aantal juist geraden getallen.

Over alle mogelijkheden geeft dat een gemiddelde.

Een van de getallen die het meeste boven of onder n/2 ligt kies je (waarom?).

 

 

 

 

Woordgeheugen

(12 juni 2010)

Schrijf een programma waarmee je het geheugen kunt oefenen.

Het programma laat een bepaalde tijd een serie woorden zien.

Daarna krijg je weer een bepaalde tijd de mogelijkheid om alle onthouden woorden in te voeren.

Als de tijd om is telt het programma hoeveel woorden je onthouden hebt.

 

 

Kubuswereld

(12 juni 2010)

Schrijf een programma waarmee je bouwsels van kubussen kunt tekenen. De gebruiker moet snel tellen hoeveel kubusjes erin het bouwwerk zitten.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Cijfers en letters

(12 juni 2010)

Schrijf een programma waarmee je cijfers en letters kunt spelen.

Op het speelveld staan cirkels met daarin de letter A t/m L en de getallen 1 t/m 12 (dus even veel getallen als letters).

Het doel is dat de speler de cirkels met elkaar verbindt in de volgorde: A->1->B->2->C->3... Daarbij mag je onderweg geen verkeerde cirkels raken. Je moet dus langs de andere cirkels manoeuvreren. De pen mag onderweg niet opgetild worden.

Het programma moet de cijfers en letters willekeurig op het speelveld tekenen, maar het moet wel mogelijk zijn op de juiste verbinding te tekenen.

 

Hint 1: alle cirkels hebben dezelfde straal, zeg r. Als de afstand tussen twee cirkel d is, liggen de middelpunten van die twee cirkels r+r+d uit elkaar.

 

Hint 2: Het zou wel erg gemakkelijk zijn als alle cirkels mooi in volgorde lagen. De totale afstand van A via 1, B, 2 etc. tot het eindpunt is een maat voor de moeilijkheid.

 

Hint 3: Je kunt voorkomen dat een cirkel opgesloten raakt (en dus niet bereikbaar is). Door een minimale afstand tussen twee cirkels aan te houden.

 

Ordemaker

(12 juni 2010)

In een map staat een grote collectie bestanden. Die bestanden kunnen in een submap staan. Met een programma wil je een beschrijving en tags aan die bestanden kunnen koppelen, zodat je er snel in kunt zoeken.

 

De beheerder van het programma moet op kunnen geven welke bestanden getagd moeten worden.

Daarnaast moet hij accounts voor gebruikers kunnen aanmaken.

 

De gebruikers moeten beschrijvingen en tags kunnen toekennen aan de bestanden. Dat kan het gemakkelijkste als hij het bestand ook kan openen.

 

De beheerder moet per gebruiker een lijst met de door de gebruiker getagde bestanden kunnen opvragen. Daarbij moet de beheerder een score aan de toegekende tags kunnen toekennen: bijvoorbeeld een score van 0-5.

Ook moeten de tags ter plekke aangepast, of zelfs gewist kunnen worden.

 

mogelijkheid: als je de ordemaker als website kunt programmeren of exporteren is dat een pre.

 

 

CCD

(12 juni 2010)

Schrijf een programma dat met een in te stellen regelmaat de bestanden van de ene map naar een andere map kopieert (Copy).

Na het kopiëren vergelijkt (Compare) het programma de inhoud van de bestanden byte voor byte.

Eventueel kan - als de kopie exact gelijk is aan het origineel - het origineel gewist (Delete) worden.

 

mogelijkheid: Als het programma bij het kopiëren merkt dat het bestand al eens gekopieerd is, kan het die stap overslaan en meteen aan het vergelijken beginnen.

Je zou dit nog meer kunnen verbeteren door de volgende stappen in te bouwen:

 

- er bestaat nog geen kopie: kopiëren -> vergelijken -> wissen origineel

- er bestaat wel een kopie: vergelijken -> bestanden gelijk -> wissen origineel

- er bestaat wel een kopie: vergelijken -> bestanden NIET gelijk -> kopiëren -> vergelijken -> wissen origineel

 

 

Elektronische dobbelsteen

(12 juni 2010)

In 1966 werd een octrooi aangevraagd voor een elektronisch dobbelsteen. De schakeling zelf is in het octrooi op te zoeken. Het apparaat bestaat 4 paar lampjes. Van elk paar gaat steeds 1 lampje branden (en het ander dus niet).

Welke lampjes een paar vormen is in de tekening weergegeven door stippellijnen tussen de lampjes.

De bovenste drie lampjes kunnen gebruikt worden om met 1 dobbelsteen te spelen.

De onderste 5 gebruik je als je met twee dobbelstenen wilt gooien.

We gaan er vanuit dat de kans dat bij elk paar de kans dat een lampje gaat branden 50% is. Schrijf een programma dat deze elektronische dobbelsteen emuleert.

 

 

 

 

Letterberg

(12 juni 2010)

In de afbeelding zie je letter die op een berg liggen. De letter zijn geroteerd in een willekeurige richting.

Schrijf een programma dat een collectie letters in een berg laat vallen.

Hints:

- elke letter bestaat uit een serie lijnstukken die verbonden zijn.

- elke letter heeft een zwaartepunt

- als een letter twee steunpunten heeft (1 links en 1 rechts van het zwaartepunt), ligt de letter 'stabiel'.

 

 

Coalitievormer

(12 juni 2010)

Schrijf een programma waarmee je regeringscoalaties kunt berekenen.

Als invoer krijgt het programma een lijst met partijen. Bij elke partij staat het aantal zetels vermeld.

Het programma maakt nu alle mogelijke combinaties (=een coalitie) tussen de partijen en berekent het totaal aantal zetels van elke coalitie. De coalities moeten in een tabel komen te staan, aflopend gesorteerd op het het totaal aantal zetels.

 

 

P2000

(3 juni 2010)

Schrijf een programma dat de tweets van een zelf te kiezen gebruiker in een tekstbestand schrijft.

 

Cyclomatisch complexiteit

(3 juni 2010)

Schrijf een programma dat van een Java, Delphi, NSBasic of Small Basic programma(deel) de cyclomatische complexiteit berekent. De waarde is een maat voor de complexiteit van de code.

 

 

 

 

Tekstcomplexiteit

(3 juni 2010)

Schrijf een programma dat de complexiteit van een tekst berekent volgende de methode van Flesch-Kincaid.

 

 

onweer-DB

(30 mei 2010)

Schrijf een programma waarmee je de afstand van onweer kunt berekenen.

Als je de flits ziet druk je op een knop. Als je de donder hoort druk je weer op een knop.

Daaruit berekent het programma de afstand.

 

In een tabel worden de volgende gegevens opgeslagen:

 

- geografische lengte en breedte (moet de gebruiker in het programma kunnen aanpassen)

- datum

- tijd

- afstand

 

De tabel moet als csv-bestand te exporteren zijn.

 

 

 

tekstopmaak

(26 mei 2010)

Schrijf een programma waarmee je teksten zoals in de afbeelding hieronder kunt maken.

Je moet het volgende kunnen opgeven:

 

- een afbeelding: per letter of voor de hele tekst.

- het lettertype

- de regelafstand

 

Uit die afbeelding wordt de letter (of tekst) gesneden.

 

 

 

gehoortest

(2 mei 2010)

Schrijf een programma (liefst voor een mobiel apparaat) waarmee je een gehoortest kunt afnemen. Geluidsbestanden van hoge tonen kun je hier vinden.

Maak het programma zo, dat je per meting datum, tijd, persoon, oor (links/rechts - voor de persoon zelf), frequentie en hoorbaarheid (j/n) vastlegt.

 

torendoolhof

(2 mei 2010)

Schrijf een programma waarmee je doolhoven, zoals die hieronder kunt tekenen.

 

 

Je moet je de puzzel voorstellen als toren waartussen trappen lopen.

 

 

 

Pascaliaanse telling

(2 mei 2010)

Je kent ongetwijfeld de driehoek van Pascal. In de eerste regels komt het getal 10 vier keer voor. Het getal 6 komt 3 keer voor. Er is een (niet zo beroemde) stelling van de wiskundige Singmaster, die zegt dat het maximum aantal keer dat een getal kan voorkomen beperkt is. En wel tot een hele lage waarde. Het record is op het ogenblik 8 (voor het getal 3003). Singmaster zelf denkt dat er getallen zijn die 10 of 12 keer voorkomen, maar die heeft nog niemand gevonden. Ook zijn er nog geen getallen gevonden die 5 of 7 keer voorkomen.

Met SmallBasic lukt het om tot rij 97 te rekenen met een eenvoudig programma. Maar daarna worden de getallen te groot.

Met Delphi moet het wel lukken om verder te zoeken in de driehoek als je met Big Integers rekent.

 

 

 

 

 

Note-i-ficator

(15 april 2010)

Tap een ritme met een toets. Je programma probeert bij elke tap de juiste toonlengte te berekenen. Als dat gedaan is kun je met de pijtjestoetsen langs de noten lopen en deze omhoog of omlaag schuiven.

 

 

Vier cirkels

(12 april 2010)

Als drie cirkels elkaar raken kun je in de ruimte tussen de cirkels een vierde cirkel tekenen. Zie de afbeelding hieronder. Schrijf een programma dat de positie van het middelpunt en de straal van de vierde cirkel berekent, uitgaande van de gegeven posities en stralen van de drie rakende cirkels.

 

 

 

 

Vertrekstaat

(12 april 2010)

Tijdens een toets zitten leerlingen in rijen.

In de tabel hieronder zijn 3 rijen aangegeven, maar dat zijn er in een echte klas al gauw 6. De plek van de docent, het raam en de deur is ook aangegeven.

Een bankje is gemarkeerd met een leerlingnummer of een kruisje.

 

 

Als een leerling vertrekt (klaar is met de  toets) wordt de vertrektijd genoteerd.

De bovenstaande tabel is dan op 3 manieren te bekijken:

- met leerlingnummers

- vertrektijd

- vertreknummers (1e, 2e, etc.)

 

Schrijf een programma waarmee per toets een klasindeling en de bijbehorende vertrekstaat te maken is.

 

mogelijkheid: geef ook de mogelijkheid om achteraf te behaald cijfer toe te voegen.

 

Staartdeling

(3 april 2010)

Schrijf een programma dat een kind leert hoe je staartdelingen moet maken.

Het programma begint met animaties die eenvoudige voorbeelden als 7/30\ uitleggen.

Daarna kun je ingewikkeldere voorbeelden geven.

De gebruiker zou kunnen oefenen door zelf stap voor stap te moeten aangeven wat er moet gebeuren. Je moet dan wel heel goed geanalyseerd hebben welke stappen er op elkaar volgen.

 

 

mogelijkheid: maak het mogelijk om met decimale getallen te kunnen rekenen. Het betreft decimale getallen in de opdracht zelf, maar ook bij de uitkomst.

 

 

Pythagoras

(3 april 2010)

Schrijf een programma dat uitlegt hoe de stelling van Pythagoras werkt.

Als twee zijden gegeven zijn moet de derde berekend worden.

Let op een nette notatie.

 

Zo gezegd, zo gedaan

(3 april 2010)

Schrijf een programma waarmee een kind met spreekwoorden en gezegdes kan oefenen.

 

 

eenheden

(3 april 2010)

Schrijf een programma dat een kind met eenheden leert werken.

Begin met lengtematen, daarna oppervlakte en ten slotte inhoud.

 

 

 

 

Eliza

(3 april 2010)

Schrijf een versie van Eliza waarbij gebruikers via een netwerk met elkaar kunnen praten. Alle vragen en de antwoorden erop worden opgeslagen als paren

 

   zinnummer, volgtop, vraag,  antwoord

   1,             0,          "hoe gaat het?","prima"

   2,             1,          "hoe gaat het met jou?","ook goed"

 

Een tweede programma moet de correspondentie kunnen scoren op relevantie en beschaafdheid. Een antwoord kan bijvoorbeeld niets te maken hebben met de vraag: het is dan niet relevant. Een antwoord kan ook heel erg aardig zijn: het scoort dan hoog op beschaafdheid. Als beide op een schaal van 0 to 10 beoordeeld worden, zouden beide regels hierboven met 10,10 beoordeeld kunnen worden.

 

  1,0,"hoe gaat het?","prima",10,10

  2,1,"hoe gaat het met jou?","ook goed",10,10

 

Berekenbaar wachtwoord -php

(3 april 2010)

Je kunt een PHP-pagina gemakkelijk beveiligen door de gebruiker eerst een wachtwoord te laten invoeren. Maar dat wachtwoord is statisch.

 

Bij deze opdracht moet je de code zo aanpassen dat de PHP-pagina je een getal geeft. Daaruit moet jij een tweede getal berekenen dat het wachtwoord vormt.

Als je weet hoe het getal berekent moet worden (of als je een rekenmachine hebt die weet hoe dat moet), kun je het wachtwoord geven.

 

Een eenvoudige manier om dat te doen is door te werken met toevalsgetallen. Zie de uitleg op de 4H/V pagina.

Uit zo'n toevalsgetal is een volgende toevalsgetal te berekenen.

 

Bouw een vertraging in die voorkomt dat een programma willekeurig gaat proberen tot toevallig het juiste wachtwoord gekozen werd.

 

Dit script moet eenvoudig als include in andere pagina's op te nemen zijn (of andere pagina moeten als include op te nemen zijn).

 

Set/Get -php

(3 april 2010)

Schrijf twee eenvoudige scripts die de parameters in een SQlite database opslaan.

 

Bijvoorbeeld:

 

     Set.php?secret=6512653&date=20100403&time&1406&location=1&temperature=9.7

 

Uitvoeren van  Get.php?date=20100403&time=1406  geeft dan alle regels die date=20100403 en time=1406 bevatten.

 

 

 

 

 

Rondvormen

(26 maart 2010)

Een veelhoek worden gevormd door hoekpunten met elkaar te verbinden.

Je kunt een veelhoek gladder maken door rond elk hoekpunt een cirkel te tekenen.

Naast elkaar gelegen cirkels worden door een rakende lijn met elkaar verbonden.

Schrijf een programma waarmee de punten van een veelhoek te verschuiven zijn.

Bovendien is de straal van de cirkel rond een hoekpunt te veranderen.

De ontworpen rondvorm moet te bewaren zijn als model (coördinaten van hoekpunten met de straal van de bijbehorende cirkel) en als afbeelding.

Bovendien moet de afbeelding gevuld kunnen worden met een zelf te kiezen kleur. Van het 'binnenwerk' is dan niets meer te zien.

 

mogelijkheid: maak het mogelijk om meerdere ronde vormen met verschillende vulkleuren deels over elkaar heen te leggen. Je moet dan kunnen instellen welke vorm bovenop ligt, welke daaronder etc. Dat kan het eenvoudigste door een z-waarde aan elke vorm toe te kennen. Vormen met een lage z-waarde worden het eerste getekend, vormen met een hoge z-waarde het laatst.

 

 

Regenkringen

(26 maart 2010)

Schrijf een programma dat via een webcam de uitdijende ringen bekijkt van regendruppels die op een waterplas inslaan.

Het gaat bij dit programma om snelheid, omdat de kringen niet erg lang bestaan.

 

Er zijn verschillende redenen waarom sommige kringen niet ver uitdijen en andere wel.

Als de plas ondiep is en/of de druppel klein, krijg je een kring die niet erg groot wordt.

 

Laat het programma het moment, de positie (x,y) en de maximale grote van alle waargenomen kringen onthouden in een bestand.

 

mogelijkheid: hoe kun je corrigeren voor de hoek waaronder de camera kijkt?

 

 

groepsfoto

(25 maart 2010)

Op een foto staat een groep mensen. Een computerprogramma moet de mensen op de foto echter in willekeurige volgorde tevoorschijn laten komen.

Ga ervanuit dat iedereen op de foto los van de rest gefotografeerd is. Tijdens de foto sessie stonden nooit twee (of meer) mensen op dezelfde plek.

 

 

mogelijkheid: laat de mensen in grijstinten zien, pas als je met de muis over een foto beweegt krijgt ze kleur.

 

Stippenvlakken

(25 maart 2010)

Een glas op een wit tafellaken met blauwe stippen is al mooi om te zien. Maar een beker waarop ook nog eens blauwe stippen staan, is nog mooier.

Schrijf een programma waarin zo een wereld met doorzichtige glazen van alle kanten te bekijken is.

 

 

 

Leerlingverwijzing

(25 maart 2010)

 

Schrijf een programma waarmee een docent kan bijhouden welke leerlingen in welk jaar in welke klas of afdeling zaten.

Als een nieuw schooljaar aangemaakt wordt, komt er een kolom bij.

Er moeten natuurlijk nieuwe leerlingen toegevoegd kunnen worden.

 

bovendien is er een kolom met een link naar een website van de leerlingen.

 

 

De tabel moet als HTML-bestand te exporteren zijn.

 

 

 

Reisroute

(25 maart 2010)

In het geweldige programma Magix Video zit de mogelijkheid om een animatie van een reisroute te maken. Helaas werkt die optie niet zo eenvoudig.

 

Schrijf een programma waarmee je reisroutes kun maken, die daarna afgespeeld kunnen worden.

 

mogelijkheid: maak het mogelijk om je route als GIF-animatie op te slaan.

 

 

Afstandsberekening

(25 maart 2010)

Als je twee foto's vanaf een bekend positie neemt (niet te ver uit elkaar), kun je de afstand tot objecten op de foto berekenen.

Stel je voor dat je foto's loodrecht op de as van de weg maakt (de camera kijkt precies 'opzij'). Van elke foto is bekend op welke locatie je stond, door middel van een GPS.

Schrijf een programma dat van een object op twee van zo'n foto's de afstand berekend.

 

 

Huisjes afvinken

(25 maart 2010)

Op Openstreetmap staan in Nederland ook steeds meer huizen ingetekend.

Bedenk een manier hoe je onderweg aanwezige huizen kunt 'opnemen' en deze met de aanwezig huizen op Openstreetmap kunt vergelijken. Als je meteen huisnummers aan een huis kunt toekennen en/of postcodes van een huis kunt noteren is dat helemaal subliem.

 

 

 

 

Bezorgroute

(17 maart 2010)

Je bent lid van de voetbalclub en wilt helpen om het nieuwe trainingsschema bij de leden te bezorgen.

De clubwiskundige heeft de afstand tussen de adressen van alle leden berekend.

Een bezorgroute heeft een Startpunt en een Finish (dat kan natuurlijk hetzelfde adres zijn).

In welke volgorde moet je de adres langs om een zo kort mogelijke route af te leggen?

 

 

Schrijf een programma dat bepaalt in welke volgorde je de post het beste kunt bezorgen. De afstandstabel moet in het programma te bewerken zijn. Ook het start- en eindpunt moeten vrij te kiezen zijn.

 

mogelijkheid: de club heeft 500 leden. Daarom wil je niet meer alleen alle post bezorgen. Het programma moet de bezorgadressen aan n bezorgers toewijzen én voor hen de de kortste route bepalen.

 

Tijdcapsule

(16 maart 2010)

Schijf een website waarmee iemand foto's, teksten en filmpjes achter kan laten voor de toekomst.

De bestanden worden in een capsule (zip-bestand?) ingepakt en gecodeerd. Pas na een in te stellen aantal jaren kan de capsule geopend worden. De website gaat daarbij uit van de datum op de webserver.

 

Je kunt nog nadenken over wie de capsule mag openen.

Als een lange tijd verstreken is, is het natuurlijk niet meer zo zeker dat e-mailadressen en wachtwoorden nog bekend zijn. Misschien dat een groep beheerders (die de maker van de capsule kent) een manier hebben om toegang te kunnen geven?

Misschien dat iemand kan instellen dat na 20 jaar familieleden de capsule mogen zien? Kunnen er later nog mensen worden toegevoegd? Kan na 100 jaar iedereen de inhoud van de capsule zien?

 

 

Vouwkunst

(16 maart 2010)

In een verpakking trof ik een bijzonder vouwwerk aan. Uit één stuk papier was een houder gesneden die mooi in elkaar gevouwen was. In de klas is een exemplaar aanwezig.

De rode lijnstukken zijn even lang en vormen de diepte van het bakje. Ook de gele lijnstukken zijn gelijk.

Rood, groen en oranje samen zijn de totale breedte van het vierkantige bakje.

De verhouding tussen groen en geel bepaald de hoek waaronder gesneden moet worden.

 

Schrijf een programma waarmee afmeting van de omtrek en de afmeting van het bakje in te stellen zijn.

Het programma berekent daaruit de snij en vouwlijnen. Die worden in een tekening getoond, zodat deze te bewaren is.

 

 

 

Hefboomwet

(16 maart 2010)

Schrijf een programma waarmee je een leerling kunt laten oefenen met de hefboomwet.

De leerling moet gewichtjes aan een lat kunnen hangen.

Maak situaties waarbij het gewicht van de hefboom zelf nihil is, én waarbij het gewicht van de hefboom wél van invloed is.

 

 

Electroscoop

(16 maart 2010)

De elektroscoop is een dankbaar object om statische elektriciteit mee uit te kunnen leggen.

Met een eenvoudige schematische tekening van de elektroscoop is de verschuiving van elektrische lading goed uit te leggen. Maak een programma waarmee je verklarende animaties kunt laten zien.

 

 

fig20.gif

 

 

 

Hol en bol

(16 maart 2010)

Iedereen herkent we de verbazing van de weerspiegeling in een eetlepel.

Schrijf een programma dat voor holle, bolle en vlakke spiegels laat zien hoe de loop van lichtstralen is.

 

 

Bewegingslogboek

(16 maart 2010)

Schrijf programma's voor een NXT-brick en de PC waarmee een bewegingslogboek opgenomen kan worden.

Gebruik daarvoor de speciale versnellingssensor.

Een bijzondere toepassing van het bewegingslogboek is het vastleggen van bewegingen tijdens de slaap (periode van REM-slaap), of om de activiteit gedurende de dag vast te leggen.

 

Werkhouding

(16 maart 2010)

Een mens neemt gedurende een uur verschillende houdingen aan.

Tijdens een proefwerk is dat heel mooi te zien. Voortdurend neemt de denkende mens een andere houding aan terwijl zij denkt, schrijft en overweegt.

 

Schrijf een programma waarin schematische afbeelding van een mensen aanwezig zijn.

Met het programma moet van een serie mensen de houding vast te leggen zijn door bij elke houdingswisseling de nieuwe houding op te kunnen geven.

 

 

Wektijd

(4 maart 2010)

Een wekker wordt verzet van tijdstip t1, naar tijdstip t2 (met telkens een heel aantal minuten).

Er is een knop om het aantal uren 1 uur vooruit te zetten per klik. Ook voor de minuten is er zo een knop.

Er zijn 24*60 mogelijke tijdstippen voor t1. Er zijn 24*60-1 mogelijk tijdstippen voor t2 bij een zekere t1. Bereken voor alle paren (t1,t2) het aantal kliks dat nodig is om de tijd van t1 naar t2 te verzetten.

Wat is het gemiddeld en het maximaal aantal kliks?

 

Schrijf een programma dat dit kan berekenen.

 

Aex

(22 februari 2010)

Hier (feb 2010) en hier (okt 2011) vind je een lijst met de koers van de AEX.

Achterafgezien kun je precies bepalen wanneer je in de AEX had moeten investeren:

 

- kopen bij de laagste koers

- verkopen bij de pieken.

 

Echter, je kunt niet in de toekomst kijken. Je weet dus nooit vooraf of je een piek of dal bereikt hebt.

Je kunt wél leren uit het verleden en daarmee de toekomst proberen te voorspellen.

 

Schrijf een programma dat bij een reeks aandelenkoersen probeert om (ver-)koopadviezen te geven door voor een bepaald punt van de grafiek de kans op een koersstijging/koersdaling te berekenen.

 

Hint: wellicht is het beter om naast deze lijst ook nog één andere lijst te gebruiken (bijvoorbeeld de Dow-Jones). Daar zijn een paar goede redenen voor:

 

1) Vaak reageert de AEX op de Amerikaanse aandelenmarkt.

2) Je kunt de ontwikkeling op langere termijn beter onderscheiden van fluctuaties bij één aandeel.

 

 

 

Topo

(22 februari 2010)

Schrijf een programma waarmee je topografie kunt oefenen.

Startpunt is de kolom met Nederlandse toponiemen van het cito.

Een docent/ouder moet van een willekeurige collectie een groep kunnen maken.

 

De leerling moet op drie manieren kunnen oefenen:

 

- bij een toponiem de juiste plek op een kaart aanklikken.

- bij een gegeven punt op de kaart een toponiem invoeren (door te typen)

- bij een gegeven punt op de kaart een toponiem kiezen uit 4 mogelijkheden.

 

 

mogelijkheid: bied de optie om een aantal klikbare plekken toe te voegen die niet bij de groep horen (dat maakt het moeilijker).

 

 

Het regent zonnestralen

(22 februari 2010)

 

Schrijf een programma dat de figuur hiernaast maakt. Met minimaal 1 van de volgende aanvullingen:

 

1) de spaken draaien rond de binnenste cirkel.

2) de binnenste cirkel is te verplaatsen; de spaken (en de kleurvulling) bewegen mee.

 

Zoals je misschien al zag wijzen de spaken soms niet precies naar het middelpunt van de binnenste cirkel.

 

 

Cirkelomhulling

(12 februari 2010)

Rond een punt worden punten getekend. De meeste dichtbij, maar sommige wat verder af.

Dat geeft een afbeelding zoals hieronder.

In plaats van deze afbeelding willen we alleen een omhullende tekenen. Alle punten die binnen de omhullende liggen tekenen we niet. We stellen de volgende voorwaarden aan de omhullende:

 

- als je over de omhullende loopt moet je steeds in de richting van de wijzers van de klok lopen (dus niet een deel in de omgekeerde richting).

- tussen de omhullende en de punten moet zo weinig mogelijk 'lege' ruimte zitten.

 

Schrijf een computerprogramma dat rond een verzameling punten een zo goed mogelijk passende omhullende bepaalt (en tekent).

 

 

Tree Hugger

(11 februari 2010)

Aan een boomstam zitten meestal takken. Als je langs de boom loopt zie je takken steeds vanuit een ander standpunt. Daardoor kun je je een steeds beter beeld vormen van de boom.

Schrijf een computerprogramma waarmee je foto's die vanuit verschillende standpunten genomen zijn, kunt verwerken tot een eenvoudig model van de boom.

Van elke foto is de locatie ten opzicht van de boom bekend.

 

 

 

Bubble Popper

(11 februari 2010)

Deze opdracht is voor Sahid, maar misschien maak jij het eerder!

Schrijf het spelletje Bubble Popper. De variant die Sahid graag speelt is overigens leuker (dit spel wordt meegeleverd met de Samsung Star)

 

 

Vijfhoekenveld

(11 februari 2010)

Met regelmatige driehoeken, vierkanten en zeshoeken kun je een vlak mooi vullen.

 

 

Met regelmatige vijfhoeken lukt dat niet.

Schrijf een programma dat toch probeert om een vlak zo mooi mogelijk met vijfhoeken te vullen.

 

mogelijkheid: maak een optie om af en toe een zeshoek in te voegen.

 

In de afbeelding hieronder kun je voorbeeld van een algoritme zien.

 

1. Begin met twee verbonden punten.

2. Zoek daarna een punt waaraan nog niet drie lijnstukken zitten (vul die aan)

3. Zodra er een keten van vier lijnstukken ontstaat, sluit je deze kort door de vijfde verbindingslijn te tekenen (er is dan een vijfhoek ontstaan). Je kunt deze stap aanpassen, zodat er zeshoeken (of hoger) ontstaan.

 

 

 

Wegbereider

(4 februari 2010)

Hieronder zie je 25 kamers die door de een robot bezocht moeten worden.

Het streepje (-) geeft aan bij welke kamer de robot begint. Vanuit deze start positie kan de robot rechtdoor, linksaf of rechtsaf lopen.

Hij begint ligt altijd aan de rand.

Bij een kamer kan een aanwijzing voor de route opgegeven:

 

o : de robot moet hier 90 graden van richting veranderen.

x : de robot mag in deze kamer niet komen.

+ : de robot moet in deze kamer rechtdoor lopen.

 

Schrijf een programma dat de robot alle kamer laat bezoeken.

Als extra optie moet je kunnen opgeven of de robot terug moeten keren in de startkamer.

Bovendien moet je kunnen opgeven of er in een kamer ook 180 graden gedraaid kan worden.

 

De gevonden route kan als volgt bewaard worden:

In elke kamer vind een actie plaats:

 

    R: draai rechts

    V: vooruit (draai niet)

    L: draai links

    O: keerom

 

Daarna lopen we in de gekozen richting.

Aangezien er n kamers zijn, zijn er ook n acties. Die kunnen als een string bewaard worden:

 

    RLRRLV... etc.

 

 

 

Bronverwijzer -delphi

(23 januari 2010)

Er zijn allerlei prachtige websites waarmee je een bibliografie en bronverwijzing kunt maken.

De bronverwijzer moet een programma zijn waarmee je aan een bloktekst een bron kunt toevoegen. Bronnen zijn altijd webadressen of boeken.

 

Een bloktekst kan te verantwoorden zijn op grond van 1 of meer verwijzingen.

de tekstblokken zijn stukken HTML-code.

 

Als een stuk tekst geselecteerd is kan daaraan een verwijzing gekoppeld worden.

Uiteindelijk is aan elk stuk tekst 0 of meer keer een verwijzing gekoppeld.

 

De bronverwijzer moet een aantal tekstblokken (die samen bijvoorbeeld een verslag vormen). Er zijn allerlei manier denkbaar waarop je de tekst kunt exporteren.

 

- zonder verwijzingen

- aan het eind een opsomming van alle verwijzingen

- met na elk tekstblok de relevantie verwijzingen.

 

ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.

http://www.lipsum.com/

- met rechts naast de tekst een verwijzingstabel

 

 

5

6

ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.

x

 

It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum

 

 

x


 

- Met een achtergrond- of tekstkleur die laat zien of er voor dit tekstblok een verwijzing toegevoegd is. Orange betekend in het onderstaande voorbeeld: geen verwijzing.

 

ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.

http://www.lipsum.com/

- als één lang HTML-document

- als een miniwebsite waarin door paragrafen gebladerd kan worden.

 

 

Vraag en antwoord -palm -php

(23 januari 2010)

Het komt vast wel eens voor dat je iemand een vraag stelt, vaak krijg je dan meteen een antwoord. Als je veel vragen stelt en het antwoord een tijd op zich laat wachten, is het handig om bij te houden aan wie je wanneer welke vragen stelde. En op welke datum je een antwoord kreeg.

 

Je moet gemakkelijk kunnen filteren op personen, datum en onbeantwoorde vragen. Bovendien moet je alles op een woord kunnen doorzoeken.

 

mogelijkheid: maak het mogelijk om 1 vraag aan meerdere mensen tegelijk te stellen, maar toch van iedereen bij te kunnen houden wat het antwoord was.

 

mogelijkheid: maak het mogelijk een lijst te maken waarin per persoon staat hoeveel vragen je eraan stelden en hoe vaak je antwoord was. Geef ook het percentage.

 

Slaapbeweging

(16 janauri 2010)

Bedenk een manier om een applicatie beweging tijdens de slaap te laten meten. Alles mag: webcam, bewegingssensor voor Mindstorms

 

Boekenlijst

(16 januari 2010)

Schrijf een webapplicatie waarmee mensen hun boekenlijst (=gelezen boeken) kunnen delen met anderen. De volgende velden moet worden opgeven (optionele velden staan tussen haakjes):

 

- (llnr) naam, achternaam (klas)

- boektitel, schrijver

- isbn

- waardering (waardeloos 1 - 5 geweldig)

- taal (ne, en, du, fr, anders)

- (link naar een samenvatting)

 

bij het invoegen van deze gegevens wordt de datum toegevoegd.

 

Gebruikers van de website kunnen natuurlijk hun eigen boekenlijst bekijken.

Verder kunnen ze op schrijver of boektitel zoeken (bijvoorbeeld om afhankelijk van de waardering een leuk nieuw boek uit te kunnen zoeken).

 

 

 

 

 

Murks

(5 januari 2010)

Murks is een spel dat niet bestaat, eh bestond.

Het wordt op een normaal dambord met normale damstenen gespeeld. Ook gelden de normale spelregels.

Er is echter één verschil: de spelers zet in het begin één voor één de stenen op een willekeurige zwart veld neer.

 

Schrijf een programma dat een willekeurige Murks-opstelling maakt en de spelers daarna een willekeurige (geldige) zet laat doen.

 

mogelijkheid: Laat een mens voor 1 kleur spelen De computer is de tegenspeler (en die zet een willekeurige steen).

 

 

 

 

 

 

Beyond Compare

(5 januai 2010)

Schrijf een programma dat het volgende kan.

De gebruiker geeft twee folders op (bijvoorbeeld C:\bron en D:\bestemming) en een interval (bijvoorbeeld in uren).

Als het interval verlopen is, doorloopt het programma alle bestanden in de twee folders (ook in de subfolders). De bestandnamen inclusief het pad worden in een tekstbestand bewaard (source.txt en dest.txt)

 

Na het scannen vergelijkt het programma alle overeenkomstige bestanden met elkaar (bijvoorbeeld C:\bron\1.txt met D:\bestemming\1.txt). Bestanden die verschillen worden in een lijst gezet.

 

Ontbrekende bestanden (dat kan op twee manieren!) worden in twee andere lijsten gezet.

 

mogelijkheida: als je de gebruiker ook de mogelijkheid geeft om ontbrekende en verschillende bestanden te synchroniseren is dat nog mooier.

 

 

Super -palm

(3 januari 2010)

Op deze pagina vind je alle supernovae sinds 1885 (en vier zeer bekende oudere explosies). De tabel is op SN gesorteerd.

Schrijf een programma dat deze tabel kan inlezen.

De tabel moet minimaal op elke kolom te sorteren zijn (vraag even na welke gegevens samen een kolom vormen).

 

Het programma moet diagrammen voor de locatie (SN position) en de magnitude kunnen tonen.

 

Het is een pre als je programma de tabel vanaf deze website kan updaten.

 

 

Fliptekst

(3 januari 2010)

Schrijf een programma dat tekst gespiegeld naast de tekst zet.

 

 

Als je dat kunt, kun je ook een tekst laten omklappen.

Oorspronkelijk stond hier (8002)2009 (2008 gespiegeld).

In de afbeelding is 2009 onderweg naar links en is rechts al 2010 verschenen.

Zo kun je op een mooie manier door een kalender of een boek bladeren.

 

 

Je kunt dit verfraaien door de omklappende tekst niet als een rechthoek naar als een parallelogram te laten bewegen.

De tekst beweegt dan rechts een beetje omhoog en links weer omlaag.

 

 

 

Cirkelweb

(3 januari 2010)

Al eerder (op 1 april 2008) beschreef ik hier een cirkelwereld.

Die van vandaag is anders. De wereld begint met een cirkel. Op de cirkelrand worden n punten gekozen (in de tekening zijn dat er 6). Die vormen samen een n-hoek.

Binnen de n-hoek wordt bij elk punt een nieuw punt gekozen. Die n punten worden met de punten op de cirkelrand en met elkaar verbonden. Zo ontstaat een (onregelmatige) n-hoek. Als de lijnstukken te lang worden kunnen er vreemd figuren ontstaan, dat is niet de bedoeling, het moeten n-hoeken blijven.

Dit recept kun op herhalen met de nieuwe n-hoek. Maar na een paar keer wordt de ruimte binnen de n-hoek te klein. Schrijf een programma dat een willekeurig cirkelweb maakt.

 

 

Tekstbladeren

(3 januari 2010)

In een tekstverwerker kun je door een tekst bladeren door met de scrollbar omhoog of omlaag te bladeren.

In het voorbeeld hieronder zie je een andere manier.

Boven en onder de tekst is de tekst ervoor en erna gecomprimeerd te zien. Door daarop te klikken komt die in beeld.

Schrijf een programma dat de tekst op deze manier laat zien.

 

 

Tekstbladeren (2)

(3 januari 2010)

Hieronder zie een iets andere manier om de tekst weer te geven. De tekst is op een cilinder geprojecteerd.

Schrijf een programma dat de tekst op deze manier laat zien.

 

 

 

 

Leestijd

(3 januari 2010)

Op 9 januari 2009 beschreef ik hier ook als een manier op aan te kunnen geven hier lang een deel van een tekst in beeld was (=gelezen werd).

Hier volgt een tweede manier.

Van elke plek die een gelezen werd wordt bijgehouden hoelang die in beeld was.

Dat wordt in beeld gebracht met een diagram.

In de linkertekening is er nog niets gelezen.

In de tweede is er in het midden van de tekst iets gelezen.

In de derde al meer.

 

 

Dit diagram wordt links naast de tekst getoond.

Door er in te klikken kun je naar een ander deel van de tekst gaan. Je kunt zo gemakkelijk een plek kiezen die je nog niet bekeken hebt.

 

Bovendien kun je dit soort diagrammen gebruiken om te laten zien hoe in de loop van de tijd gelezen werd.

Net zoals in de afbeelding hieronder worden er meerdere diagrammen naast elkaar getekend.

Dat kunnen bijvoorbeeld diagrammen per dag, week of maand zijn.

Zo krijg je een idee hoe de lezer zich door de tekst werkt.

 

 

Artikelopmaak

(3 januari 2010)

Schrijf een serie routines waar mee een serie artikelen onderhouden kan worden. De artikelen moet met een zelf te kiezen opmaak als XHTML te exporteren zijn.

 

De tekst bestaat uit hoofdstukken (met een titel).

De hoofdstukken bestaan uit paragrafen (met een titel).

Er zijn tekst-paragrafen, paragrafen met een afbeelding met een bijschrift, en paragrafen die een opgave bevatten.

 

Voor elk element moet de opmaak apart in te stellen zijn.