# HG changeset patch # User David Bryant # Date 1323675187 -37800 # Node ID 1da160a2c3738f7f2ecd6ba2e4b80c82d6154644 # Parent 89016abde9fe090de7a8a38b6db437522bdcf289 Chess checkpoint diff -r 89016abde9fe -r 1da160a2c373 builder.d --- a/builder.d Fri Sep 09 17:17:06 2011 +0930 +++ b/builder.d Mon Dec 12 18:03:07 2011 +1030 @@ -515,7 +515,7 @@ writefln("Object %s", mPath); scope cmd = new StringFormatter; - cmd.format("dmd -m64 -c"); + cmd.format("dmd -m32 -c"); foreach (path; Global.bundlePaths) { cmd.format(" -I%s", path); } @@ -601,7 +601,7 @@ writefln("Program %s", mPath); scope cmd = new StringFormatter(); - cmd.format("dmd -m64 -L-L%s", std.path.join(Global.buildPath, "lib")); + cmd.format("dmd -m32 -L-L%s", std.path.join(Global.buildPath, "lib")); cmd.format(" -of%s %s", mPath, mObject.mPath); // add the libraries we need diff -r 89016abde9fe -r 1da160a2c373 configure.d --- a/configure.d Fri Sep 09 17:17:06 2011 +0930 +++ b/configure.d Mon Dec 12 18:03:07 2011 +1030 @@ -63,7 +63,7 @@ // compile builder into bin_path writefln("Building the builder"); - int ret = system(format("dmd -m64 -w -wi %s -O -of%s", + int ret = system(format("dmd -m32 -w -wi %s -O -of%s", std.path.join(sourcePath, "builder.d"), std.path.join(binPath, "builder"))); if (ret) { writefln("Error - builder failed to compile"); diff -r 89016abde9fe -r 1da160a2c373 doodle/main/prog/chess.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doodle/main/prog/chess.d Mon Dec 12 18:03:07 2011 +1030 @@ -0,0 +1,96 @@ +import std.stdio; +import std.traits; + +enum Piece { + King, Queen, Rook, Bishop, Knight, Pawn +} + +enum Color { + White, Black +} + +string unicode(Color color, Piece piece) { + string[6][2] table = + [ + [ "\u2654", "\u2655", "\u2656", "\u2657", "\u2658", "\u2659" ], + [ "\u265A", "\u265B", "\u265C", "\u265D", "\u265E", "\u265F" ] + ]; + return table[color][piece]; +} + +struct Square { + this(Color color_, Piece piece_) { + occupied = true; + color = color_; + piece = piece_; + } + + bool occupied = false; + Color color; + Piece piece; +} + +enum File { + _A, _B, _C, _D, _E, _F, _G, _H +} + +enum Rank { + _1, _2, _3, _4, _5, _6, _7, _8 +} + +struct Board { + Square opCall(File f, Rank r) const { + return squares[f][r]; + } + +private: + Square[8][8] squares = + [ + [ Square(Color.White, Piece.Rook), Square(Color.White, Piece.Pawn), Square(), Square(), Square(), Square(), Square(Color.Black, Piece.Pawn), Square(Color.Black, Piece.Rook) ], + [ Square(Color.White, Piece.Knight), Square(Color.White, Piece.Pawn), Square(), Square(), Square(), Square(), Square(Color.Black, Piece.Pawn), Square(Color.Black, Piece.Knight) ], + [ Square(Color.White, Piece.Bishop), Square(Color.White, Piece.Pawn), Square(), Square(), Square(), Square(), Square(Color.Black, Piece.Pawn), Square(Color.Black, Piece.Bishop) ], + [ Square(Color.White, Piece.Queen), Square(Color.White, Piece.Pawn), Square(), Square(), Square(), Square(), Square(Color.Black, Piece.Pawn), Square(Color.Black, Piece.Queen) ], + [ Square(Color.White, Piece.King), Square(Color.White, Piece.Pawn), Square(), Square(), Square(), Square(), Square(Color.Black, Piece.Pawn), Square(Color.Black, Piece.King) ], + [ Square(Color.White, Piece.Bishop), Square(Color.White, Piece.Pawn), Square(), Square(), Square(), Square(), Square(Color.Black, Piece.Pawn), Square(Color.Black, Piece.Bishop) ], + [ Square(Color.White, Piece.Knight), Square(Color.White, Piece.Pawn), Square(), Square(), Square(), Square(), Square(Color.Black, Piece.Pawn), Square(Color.Black, Piece.Knight) ], + [ Square(Color.White, Piece.Rook), Square(Color.White, Piece.Pawn), Square(), Square(), Square(), Square(), Square(Color.Black, Piece.Pawn), Square(Color.Black, Piece.Rook) ] + /* + [ Square(Color.White, Piece.Rook), Square(Color.White, Piece.Knight), Square(Color.White, Piece.Bishop), Square(Color.White, Piece.King), Square(Color.White, Piece.Queen), Square(Color.White, Piece.Bishop), Square(Color.White, Piece.Knight), Square(Color.White, Piece.Rook) ], + [ Square(Color.White, Piece.Pawn), Square(Color.White, Piece.Pawn), Square(Color.White, Piece.Pawn), Square(Color.White, Piece.Pawn), Square(Color.White, Piece.Pawn), Square(Color.White, Piece.Pawn), Square(Color.White, Piece.Pawn), Square(Color.White, Piece.Pawn) ], + [ Square(), Square(), Square(), Square(), Square(), Square(), Square(), Square() ], + [ Square(), Square(), Square(), Square(), Square(), Square(), Square(), Square() ], + [ Square(), Square(), Square(), Square(), Square(), Square(), Square(), Square() ], + [ Square(), Square(), Square(), Square(), Square(), Square(), Square(), Square() ], + [ Square(Color.Black, Piece.Pawn), Square(Color.Black, Piece.Pawn), Square(Color.Black, Piece.Pawn), Square(Color.Black, Piece.Pawn), Square(Color.Black, Piece.Pawn), Square(Color.Black, Piece.Pawn), Square(Color.Black, Piece.Pawn), Square(Color.Black, Piece.Pawn) ], + [ Square(Color.Black, Piece.Rook), Square(Color.Black, Piece.Knight), Square(Color.Black, Piece.Bishop), Square(Color.Black, Piece.King), Square(Color.Black, Piece.Queen), Square(Color.Black, Piece.Bishop), Square(Color.Black, Piece.Knight), Square(Color.Black, Piece.Rook) ], + */ + ]; +} + +Square[2][1] s = [ [ Square(), Square() ] ]; + +void write(in Board board) { + foreach_reverse (r; EnumMembers!Rank) { + writef("%s ", r); + foreach(f; EnumMembers!File) { + Square square = board(f, r); + if (square.occupied) { + writef("%s", unicode(square.color, square.piece)); + } + else { + writef(" "); + } + } + writeln(""); + } + + foreach(f; EnumMembers!File) { + writef("%s", f); + } + writeln(""); +} + +void main(string[] args) { + Board board; + write(board); +} diff -r 89016abde9fe -r 1da160a2c373 doodle/utils/prog/dupes.d --- a/doodle/utils/prog/dupes.d Fri Sep 09 17:17:06 2011 +0930 +++ b/doodle/utils/prog/dupes.d Mon Dec 12 18:03:07 2011 +1030 @@ -203,23 +203,25 @@ bool verbose; try { + string file_size_string = "100K"; + string digest_size_string = "100K"; + void help(in string) { writefln("Usage: dupes [OPTION]... DIR...\n" "Recursively locate duplicate files in a list of directories\n" "\n" "Options\n" - " -d, --digest-size=SIZE size of digest used for comparison\n" - " -f, --file-size=SIZE minimum size of files searched for duplication\n" + " -d, --digest-size=SIZE size of digest used for comparison [%s]\n" + " -f, --file-size=SIZE minimum size of files searched for duplication [%s]\n" " -v, --verbose be verbose\n" " --help display this help and exit\n" "\n" - "SIZE is an integer, optionally followed by K, M, G, T"); + "SIZE is an integer, optionally followed by K, M, G, T", + file_size_string, + digest_size_string); exit(1); } - string file_size_string = "100K"; - string digest_size_string = "100K"; - getopt(args, "file-size|f", &file_size_string, "digest-size|d", &digest_size_string,