Hallo Pitufo,
Even in de marge: ook ik heb me destijds aandachtig gebogen over deze kwestie. Wat ik me daarvan herinner is dat het met stukjes en beetjes is gegaan maar je uiteindelijk aan 2 verschillende methodes bent geraakt (van Bart en van bibi dus) die beide alle mogelijke singles te pakken kregen.
Niet alle mogelijke singles, dat heb ik ondervonden, en daarmee ook mijn vraag nu.
Ik zie bv. dat in "Set LB = Sheets("Sudoku").Range("D4")" de D4 veeleer D2 zal moeten zijn.
Ja, die code van de eerste werkende versie heb ik er laten staan als voorbeeld, niet als werkende code. Dan had ik bereiken moeten aanpassen en veel weg-gommen
.
Cellen samenvoegen zal er ook nooit mee gebeuren want er wordt enkel gecheckt op het aantal ingevulde cellen binnen een 3x3.
Dat gebeurde in de Sub BereikAanpassen(
c2, i), waar de variabele
c2 en
i uit de Sub zoekenBart_Raster() werden gebruikt.
Om het even bij je specifieke vraag te houden: elke 3x3 valt integraal binnen een 9x9. Dus als een cijfer slechts één maal binnen een 9x9 valt zal het automatisch ook binnen een 3x3 vallen, wat een 9x9-controle m.i. nutteloos maakt. Of zie ik eea totaal verkeerd?
Als een cijfer slechts eenmaal binnen een 9 x 9 valt, dan staat hij ook maar 1 maal in een van de negen 3 x 3.
Als een cijfer in twee verschillende 3 x 3 voorkomt, dan is er geen uniek cijfer voor de 9 x 9, wel voor twee 3 x 3's.
En zolang er een keuze is, kan je niet met zekerheid stellen welke nu juist is.
Neem gewoon de 3. Deze komt in de eerste 3 x 3 slechts 1 x voor maar ook in andere 3 x 3.
De Sub zoekenBart_Raster() scant dus elke 3 x 3 van de sudoku, als hij daar een 3 x 3 (samengevoegde worden overgeslaan) vindt met maar 1 cel met een cijfer , dan slaat hij aan en geeft die door naar Sub BereikAanpassen(
c2, i), die de cellen binnen die 3 x 3 samenvoegt, kleur en andere opmaak aanpast.
Hij kijkt dus niet of er in de 9 x 9 waartoe deze 3 x 3 behoort een "Single" voor de 9 x 9 staat.
In elk geval: altijd bereid tot samen verder nadenken
Waarvoor dank
Trouwens, je code werkt perfect
. dit is de aanvulling van zoeken in 3 x 3, zoeken in rijen, zoeken in kolommen waar ik naar zocht. Maar ik geraakte er enkel met veel If-then's loops en 9 variabelen (en een HDD vol code
)
Het is niet ECHT de bedoeling om de Sudoku nog verder te laten oplossen door de Macro's, want je kan daar heel ver in gaan.
De volgende stap zou zijn om te zoeken naar 2 identieke overblijvende cijfers.
Bijvoorbeeld:
in een 3 x 3 in een 9 x 9 staan nog enkel een 2 en een 4. Idem in een tweede 3 x 3 van diezelfde 9 x 9.
Dan mag je alle andere 2's en 4's in de hele 9 x 9 verwijderen, wat weer perspectieven opent voor zoeken op rij, kolom, raster.
Het zoeken naar 2 overgebleven identieke kan ook per rij. Een rij is dan wel een rij van 9 stuks 3 x 3's.
Idem voor kolommen.
En zo zijn er nog trucjes die je als Sudoku-oplosser toepast, maar die mogelijk te complex zijn om hier met code op te lossen.
Ik ga dit integreren in mijn grootboek sudoku
en dan zal ik het nogmaals in bijlage gooien.
Een tevreden..
SoftAid