{"text_format":"1","workbook":"xlsx","n_sheets":2,"sheets":["Blad1","Toelichting"],"not_rendered":{"charts":0,"images":6,"macros":1,"external_links":0,"defined_names":8,"comments":0,"pivot_tables":0},"unopened":[],"bounds":{"document_bytes":16777216,"sheet_cells":100000,"rows_first":2000,"rows_last":500,"rows_between":2000,"halvings":0,"cell_chars":16384,"cell_head_chars":4096},"cells_cut":0,"cells_raw":0,"read":"whole","date_system":"1900"}

{"sheet":"Blad1","index":0,"n_rows":27,"n_cols":29,"rows_kept":27,"cut":false,"hidden":false,"merged":[[19,14,19,15]]}
[]
[null,null,null,"Project:","Constructeurs programmeren",null,null,"Versie   ","1.0",null,null,null,null,null,null,null,null,null,null,"klik op knop: Los Sudoku op"]
[null,null,null,"Onderdeel:","Leer VBA door oefening - met Sudoku"]
[null,null,null,"Datum:","2020-03-28"]
[]
[]
[null,null,null,null,null,null,null,null,"De start",null,null,null,null,null,null,null,null,null,null,"De oplossing"]
[]
[null,"Er zijn veel manieren om programmeren te leren. Voor alle programmaartalen",null,null,null,null,null,null,null,1,2,3,4,5,6,7,8,9,null,null,1,2,3,4,5,6,7,8,9]
[null,"geldt dit. Verzin iets, een klein probleempje en vertaal dit naar een programma.",null,null,null,null,null,null,1,null,5,null,3,6,null,null,null,null,null,1,8,5,2,3,6,1,7,9,4]
[null,"In Excel en VBA er legio mogelijkheden, zoals:",null,null,null,null,null,null,2,9,null,4,null,null,null,null,null,null,null,2,9,3,4,7,8,5,2,6,1]
[null,null,null,null,null,null,null,null,3,null,null,null,null,2,null,null,5,3,null,3,6,1,7,9,2,4,8,5,3]
[null,"1) Maak een functie die een getal in een cel pakt en er 2 bij opteld.",null,null,null,null,null,null,4,4,null,1,null,null,8,5,null,null,null,4,4,2,1,6,7,8,5,3,9]
[null,"2) Maak een functie die een selectie getallen sommeerd en elk getal deelt door deze som",null,null,null,null,null,null,5,null,null,null,4,null,2,null,null,null,null,5,3,7,9,4,5,2,6,1,8]
[null,"3) Geef cellen een gewenste lay-out op basis van de inhoud.",null,null,null,null,null,null,6,null,null,8,1,null,null,4,null,7,null,6,5,6,8,1,9,3,4,2,7]
[null,"4) Neem functie 1) en maak deze zo dat het gebruik van letters of lege inhoud geen fout geeft",null,null,null,null,null,null,7,2,9,null,null,3,null,null,null,null,null,7,2,9,6,8,3,7,1,4,5]
[null,null,null,null,null,null,null,null,8,null,null,null,null,null,null,3,null,6,null,8,1,8,5,2,4,9,3,7,6]
[null,"5) Of neem een eenvoudig spel, sudoku en ga aan de slag.",null,null,null,null,null,null,9,null,null,null,null,1,6,null,8,null,null,9,7,4,3,5,1,6,9,8,2]
[]
[null,"Het gebruik een kleine en simpele problemen zijn erg geschikt om specifieke onderdelen",null,null,null,null,null,null,"Aantal gegeven getallen is:",null,null,null,null,null,{"$f":"COUNT(J10:R18)","v":26}]
[null,"van het programmeren te leren."]
[null,"Klein -> dan is er heel snel resultaat en kun je naar de volgende oefening",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Tijd nodig voor de bepaling van de oplossing:",null,null,null,null,null,null,null,null," 0,48 seconden"]
[null,"Simpel -> dan kun je je volledig richten op het programmeren zelf en hoef je niet naar",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Het aantal verschillende toegepaste getallen:",null,null,null,null,null,null,null,null," 21.140 stuks"]
[null,"een oplossing van het probleem te zoeken."]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"\"Het aantal verschillende toegepaste getallen\" is een teller die aangeeft"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"hoeveel verschillende getallen er op de lege plaatsen zijn geplaatst om"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"uiteindelijk tot de oplossing te komen."]

{"sheet":"Toelichting","index":1,"n_rows":78,"n_cols":22,"rows_kept":78,"cut":false,"hidden":false,"merged":[]}
[]
[null,null,null,"Project:",{"$f":"Project","v":"Constructeurs programmeren"},null,null,"Versie   ",{"$f":"Versie","v":"1.0"}]
[null,null,null,"Onderdeel:",{"$f":"Onderdeel","v":"Leer VBA door oefening - met Sudoku"}]
[null,null,null,"Datum:",{"$f":"Datum","v":"2020-03-28"}]
[]
[]
[]
[]
[null,null,null,null,null,null,null,null,"De start positie",null,null,null,null,null,null,null,null,null,null,null,null,"De oplossing"]
[null,"Sudoku"]
[null,"Sudoku is een Japanse puzzel waarbij een raster van 9 x 9 wordt gebruikt."]
[null,"In het raster/veld zijn enkele getallen geplaatst, zogenaamde hints. Met deze"]
[null,"hints moet de puzzel worden opgelost. De complexiteit van de puzzel neemt toe"]
[null,"als het aantal hints wordt beperkt. De puzzel wordt dus eenvoudiger met meer hinst."]
[null,"In het voorbeeld hiernaast zijn 26 hints gegeven. Daarnaast is de oplossing gegeven."]
[]
[null,"In het raster moeten cijfers 1 t/m 9 worden geplaatst. In ekle kolom, rij en klein veldje."]
[null,"Er zijn 9 kleinen veldjes in het raster van 9x9. Deze kleine veldjes zijn aangegeven met dikke"]
[null,"lijnen."]
[]
[null,null,null,null,null,null,null,null,"De beschouwde kolom 2",null,null,null,null,null,null,null,null,null,null,null,null,"De beschouwde rij 1"]
[null,"Wat zijn de regels"]
[null,"1) In een kolom moeten de cijfers 1 t/m 9 worden geplaatst en elk getal mag maar 1x voorkomen."]
[null,"2) In een rij moeten de cijfers 1 t/m 9 worden geplaatst en elk getal mag maar 1x voorkomen."]
[null,"3) In elk veldje (3x3) moeten de cijfers 1 t/m 9 worden geplaatst en elk getal mag maar 1x voorkomen."]
[]
[null,"Voor regel 1 t/m 3 zie ook naastgelegen figuren."]
[]
[null,"Er zijn verschillende strategien voor het oplossen van een Sudoku. Ga zelf aan de slag en probeer het."]
[]
[]
[]
[null,"Sudoku in een programma",null,null,null,null,null,null,"Het beschouwde veldje (1,1) - (3,3)"]
[null,"Bovenstaande uitgangspunten en regels moeten nu worden omgezet in een stukje VBA-code."]
[null,"Daarvoor is het handig om de verschillende stappen op papier te zetten en te bepalen wat de"]
[null,"beste route is om tot een oplossing te komen."]
[]
[null,"1) We hebben een raster van 9x9 nodig met daarin de hints"]
[null,"2) We moeten een of meerdere functies hebben die controleren of een getal (1 t/m 9) op"]
[null,"     locatie mag worden geplaatst. Zoals aangegeven in de vlakken."]
[null,"     Bijvoorbeeld: mag het getal 8 in locatie (1,3) ( rij,kolom) worden geplaatst"]
[null,"     Het antwoord is nee, want in de kolom 3 staat op rij 6 al een 8. Enz."]
[null,"3) Bepaal een locatie in het raster waar nog een getal ontbreekt"]
[null,"4) We moeten bijhouden als een een getal kan worden geplaatst, het getal ook wordt geplaatst"]
[null,"     en wordt opgenomen in het raster."]
[]
[null,"5) Ga rij voor rij af, kolom voor kolom, en bepaal of de locatie vrij is. Ja, probeer een getal te plaatsten"]
[null,"     Vul het getal 1 t/m 9 en begin bij 1. Als 1 niet kan worden geplaatst, neem de volgende de 2. "]
[null,"     Als de 2 kan worden geplaatst, plaats deze en ga naar de volgende lege locatie en begin opnieuw"]
[null,"     met het plaatsen van getallen 1 t/m 9. "]
[null,"6) Als je vast loopt, je kunt geen getallen meer plaatsen terwijl er nog lege locaties zijn ga een stap"]
[null,"     terug en plaats een ander getal in een reeds gevulge locatie. Ga weer verder met punt 5."]
[]
[null,"Deze procedure noemen we een algoritme. Dit is een omschrijving van de oplossingsmethode voor een"]
[null,"probleem. Je kunt daarbij verschillende onderdelen ook als deelproblemen beschouwen en voor dit"]
[null,"deelprobleem en apart algoritme bepalen, bijvoorbeeld voor punt 2."]
[null,"Met behulp van het algoritme wordt de VBA-code geschreven. Ook dit kan in delen. Maak voor elke stap"]
[null,"een aparte procedure. "]
[]
[]
[null,"Een oplossing"]
[null,"De oplossing generator is in staat een oplossing te vinden voor een raster zonder hints. Maar dit is natuurlijk niet de bedoeling."]
[null,"Overigens zijn er dan verschillende oplossingen mogelijk. Voor een goede Sudoku is er maar één oplossing voor "]
[null,"een specifieke set hints. "]
[null,"Dus 0 hints is niet goed, zijn 3 hints wel goed? Nee, een persoon kan een Sudoku met 3 hinst ook niet oplossen, er zijn teveel onbekenden."]
[null,"Maar hoeveel hints zijn er dan minimaal nodig? "]
[]
[null,"Deze vraag houdt wiskundigen al enige tijd bezig. Ze hebben er een studie van gemaakt; Wat is het minimaal aantal benodigde"]
[null,"hints om een Sudoku op te lossen. "]
[null,"Zeer recent is het Gary McGuire, Bastian Tugemann en Gilles Civario gelukt om hier een antwoord op"]
[null,"te vinden. Er moeten minimaal 17 hints zijn om een Sudoku op te kunnen lossen. Hoe hebben ze dit opgelost?"]
[null,"Het eerste wat ze hebben gedaan is het bepalen van de hoeveel verschillende Sudoku's. Het blijjkt dat dit er heel veel zijn,"]
[null,"namelijk: 6.670.903.752.021.072.936.960"]
[null,"Voor de studie naar het minimale aantal hints was het dus niet mogelijk om alle mogelijheden met de computer te bepalen."]
[null,"Dit zouden de wiskundigen in hun leven niet lukken. Daarom hebben ze allerlei regels bedacht om het aantal mogelijkheden"]
[null,"te beperken. Met allerlei wiskundige onderbouwingen hebben ze aardig wat regels kunnen bepalen waarmee het aantal"]
[null,"mogelijke oplossingen flink is gedaald. Vervoglens hebben ze dit geprogrammeerd en is met brute kracht doorgeakkerd."]
[null,"Uiteindelijk heeft dit bewijs toch een aantal jaren geduurd voordat het zo ver was."]