Sudoku Py / C++11 / D?
Era Scarecrow
rtcvb32 at yahoo.com
Tue Aug 21 11:03:54 PDT 2012
On Tuesday, 21 August 2012 at 15:55:08 UTC, maarten van damme
wrote:
> Thank you very much, this makes everything more clearer. I'm
> not very familiar with binary operators so the comments help
> out a lot. Would you mind it if I shamelessly copy your
> solution of using shorts to store possibilities in?
Binary operators are fun :) Once you get the hang of it you know
exactly what you're doing. Think of AND = Keep only, OR = Set,
Xor = switch state. so.
AND &
source 0 0 1 1
data 0 1 0 1
result 0 0 0 1
OR |
source 0 0 1 1
data 0 1 0 1
result 0 1 1 1
Xor ^
source 0 0 1 1
data 0 1 0 1
result 0 1 1 0
>> Was that sarcasm? My own code only uses copying when it's
>> working in the next section of brute force, otherwise it's all
>> referenced.
> No, that wasn't sarastic. If you look at my last code you see
> that I "compose" the squares using something like [....] ~
> [.....] ~ [.....] Using a foreach loop and copying the values
> was 10 times faster...
Curious. With fixed array sizes it should do a bulk memory copy,
unless you are going from static/fixed to dynamic. Also curious
is in my code it allowed me to do a forced struct copy (move?)
when I found a success and just copied the result to the current
structure. I'll post my two revisions up later.
>> I only use exceptions twice and both when it would be unable
>> to find a solution; I suppose I can try putting nothrow on
>> everything and return a bool if it had an error for solving,
>> or when it had to, inside a structure. Mmmm... I'll give it a
>> try.
> Yes but when your solver reaches a solution that is wrong, you
> get a whole "branch" of numbers falling of, all throwing a
> "broken sudoku" exception. It will rarely be called once.
True. I already tried removing it, and curiously enough the code
performs 10x-200x faster. Except all my debugging statements now
fail since they aren't nothrow :P
>> Not normal but it can be arranged. :p
>
> But I used it in my getRegion code where I do simple
> calculations on the contents of that array. It is slower
> there...
More information about the Digitalmars-d-learn
mailing list