Sudoku Py / C++11 / D?
bearophile
bearophileHUGS at lycos.com
Fri Aug 24 15:30:56 PDT 2012
maarten van damme:
> http://dpaste.dzfl.pl/8a2aef5b
Some suggestions about the code:
- Put a space before and after operators, after a commas and
semicolon, around "..", etc.
- Compile with "-wi -property";
- Try to add pure/const/nothrow/immutable where possible;
- Minimize the need of cast();
- Sometimes it's useful to localize the imports (stdio e datetime
are used just by the main);
- Minimize the usage of magical constants like 0b10_0000_0000,
possibly define it only once. And often adding underscores inside
long numbers is handy (here I have put them every 4 digits
because it's binary);
- Repeating things like "short[81]" in many function signatures
is quite bad. Better to define a global type with alias (or
someday better with std.typecons.Typedef when it will work), and
then use it;
- Generally it's better to use unsigned values for array indexes;
- If you look for performance and your program is single thread,
then it's better to annotate global variables with __gshared;
- This:
ubyte[81] taken = false;
is better than this:
ubyte[81] taken;
taken[] = false;
This is your code modified, it's also a little faster:
http://dpaste.dzfl.pl/06510dcd
I will try to replace the int[] of cachedBitsetToRange with
something more static, to reduce indirection.
Bye,
bearophile
More information about the Digitalmars-d-learn
mailing list