'Super' Sudoku, vervolg

  • Onderwerp starter Onderwerp starter snb
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

snb

Verenigingslid
Lid geworden
12 jun 2008
Berichten
20.223
Vorig jaar hadden we een draad over de Sudoku in NRC en hoe die met VBA op te lossen is.

Ik had de indruk dat het nog wel wat eenvoudiger kon.
Mijn oorspronkelijke aanpak ging uit van de matrix als 2-dimensionele array.
Dat maakt de conversie naar rijen, kolommen en vakken onnodig ingewikkeld.
Ik heb nu de matrix vertaald naar een array met 99 elementen: voor iedere cel 1.

Mijn aanpak bestaat nu uit geneste recursie:
- de analyse per rij, kolom, vak en binnenvak voor ieder cijfer van 1 t/m 9
- verwijdering van mogelijke getallen uit cellen die in hetzelfde gebied voorkomen als een cel met een enkele waarde
- de heraanroeping van de verwijdermacro bij aantreffen van een cel met enkele waarde.

De suggestie van EVR (de 'buiten'vakken) in de vorige draad blijkt overbodig. De huidige 3 routines blijken in staat alle Sudoku's op te lossen.

Ik heb de pagina op mijn website aangepast, meer uitleg toegevoegd en een nieuw bestand met simpeler code ophaalklaar gemaakt.
 

Bijlagen

Altijd leuk om vereenvoudiging te zien, hoewel ik nu lees dat mijn suggestie overbodig blijkt te zijn...:D
Dan toch 1 tje waar mn suggestie niet overbodig is

1707223910230.png
 
met:
Code:
c05 = "11_15_19_51_55_59_91_95_99 12_13_14_52_53_54_92_93_94 16_17_18_56_57_58_96_97_98 21_31_41_25_35_45_29_39_49 61_71_81_65_75_85_69_79_89"
Sheet1.Names.Add "sb", Split(c01 & c02 & c03 & c04 & c05), 0
en
Code:
Sub M_snb_1()
   For j = 0 To 35 '30

Lukt het wel
Overigens niet met alle op deze site genoemd (nummer 19 niet iig)
Lastige sudokus
 
Ha EvR

De versie die ik op mijn website had staan deed het ook vlekkelings met nr. 19, zonder die extra 'buitenvakken'.
Dat geldt ook voor het exemplaar dat je hierboven plaatste.
Bij de vertaling naar de huidige versie moet ik blijkbaar iets over het hoofd hebben gezien.
Ik ga zoeken en kom hier terug.
 
Laatst bewerkt:
@EvR

De nieuwe versie staat op de website.
Het aantal te testen vakken is gelijk gebleven.
Sudoku 19 wordt opgelost en jouw extra sudoku als nr. 45 toegevoegd.
De denk-omissie (want dat was het euvel) is hiermee hopelijk hersteld.

De uitleg moet daarom ook nog even aangepast worden.
 
Volgens mij nog niet helemaal waterdicht, probeer de sudoku in bijgevoegd bestandje maar eens ((out of stack space) met c05 toegevoegd uit post#3 doet ie het wel, maar wellicht is het ook zonder te ondervangen)
 

Bijlagen

Doet het hier vlekkeloos

In de bijlage heb ik in c04 ook de 'buiten'vakken opgenomen.
In de macro snb_1 gebruik ik ze echter niet, want ik heb de lus beperkt van 0 tot 30. (je kunt natuurlijk zelf testen wat het verschil is als je de lus tot 35 laat lopen). Ik ondervind geen problemen asl de lus tot 30 beperkt is.
In de huidige vorm van de macro kun je eenvoudig een onderdeel van de macro, bijv. routine 3, uitschakelen (markeren als commentaar). Dan blijkt dat alleen sudoku nr. 18 niet opgelost wordt.

Dank voor het kritisch meekijken.
De volgens stap wordt natuurlijk het ontwerpen van de Sudoku.
 

Bijlagen

Top, geen problemen met bovenstaand bestandje (had dit wel met degene als DL van jouw website...(?))
Ben benieuwd naar het vervolg 👍
 
Dat ga ik dan meteen snel aanpassen.

Heb je nog suggesties voor het vervolg ?
 
Suggestie voor/bij het ontwerpen van de Sudoku's:
Keuze uit verschillende moeilijkheidsniveaus
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan