Programmeeropdracht 1 Mastermind Algoritmiek, voorjaar 2019
|
|
|
- Joris Peter van der Pol
- 7 jaren geleden
- Aantal bezoeken:
Transcriptie
1 Programmeeropdracht 1 Mastermind Algoritmiek, voorjaar 2019 Inleiding Donald en Kim spelen een spelletje Mastermind. Donald probeert de geheime code van Kim te raden. Kim wil dat zo moeilijk mogelijk maken, en schuwt daarbij vals spel niet. Zo nodig verandert hij de code, als hij denkt dat de Donald met de gokken die hij uitvoert te dicht in de buurt komt van de code. Natuurlijk is het niet de bedoeling dat dit opvalt, dus Kim moet dit zó doen dat alle eerdere antwoorden die hij verstrekt heeft op de gokken van Donald, consistent zijn met de nieuwe code. Donald heeft wel een vermoeden van deze praktijk, maar kan het niet bewijzen. Het enige wat hij kan doen, is om slimme gokken te doen, waarmee hij zelfs bij vals spel van Kim zo snel mogelijk de code kan kraken. Omdat de Donald zelf niet slim genoeg is om slimme gokken te verzinnen, roept hij jouw hulp in. Kun jij voor hem bepalen welke gokken hij het best kan doen? Mastermind We beschouwen varianten van het standaard Mastermind spel. Voor de standaard spelregels, zie Wikipedia Nederlands en/of Engels. In onze versie van het spel hebben we een variabel aantal kleuren, een variabel aantal gaatjes op een rij, en een variabel aantal rijen op het bord. Deze zijn allemaal op te geven door de gebruiker (binnen bepaalde grenzen). Een belangrijke reden hiervoor is dat het brute force onderdeel van deze opdracht voor de standaard aantallen extreem veel tijd kan kosten. Met kleinere aantallen kost het minder tijd. We noteren de kleuren met cijfers vanaf 0. Bij een spel met zes kleuren gebruiken we dus 0,1,...,5. Als er vier gaatjes op een rij zijn, wordt een mogelijke gok dan bijvoorbeeld: Verder mag in een patroon (de geheime code van Kim of een gok van de Donald) dezelfde kleur meerdere keren voorkomen. Ook 3031 is dus bijvoorbeeld een geldige code of een geldige gok. Dit betekent wel dat je zorgvuldig te werk moet gaan bij het berekenen van de antwoorden van Kim op de gokken van Donald. Als bijvoorbeeld de code 3031 is, en de gok is 3313, dan moet het antwoord één rood pin en twee witte pinnen zijn. Immers, de eerste 3 staat op de juiste positie, en levert een rode pin op. Een van de andere twee 3 en in de gok levert een witte pin, en de 1 levert ook een witte pin. Voor u beschikbaar Op de website van het vak is een skeletprogramma beschikbaar, waarin een klasse Mastermind wordt gedefinieerd, die door het hoofdprogramma gebruikt wordt om het spel te spelen en experimenten te doen. Het programma wordt gecompileerd met het commando make. Vervolgens kun je het met het commando./mastermind runnen. Je krijgt dan een menu aangeboden, met de keuze om het spel te spelen of experimenten te doen. Bedoeling is om de TODO s in de gegeven bestanden, in eerste instantie mastermind.cc en mastermind.h, maar ook main.cc uit te voeren. 1
2 In eerste instantie moet je de gebruiker de gelegenheid geven om het spel handmatig te spelen: een geheime code voor Kim opgeven, en vervolgens gokken voor Donald doen, waarbij het programma het resultaat (= antwoord) berekent dat correspondeert met de opgegeven code van Kim. Zo n resultaat is een combinatie (goedepositie, goedekleur), overeenkomend met respectievelijk het aantal rode en witte pinnen. Een aantal functies die je moet implementeren spreken voor zich, of worden toegelicht in het skeletprogramma. Van drie functies geven we nu een nadere toelichting: int Mastermind::optimalegok (consistent, aantalstanden, optgok) Bepaal, uitgaande van de huidige stand, met een min-max algoritme een optimale gok voor Donald. Dat wil zeggen: een gok die ervoor zorgt dat hij nog zo min mogelijk gokken/stappen nodig heeft om de code te kraken, zelfs bij zo slecht mogelijke antwoorden (= resultaten) van Kim, dus zelfs als Kim zijn geheime code stiekem (maar wel consistent met eerdere antwoorden) verandert. Het algoritme werkt brute-force: het loopt steeds in principe alle mogelijke gokken en alle mogelijke antwoorden af. Het heet een min-max algoritme, omdat Donald het aantal gokken probeert te minimaliseren: van alle mogelijke gokken kiest hij er een die hem zo snel mogelijk bij de oplossing brengt. Aan de andere kant probeert Kim het aantal gokken te maximaliseren: van alle mogelijke antwoorden geeft hij een antwoord waarmee Donald nog zo veel mogelijk gokken/stappen nodig heeft om de code te kraken. Of in andere woorden: Kim verandert de code zodanig dat dit (voor Donald) slechte antwoord eruit komt. Zoals eerder gezegd moet het antwoord van Kim wel consistent zijn met eerdere antwoorden: er moet daadwerkelijk een code bestaan die bij de gegeven gokken de gegeven antwoorden oplevert. De functie optimalegok moet recursief zijn. In de laatste slides van college 3 wordt een grove opzet van de functie geschetst. Je mag je recursieve zoektocht naar de gevolgen van een mogelijke gok afbreken als je het aantal rijen van het spel gevuld zou hebben. Dat kun je dus als een mogelijk stopcriterium van de recursie gebruiken. De functie retourneert het minimale aantal gokken dat Donald nodig heeft (vanaf de huidige stand). De optimale gok die daaraan bijdraagt wordt in de parameter optgok mee teruggegeven. De parameter aantalstanden wordt opgehoogd met het aantal standen dat hiervoor wordt bekeken. Ten slotte bepaalt de parameter consistent of Donald alleen maar consistente gokken mag doen, of niet. Dat wil zeggen: gokken die consistent zijn met eerdere antwoorden, en dus in principe gelijk kunnen zijn aan de geheime code. Als je alleen consistente gokken beschouwt, hoef je minder werk te doen. Het is echter niet per se zo, dat Donald met louter consistente gokken het minimale aantal gokken doet. Je zou je namelijk kunnen voorstellen dat je met een inconsistente gok meer informatie over de geheime code kunt krijgen dan met een consistente gok. int Mastermind::goedegok (consistent, goedegok) Bepaal, uitgaande van de huidige stand, een goede(niet per se optimale) gok voor Donald. Concreet: een gok die ervoor zorgt dat er zo min mogelijk codes over blijven die consistent zijn met alle gokken tot nu toe, en de bijbehorende antwoorden (=resultaten), zelfs bij zo slecht mogelijke antwoorden van Kim, dus zelfs als Kim zijn geheime code stiekem (maar wel consistent met eerdere antwoorden) verandert. De functie goedegok moet niet-recursief zijn. De functie kijkt feitelijk maar één stap van Donald (een gok) en één stap van Kim (een antwoord) diep. In de laatste slides van college 3 wordt een grove opzet van de functie geschetst. 2
3 De functie retourneert het aantal codes dat consistent is met alle gokken tot nu toe (inclusief de goede gok). De goede gok zelf wordt in de parameter goedegok 1 mee teruggegeven. Ten slotte bepaalt de parameter consistent of Donald alleen maar consistente gokken mag doen, of niet (zie bij optimalegok). doeexperimenten() Code voor een deel van de experimenten die gedaan moeten worden voor het verslag. Dan hoef je ze niet handmatig te doen, en hoeven de nakijkers ook niet alles handmatig te controleren. Zie verderop. Gebruik een stapel (mag ook in een array ge-implementeerd zijn) voor de huidige stand: de serie gokken en bijbehorende resultaten die al gedaan zijn. Daarmee kun je controleren of een gok of een code nog consistent is met de eerdere gokken en resultaten. 2 Zoals eerder gezegd noteren we de code en de gokken als rijtjes cijfers. Wanneer de gebruiker een code of een gok invoert, moet je nog wel controleren of de ingevoerde string de juiste lengte heeft en allemaal geldige karakters bevat. In het skeletprogramma staat al netjes een constante EersteKleurKar = 0 gegeven. Gebruik deze constante ook daadwerkelijk bij je controles. Van ingevoerde integers moet je controleren of ze binnen de geldende grenzen vallen. Hiervoor kun je gebruik maken van de functie integerinbereik in het bestand standaard.h. Vergeet in de functies optimalegok en goedegok bij het uitproberen van gokken niet, om na het uitproberen de gok (zonodig) weer ongedaan te maken. Algemene opmerkingen Maak / behoud een verstandige klassenstructuur. Je klassen mogen alleen public membervariabelen en methoden hebben, die buiten de klasse bekend moeten zijn. Andere membervariabelen en methoden moeten private zijn. Als er in je klassen dynamisch geheugen wordt gealloceerd, denk dan ook aan een destructor. Het is verstandig om eerst een geschikte datastructuur te bedenken om de geheime code, gokken en resultaten in op te slaan, en vervolgens enkele eenvoudige functies te implementeren, bijvoorbeeld de constructoren (en de destructor), en de methodes setcode, drukaf, eindstand en doegok, en deze te testen. Functies mogen niet te lang zijn (maximaal 35 regels). Gebruik constantes waar dat zinvol is, zoals ook in het skeletprogramma al gebeurt. Het werkende programma mag er op het scherm eenvoudig uitzien, maar moet wel duidelijk zijn. De enige te gebruiken headerfiles zijn in principe iostream, iomanip, cstring, string, vector en ctime. 1 Het is wellicht verwarrend dat de parameter dezelfde naam heeft als de functie. Verander desgewenst de naam van de parameter. 2 Strict genomen functioneert de stapel dan niet als een stapel: je kijkt immers ook naar andere elementen dan de top van de stapel. 3
4 Boven elke functie moet een commmentaarblokje komen met daarin een (zeer) korte beschrijving van wat de functie doet. Noem daarin tevens de gebruikte parameters: geef hun betekenis en geef aan hoe ze eventueel veranderd worden door de functie. Geef bij memberfuncties ook aan wat deze met de membervariabelen van het object doen. Let verder op de layout (consequent inspringen) en op het overige commentaar bij de programmacode (zinvol en kort). Het programma moet onder Linux bij LIACS getest zijn en werken. Verslag Het verslag moet getypt zijn in L A TEX, en moet bevatten: Een korte introductie, met uitleg over het spel en de opdracht. Een paragraaf waarin je uitlegt hoe je in je methodes optimalegok en goedegok op een systematische wijze alle mogelijke gokken en alle mogelijke resultaten (= antwoorden) afloopt. Een paragraaf met de (eventueel handgetekende) toestand-actie-ruimte die doorzocht wordt in de methode optimalegok voor een spel met twee kleuren en twee gaatjes, waarbij tevoren nog geen gok gedaan is, en waarbij alleen consistente gokken worden gedaan. Een actie bestaat hier uit een consistente gok van Donald met een mogelijk (consistent) antwoord van Kim. Elke toestand bestaat uit een stapel met de tot dan toe gedane gokken met bijbehorende resultaten. Die stapel hoef je niet expliciet te tekenen, als je de acties maar expliciet tekent. Uit symmetrie-overwegingen hoef je voor de eerste gok van Donald alleen 00 en 01 in de toestand-actie-ruimte op te nemen. Hoeveel toestanden kent de totale toestand-actie-ruimte bij een spel met twee kleuren en twee gaatjes? Komt dit overeen met het aantal standen dat je methode optimalegok oplevert? Zo nee, verklaar het verschil. Een paragraaf met een beschrijving van enkele experimenten en de resultaten daarvan. Gebruik je programma om voor een spel met drie kleuren, drie gaatjes en vier rijen, uitgaande van de begintoestand, een optimale gok te bepalen met alleen consistente gokken, en met niet alleen consistente gokken. Hoeveel standen worden in beide gevallen bekeken, wat zijn de gevonden optimale gokken, en hoeveel tijd (in seconden, milliseconden,...) kosten de zoektochten? voor een spel met zes kleuren, vier gaatjes en tien rijen, uitgaande van de begintoestand, een goede gok te bepalen. Als het goed is, zijn er met die goede gok (bij een zo slecht mogelijk resultaat) nog 256 codes mogelijk. Wat is de gevonden goede gok, en hoeveel tijd kost deze zoektocht? voor (opnieuw) een spel met zes kleuren, vier gaatjes en tien rijen, met als geheime code 1025, daadwerkelijk de hierboven bepaalde goede gok uit te voeren, en daarna opnieuw een goede gok te bepalen, 4
5 met alleen consistente gokken, en met niet alleen consistente gokken. Wat is in beide gevallen de gevonden goede gok, wat is het aantal codes dat daarmee (bij een zo slecht mogelijk resultaat) nog mogelijk is, en hoeveel tijd kosten de zoektochten? voor zo veel mogelijk combinaties van aantal kleuren en aantal gaatjes, met vijf rijen, uitgaande van de begintoestand, een optimale gok te bepalen met alleen consistente gokken. Geef de benodigde rekentijden in een overzichtelijke tabel. Je mag de zoektocht afbreken als de rekentijd voor een combinatie groter wordt dan tien minuten. Voor dit laatste experiment moet je in ieder geval code opnemen in de functie doeexperimenten in het bestand main.cc. Een verstandige volgorde voor het aflopen van combinaties (aantal kleuren, aantal gaatjes) is door eerst alle combinaties te nemen waarbij aantalkleuren+aantalgaatjes=2 (één combinatie), dan alle combinaties waarbij aantalkleuren+aantalgaatjes=3, dan alle combinaties waarbij aantalkleuren+aantalgaatjes=4, enzovoort. Een appendix met je complete programma (alle.cc/.h bestanden). Bonus Je kunt een bonus van in totaal 1 punt verdienen, als je na elke uitgevoerde gok met bijbehorend resultaat bijhoudt welke codes nog mogelijk zijn, welke codes dus consistent zijn met alle gokken en resultaten tot nu toe; deze consistente codes gebruikt om de methodes optimalegok en goedegok te versnellen; in je verslag beschrijft hoe je in je programma de consistente codes bijhoudt, en hoe je daarmee de methodes optimalegok en goedegok versnelt. Aanvullingen / tips Eventuele verdere aanvullingen of tips bij de programmeeropdracht komen op de website van het vak Daar is ook een subpagina met onder andere een template voor het L A TEX-verslag. De behaalde cijfers komen te zijner tijd in Blackboard te staan. In te leveren Mail je programma (alle.cc/.h bestanden en Makefile samen in één.zip,.tgz of.tar.gz bestand) en een PDF van je verslag (inclusief het programma!) 5
6 naar Zorg dat het onderwerp van je mail begint met [ALGO], dat scheelt de docent een hoop gezoek. Vermeld overal duidelijk de namen van de makers. Uiterste (!) inleverdatum: donderdag 28 maart 2019, uur. Voor studenten Informatica en Economie: donderdag 28 maart 2019, uur. Voor studenten Bioinformatica: dinsdag 2 april 2019, uur. Als je tot een van deze laatste twee groepen behoort, en gebruik maakt van de latere deadline, vermeld dat dan bij je inzending. Je kunt maximaal twee weken te laat inleveren, maar dan gaat er wel per (deel van een) week een punt van het cijfer af. Zie de website voor de exacte regeling. Normering: werking 5 punten; commentaar en layout 1 punt; modulaire opbouw en OOP 1 punt; verslag 3 punten, bonus 1 punt. Het maximale cijfer is (ook met bonus) een 10. 6
Programmeeropdracht 2 Toernooi Algoritmiek, voorjaar 2019
Programmeeropdracht 2 Toernooi Algoritmiek, voorjaar 2019 Inleiding Al meer dan twintig jaar organiseert Karlijn aan het eind van het jaar een toernooi bij de volleybalclub, het zogenaamde oliebollentoernooi.
Functioneel programmeren
Functioneel programmeren Practicumopgave 2: Mastermind Het doel van deze opgave is het implementeren van het spel Mastermind; zie http://nl.wikipedia.org/wiki/mastermind voor een uitleg. Het spel is klein
Practicumopgave 3: SAT-solver
Practicumopgave 3: SAT-solver Modelleren en Programmeren 2015/2016 Deadline: donderdag 7 januari 2016, 23:59 Introductie In het vak Inleiding Logica is onder andere de propositielogica behandeld. Veel
Introductie in C++ Jan van Rijn. September 2013
Introductie in C++ Jan van Rijn September 2013 Inhoud Classes Overerving Const correctness Standard C++ library Templates Classes Voordelen van classes: Modelleren Modulariteit Informatie afschermen Makkelijk(er)
Containers stapelen. M.L. Koning april 2013
Technische Universiteit Eindhoven 2WH03 - Modelleren C Containers stapelen L. van Hees 0769244 M.L. Koning 0781346 2 april 2013 Y.W.A Meeuwenberg 0769217 1 Inleiding De NS vervoert dagelijks grote hoeveelheden
Tiende college algoritmiek. 26 april Gretige algoritmen
Algoritmiek 01/10 College 10 Tiende college algoritmiek april 01 Gretige algoritmen 1 Algoritmiek 01/10 Muntenprobleem Gegeven onbeperkt veel munten van d 1,d,...d m eurocent, en een te betalen bedrag
Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010
Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar 2009-2010 16 juni, 2010 **BELANGRIJK** 1. Lees eerst de volledige opgave (inclusief
recursie Hoofdstuk 5 Studeeraanwijzingen De studielast van deze leereenheid bedraagt circa 6 uur. Terminologie
Hoofdstuk 5 Recursion I N T R O D U C T I E Veel methoden die we op een datastructuur aan kunnen roepen, zullen op een recursieve wijze geïmplementeerd worden. Recursie is een techniek waarbij een vraagstuk
Datastructuren: stapels, rijen en binaire bomen
Programmeermethoden Datastructuren: stapels, rijen en binaire bomen week 12: 23 27 november 2015 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Inleiding In de informatica worden Abstracte DataTypen (ADT s)
INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCAPPEN
INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCAPPEN voorbeeldexamen NAAM :... OPMERKINGEN VOORAF Je krijgt 3 uur de tijd om de opdrachten voor dit examen uit te voeren. Verder werken aan je oplossing
Dit document bevat informatie over make bij het eerstejaars college Programmeermethoden, Universiteit Leiden, najaar 2010, zie
Dit document bevat informatie over make bij het eerstejaars college Programmeermethoden, Universiteit Leiden, najaar 2010, zie www.liacs.nl/home/kosters/pm/ Met dank aan allen die aan deze tekst hebben
Variabelen en statements in ActionScript
Ontwikkelen van Apps voor ios en Android Variabelen en statements in ActionScript 6.1 Inleiding Als we het in de informatica over variabelen hebben, bedoelen we een stukje in het geheugen van de computer
Recursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40
Recursion Introductie 37 Leerkern 37 5.1 Foundations of recursion 37 5.2 Recursive analysis 37 5.3 Applications of recursion 38 Terugkoppeling 40 Uitwerking van de opgaven 40 Hoofdstuk 5 Recursion I N
Programmeermethoden. Pointers. Walter Kosters. week 10: november kosterswa/pm/
Programmeermethoden Pointers Walter Kosters week 10: 13 17 november 2017 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Pointers Introductie Een pointer is in feite gewoon een geheugenadres. Het geheugen kun
Programmeermethoden. Recursie. week 11: november kosterswa/pm/
Programmeermethoden Recursie week 11: 21 25 november 2016 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Pointers Derde programmeeropgave 1 Het spel Gomoku programmeren we als volgt: week 1: pointerpracticum,
Programmeren (1) Examen NAAM:
Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien) en geef zowel klad als net af. Bij heel wat vragen moet je zelf Java-code schrijven. Hou dit kort en bondig. Je hoeft
Informatica: C# WPO 10
Informatica: C# WPO 10 1. Inhoud 2D arrays, lijsten van arrays, NULL-values 2. Oefeningen Demo 1: Fill and print 2D array Demo 2: Fill and print list of array A: Matrix optelling A: Matrix * constante
DomJudge-Practicum. Open Dag UU
1 Introductie DomJudge-Practicum Open Dag UU Bij veel vakken die je volgt tijdens je studie informatica aan de UU, moet je programmeeropdrachten maken. Soms moet je die inleveren zodat ze door de docent
7 Omzetten van Recursieve naar Iteratieve Algoritmen
7 Omzetten van Recursieve naar Iteratieve Algoritmen Het lijkt mogelijk om elke oplossings-algoritme, die vaak in eerste instantie recursief geformuleerd werd, om te zetten in een iteratieve algoritme
WISKUNDE B -DAG 2002 1+ 1 = 2. maar en hoe nu verder? 29 november 2002
- 0 - WISKUNDE B -DAG 2002 1+ 1 = 2 maar en hoe nu verder? 29 november 2002 De Wiskunde B-dag wordt gesponsord door Texas Instruments - 1 - Inleiding Snel machtverheffen Stel je voor dat je 7 25 moet uitrekenen.
Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET
Visual Basic.NET M. den Besten 0.3 VB. NET Inhoud Voorwoord Deel 1 Visual Basic.NET 1.1 Inleiding...13 1.2 De programmeertaal Visual Basic.NET...14 1.3 Microsoft Visual Basic 2010 Express Edition...15
Vierde college algoritmiek. 1 maart Toestand-actie-ruimte Brute Force
Algoritmiek 2019/Toestand-actie-ruimte Vierde college algoritmiek 1 maart 2019 Toestand-actie-ruimte Brute Force 1 Algoritmiek 2019/Toestand-actie-ruimte Torens van Hanoi Voorbeeld 3: Torens van Hanoi
Modelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 6 december 2013 Terugblik Programma en geheugen Opdrachten Variabelen Methoden Objecten Klasse Programma en geheugen Opdrachten Variabelen zijn gegroepeerd in
Vierde college algoritmiek. 2 maart Toestand-actie-ruimte Exhaustive Search
Algoritmiek 2018/Toestand-actie-ruimte Vierde college algoritmiek 2 maart 2018 Toestand-actie-ruimte Exhaustive Search 1 Algoritmiek 2018/Toestand-actie-ruimte Kannen Voorbeeld 4: Kannenprobleem We hebben
Universiteit Utrecht Faculteit Wiskunde en Informatica. Examen Optimalisering op maandag 18 april 2005, uur.
Universiteit Utrecht Faculteit Wiskunde en Informatica Examen Optimalisering op maandag 18 april 2005, 9.00-12.00 uur. De opgaven dienen duidelijk uitgewerkt te zijn en netjes ingeleverd te worden. Schrijf
Programmeermethoden. Arrays. Walter Kosters. week 7: oktober kosterswa/pm/
Programmeermethoden Walter Kosters week 7: 15 19 oktober 2018 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Nonogrammen Japanse puzzels (Nonogrammen) zien er zo uit: 1 1,1 1 1,1 1 0 1,1 0 1,1 3 7 7 7 7 7 7
Uitwerking tentamen Algoritmiek 10 juni :00 13:00
Uitwerking tentamen Algoritmiek 10 juni 2014 10:00 13:00 1. Dominono s a. Toestanden: n x n bord met in elk hokje een O, een X of een -. Hierbij is het aantal X gelijk aan het aantal O of hooguit één hoger.
Handleiding bij de Booktest Generator
Handleiding bij de Booktest Generator Het programma voor het maken van toetsen bij boeken. (c) 2005/2009 Visiria Uitgeversmaatschappij Twisk Inleiding Onze dank voor het aanvragen van de Booktest Generator.
Hoofdstuk 7: Werken met arrays
Programmeren in Microsoft Visual Basic 6.0, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Marnix Gymnasium Rotterdam, januari 2004 Hoofdstuk 7: Werken met arrays 7.0 Leerdoel
Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI
Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI Vrijdag 22 januari 2010 Toelichting Dit is een open boek tentamen. Communicatie en het gebruik van hulpmiddelen zijn niet toegestaan.
Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python.
1 Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python. Voordat je leert programmeren, moet je jouw pc zo instellen dat
Uitgebreide uitwerking tentamen Algoritmiek Dinsdag 2 juni 2009, uur
Uitgebreide uitwerking tentamen Algoritmiek Dinsdag 2 juni 2009, 10.00 13.00 uur Opgave 1. a. Een toestand wordt bepaald door: het aantal lucifers op tafel, het aantal lucifers in het bezit van Romeo,
Programmeren in Java 3
2 september 2007 voor deeltijdstudenten Kop van Zuid Rotterdam, 3 juni 2007 Even voorstellen Naam: Wessel Oele(31) Docent bij opleiding technische informatica Kamer: I210 (tweede verdieping, links de gang
HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS)
HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS) Vereiste voorkennis Voldoende kennis van het besturingssysteem (in deze handleiding wordt uitgegaan van Windows) De basisprincipes van programmeren Vereiste
Achtste college algoritmiek. 8 april Dynamisch Programmeren
Achtste college algoritmiek 8 april 2016 Dynamisch Programmeren 1 Werkcollege-opgave Dutch Flag Problem Gegeven een array gevuld met R, W, en B. Reorganiseer dit array zo dat van links naar rechts eerst
Practicumhandleiding. (versie 2010)
(versie 2010) Belangrijk! In deze handleiding treft u alle informatie aan die nodig is voor de uitvoering van het practicum. Behalve de organisatie van het practicum zelf en een korte beschrijving van
Opdracht 3: Baanintegratie: Planeet in een dubbelstersysteem
PLANETENSTELSELS - WERKCOLLEGE 3 EN 4 Opdracht 3: Baanintegratie: Planeet in een dubbelstersysteem In de vorige werkcolleges heb je je pythonkennis opgefrist. Je hebt een aantal fysische constanten ingelezen,
AFO 142 Titel Aanwinsten Geschiedenis
AFO 142 Titel Aanwinsten Geschiedenis 142.1 Inleiding Titel Aanwinsten Geschiedenis wordt gebruikt om toevoegingen en verwijderingen van bepaalde locaties door te geven aan een centrale catalogus instantie.
PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd
Inhoudsopgave 1 Inleiding... 1 2 Toekenning- en herhalingsopdrachten (for loop)... 2 2.1 De wet van Ohm... 3 2.2 De spaarrekening... 3 2.3 De transformator... 3 3 Keuze- en herhalingsopdrachten (if, switch,
Tiende college algoritmiek. 13/21 april Gretige Algoritmen Algoritme van Dijkstra
Algoritmiek 017/Gretige Algoritmen Tiende college algoritmiek 13/1 april 017 Gretige Algoritmen Algoritme van Dijkstra 1 Algoritmiek 017/Gretige Algoritmen Muntenprobleem Gegeven onbeperkt veel munten
9. Strategieën en oplossingsmethoden
9. Strategieën en oplossingsmethoden In dit hoofdstuk wordt nog even terug gekeken naar alle voorgaande hoofdstukken. We herhalen globaal de structuren en geven enkele richtlijnen voor het ontwerpen van
Faculteit Economie en Bedrijfskunde
Faculteit Economie en Bedrijfskunde Op dit voorblad vindt u belangrijke informatie omtrent het tentamen. Voordat u met het tentamen t: lees dit voorblad! Tentamen: V&O IV: Programmeren Tentamendatum &
ACCEPETEREN RESERVERING
E-mail Templates In i-reserve is het mogelijk gestandaardiseerde e-mails te verzenden. Het verzenden van dergelijke mails kan volledig worden geautomatiseerd: u maakt dan gebruik van zogenaamde automatische
Een eenvoudig algoritme om permutaties te genereren
Een eenvoudig algoritme om permutaties te genereren Daniel von Asmuth Inleiding Er zijn in de vakliteratuur verschillende manieren beschreven om alle permutaties van een verzameling te generen. De methoden
[14] Functies. Volg mee via 14_Functies-1.py. We beginnen met een eenvoudig voorbeeldje:
[14] Functies Een goede programmeur doet altijd zijn best om zoveel mogelijk aan hergebruik van code te doen. Je probeert in je programma code te gebruiken die iemand anders heeft gemaakt, of code die
Teamhandleiding DOMjudge (versie 2.2.0muKP) 31 mei 2008
judge Teamhandleiding DOMjudge (versie..0mukp) 31 mei 008 /\ DOM DOM judge Inhoudsopgave 1 Inleiding Samenvatting.1 Inlezen en wegschrijven............................... Insturen van oplossingen...............................3
Examen Datastructuren en Algoritmen II
Tweede bachelor Informatica Academiejaar 2016 2017, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele
Algoritmisch Denken: Dodo s Bit Parity
Algoritmisch Denken: Dodo s Opdrachtomschrijving: Jouw opdracht, als je deze accepteert, is om Mimi (een Dodo) te leren een bit parity fout te ontdekken en te herstellen. Leerdoelen: Ik kan een correct
FCB Loopbaanplein in vogelvlucht
FCB Loopbaanplein in vogelvlucht Het FCB Loopbaanplein helpt werknemers verder in hun loopbaan. Of dat nu bij de huidige werkgever is, in de huidige branche of juist daarbuiten. De gratis zelftesten van
Tweede college algoritmiek. 12 februari Grafen en bomen
College 2 Tweede college algoritmiek 12 februari 2016 Grafen en bomen 1 Grafen (herhaling) Een graaf G wordt gedefinieerd als een paar (V,E), waarbij V een eindige verzameling is van knopen (vertices)
Het Eindfeest. Algoritmiek Opgave 6, Voorjaar
1 Achtergrond Het Eindfeest Algoritmiek Opgave 6, Voorjaar 2017 1 Om het (successvol) afsluiten van Algoritmiek te vieren, is er een groot feest georganiseerd. Jij beschikt als enige van je vrienden over
Modelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 27 november 2015 Recursie Objecten Constructors Aanpassen variabelen this keyword Recursie Recursie Recursieve functie roept zichzelf (direct of indirect) aan
Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 7 november 2014, uur
Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 7 november 2014, 8.30-10.30 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde
Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/
Programmeermethoden Recursie Walter Kosters week 11: 20 24 november 2017 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Vierde programmeeropgave 1 De Grote getallen programmeren we als volgt: week 1: pointerpracticum,
Modelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 13 december 2013 Terugblik Fibonacci public class Fibonacci { public static void main(string[] args) { // Print het vijfde Fibonaccigetal System.out.println(fib(5));
Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.
Algemeen C# Variabele Een variabele is een willekeurige waarde die word opgeslagen. Een variabele heeft altijd een datetype ( De soort waarde die een variabele bevat). Datatypes Een datatype is de sort
Programmeren A. Genetisch Programma voor het Partitie Probleem. begeleiding:
Programmeren A Genetisch Programma voor het Partitie Probleem begeleiding: Inleiding Het Partitie Probleem luidt als volgt: Gegeven een verzameling van n positieve integers, vindt twee disjuncte deelverzamelingen
Labo 2 Programmeren II
Labo 2 Programmeren II L. Schoofs K. van Assche Gebruik Visual Studio 2005 om een programma te ontwikkelen dat eenvoudige grafieken tekent. Deze opgave heb je vorig academiejaar reeds in Java geïmplementeerd.
Statistiek voor Natuurkunde Opgavenserie 1: Kansrekening
Statistiek voor Natuurkunde Opgavenserie 1: Kansrekening Inleveren: 12 januari 2011, VOOR het college Afspraken Serie 1 mag gemaakt en ingeleverd worden in tweetallen. Schrijf duidelijk je naam, e-mail
Datastructuren: stapels, rijen en binaire bomen
Programmeermethoden : stapels, rijen en binaire bomen Walter Kosters week 12: 26 30 november 2018 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 en Vierde programmeeropgave Othello programmeren we als volgt:
Access voor beginners - hoofdstuk 25
Access voor beginners - hoofdstuk 25 Handleiding van Auteur: OctaFish Oktober 2014 Werken met Klassemodules Tot nu toe heb ik in de cursus Access veel gewerkt met formulieren, en met procedures en functies.
Examen Datastructuren en Algoritmen II
Tweede bachelor Informatica Academiejaar 2009 2010, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele
Scratch. Gemaakt door: Déjan van Noordt en Leroy van den Driesche Leerlingen HAVO 5 SG Spieringshoek Als onderdeel voor het vak Informatica
Scratch sdas Gemaakt door: Déjan van Noordt en Leroy van den Driesche Leerlingen HAVO 5 SG Spieringshoek Als onderdeel voor het vak Informatica Inhoud Wat is scratch?... 2 Deel 1: Account aanmaken... 2
Tentamen Programmeren in C (EE1400)
TU Delft Tentamen Programmeren in C (EE1400) 3 feb. 2012, 9.00 12.00 Faculteit EWI - Zet op elk antwoordblad je naam en studienummer. - Beantwoord alle vragen zo nauwkeurig mogelijk. - Wanneer C code gevraagd
Examen Datastructuren en Algoritmen II
Tweede bachelor Informatica Academiejaar 2012 2013, tweede zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele
Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft
Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit
Negende college algoritmiek. 15 april Dynamisch Programmeren
Negende college algoritmiek 15 april 2016 Dynamisch Programmeren 1 algemeen Uit college 8: DP: - nuttig bij problemen met overlappende deelproblemen - druk een oplossing van het probleem uit in oplossingen
Project Paper: Tiling problem
Project Paper: Tiling problem Groep 11: Said Hattachi, Ismael el Hadad Hakim, Muttalip Küçük Januari 015 Abstract Dit artikel beschrijft een heuristiek waarmee een veld op een systematische wijze gevuld
Examen Datastructuren en Algoritmen II
Tweede bachelor Informatica Academiejaar 2008 2009, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees elke
Programmeren in C++ Efficiënte zoekfunctie in een boek
Examen Software Ontwikkeling I 2e Bachelor Informatica Faculteit Wetenschappen Academiejaar 2010-2011 21 januari, 2011 **BELANGRIJK** 1. Lees eerst de volledige opgave (inclusief de hints/opmerkingen)!
Cursus Algoritmiek - - najaar 2005
Cursus Algoritmiek - - najaar 2005 Practicumopdracht 10 : Verkeerslichten-simulator N.B. Voordat je deze opdracht maakt, moet je eerst het elektronische cursusevaluatieformulier, dat je op de cursus-web-pagina
HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10
CPP 1 van 10 ADSdt 1-2009 TENTAMENVOORBLAD Voor aanvang van het tentamen s.v.p. de tentamengegevens goed doorlezen om eventuele misverstanden te voorkomen!! Naam student : Studentnummer : Groep : Studieonderdeel
Mastermind met acht kleuren
Geschreven voor het vak: Wiskunde gedoceerd door H. Mommaerts Onderzoekscompetentie Mastermind met acht kleuren Auteurs: Tom Demeulemeester Pieter Van Walleghem Thibaut Winters 6LWIi 22 april 2014 1 Inleiding
Factuur Lay-out / Factuur Template
Factuur Lay-out / Factuur Template In i-reserve is het mogelijk facturen te verzenden. De facturen worden als pdf bijlage per e-mail naar de klant verzonden. In deze tutorial wordt beschreven hoe u een
Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni 2011
Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar 2010-2011 21 juni 2011 **BELANGRIJK** 1. Lees eerst de volledige opgave (inclusief
Tweede Programmeeropgave Numerieke Wiskunde 1 De golfplaat Uiterste inleverdatum : vrijdag 16 mei 2003
Tweede Programmeeropgave Numerieke Wiskunde 1 De golfplaat Uiterste inleverdatum : vrijdag 16 mei 2003 I Doelstelling en testcase In deze programmeeropgave zullen we een drietal numerieke integratiemethoden
Vakgroep CW KAHO Sint-Lieven
Vakgroep CW KAHO Sint-Lieven Objecten Programmeren voor de Sport: Een inleiding tot JAVA objecten Wetenschapsweek 20 November 2012 Tony Wauters en Tim Vermeulen [email protected] en [email protected]
Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft
I ' Tentamen Objectgeorienteerd Programmeren TI 1200 1 februari 2012 9.00-12.00 Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit
Aanmaningen in CASHWin
(NB.) Gebruikers van CASH Financieel of CASH CompactPro kunnen kiezen uit twee mogelijkheden om aanmaningen te maken. In CASH Compact is alleen de 'handmatige' functie opgenomen. CASH beschikt over twee
Inleiding programmeren
Inleiding programmeren Docent: José Lagerberg Assistenten: Robin de Vries, Jordy Perlee, Dimitri Belfor, Stephen Swatman, Erik Kooistra, Daan Kruis, Daniel Louwrink Cursusinformatie: https://staff.fnwi.uva.nl/j.m.lagerberg
Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.
HOOFDSTUK 3 3.1 Stapsgewijs programmeren In de vorige hoofdstukken zijn programmeertalen beschreven die imperatief zijn. is het stapsgewijs in code omschrijven wat een programma moet doen, net als een
Het omzetten van reguliere expressies naar eindige automaten, zie de vakken Fundamentele Informatica 1 en 2.
Datastructuren 2016 Programmeeropdracht 3: Patroonherkenning Deadlines. Woensdag 23 november 23:59, resp. vrijdag 9 december 23:59. Inleiding. Deze opdracht is gebaseerd op Hoofdstuk 13.1.7 in het boek
Combinatoriek groep 2
Combinatoriek groep 2 Recursie Trainingsdag 3, 2 april 2009 Homogene lineaire recurrente betrekkingen We kunnen een rij getallen a 0, a 1, a 2,... op twee manieren definiëren: direct of recursief. Een
Tiende college algoritmiek. 14 april Dynamisch Programmeren, Gretige Algoritmen, Kortste Pad met BFS
Algoritmiek 2016/Dynamisch Programmeren Tiende college algoritmiek 14 april 2016 Dynamisch Programmeren, Gretige Algoritmen, Kortste Pad met BFS 1 Algoritmiek 2016/Dynamisch Programmeren Houtzaagmolen
Handleiding helpdesk. Datum: 08-10-2014 Versie: 1.0 Auteur: Inge van Sark
Datum: 08-10-2014 Versie: 1.0 Auteur: Inge van Sark Inhoudsopgave Inhoudsopgave... 2 1. Beheer helpdesk... 3 1.1. Settings... 3 1.2. Applicaties... 4 1.3. Prioriteiten... 5 1.4. Gebruik mailtemplates...
