Toon posts:

[Visual Basic 6.0] Probleem met random array

Pagina: 1
Acties:
  • 123 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben bezig geweest met een programma dat sudoku puzzels kan maken, maar ik loop een beetje vast.

Even een heel korte uitleg van het spel. Bij sudoku mag elk cijfer (van 1 tot 9) maar één keer per rij, één keer per kolom en één keer per blokje van 3 bij 3 zitten.

Ik heb dus geprobeerd dit met Random te laten genereren. Alleen loopt ie bij rij 4 of 5 vast omdat er geen oplossing meer is (net ongelukkig gerandom'd in de rijen ervoor).

Als poging dit op te lossen heb ik variabele q verzonnen die na 10 pogingen de hele rij opnieuw random't maar dat werkt ook niet helaas.

Wie weet wat ik het beste hieraan kan doen? Het zou best kunnen dat mijn code volledig onlogisch is, maar volgens mij zit het wel ok in elkaar.

Alvast bedankt,

Bobby Rond

Code stuur ik je per e-mail als u wenst

[ Voor 94% gewijzigd door Verwijderd op 06-02-2006 02:42 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je pakt het helemaal verkeerd aan. Je moet juist de cijfers 0-9 (1-9?) random verdelen over random posities en niet random posities met random cijfers vullen.

[edit]
Aanvullig: Voor het gebruik van GoTo ga je naar de hel, maar dat wist je neem ik aan al? >:)

[ Voor 26% gewijzigd door RobIII op 06-02-2006 01:52 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-04 17:49

NMe

Quia Ego Sic Dico.

Sowieso kun je met puur random getallen en posities nooit een Sudoku-puzzel maken of oplossen, simpelweg omdat er meer logica achter zo'n puzzel zit dan "zomaar wat invullen". En zoals RobIII al zegt is "goto" evil, ik jouw geval zou je beter naar Select/Case kunnen kijken.

Zou je trouwens die gigantische lap code weg willen halen en er een korte samenvatting voor in de plaats willen zetten? Het is hier in P&W gangbaar om relevante code te posten, en je maakt mij niet wijs dat al die 270 regels relevant zijn voor je probleem. In dit geval kun je zelfs beter gewoon textueel vertellen wat je gedachtengang is. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 11-04 03:15
Ben je bekend met The Daily WTF? :o

Maar serieus: er zijn twee manieren om sudoku's te genereren en voor elk van beide heb je in principe een (goed werkende) procedure die kan controleren of een grid nul, één of meerdere oplossingen heeft.

De eerste methode is dan met een leeg grid te beginnen en cijfers op lege posities proberen in te vullen, totdat er een geldige puzzel (met slechts één oplossing) ontstaat. Als de puzzel niet meer oplosbaar is, moet je dus een stap terug doen.

De tweede methode is beginnen met een ingevuld grid en daar cijfers op willekeurige posities uit weghalen, totdat dit er toe leidt dat een puzzel meer dan één oplossing heeft. Met deze methode is het onmogelijk een onoplosbare puzzel te maken, omdat je met een geldige oplossing begint. Voordeel is dus dat je procedure altijd in een beperkt aantal stappen tot een puzzel leidt, maar je hebt dan wel het bijkomende probleem dat je een geldige oplossing moet kunnen genereren (daar heb ik ook nog wel tips voor, als je geïnteresseerd bent ;)).

Voor beide methoden moet je dus in ieder geval een puzzel kunnen oplossen - begin daar eerst maar eens mee. ;)
RobIII schreef op maandag 06 februari 2006 @ 01:44:
Je pakt het helemaal verkeerd aan. Je moet juist de cijfers 0-9 (1-9?) random verdelen over random posities en niet random posities met random cijfers vullen.
Waarom? Het kan toch allebei? Natuurlijk is twee dezelfde cijfers in een blok, rij of kolom zetten niet zo zinnig, maar je moet toch een controle op geldigheid uitvoeren, dus dat maakt geen fundamenteel verschil.

Verwijderd

[rml][ c++] stelsel van vergelijking[/rml]
Wellicht dat daar nog nuttige info in staat, verder is er vrij veel te vinden op het web kwa sudoku puzzels en ze programmeren (het gaat iig niet random zoals NMe al aangeeft :P )

http://www.visualbasicforum.com/ is ook nogal het e.e.a. te vinden, volgens mij was er ook ergens een downloadbare voorbeeld in VB vorm (moet je wel reggen daaro) :)

Verwijderd

Topicstarter
Roblll> Ik weet het van de GoTo's, dat wil ik ook in aparte Subjes onderbrengen, had alleen ff geen rust in m'n kop en had het ff snel zo ge copy paste.

Ik werk van links naar rechts en van boven naar beneden.
De eerste regel genereert ie altijd probleemloos, alleen loop je op een gegeven moment bij regel 5 idd vast.

Ik vul dus random cijfers in, maar niet op random posities.

LightEye, bedankt voor de links, ik ga even verder speuren. De rest ook bedankt voor de info. Ik plaats wel een extra post zodra ik er niet meer uitkom (wordt net zo niet gewaardeerd als een GoTo, I know...)

Leuk Weetje (ahum) GoTo lijkt verdomd veel op GoT, het een zo verschrikkelijk, het ander zo leuk...
Slecht één klein o'tje die dat verschil maakt...
Pagina: 1