changeset 127:1da160a2c373

Chess checkpoint
author David Bryant <bagnose@gmail.com>
date Mon, 12 Dec 2011 18:03:07 +1030
parents 89016abde9fe
children bc4d29c7499c
files builder.d configure.d doodle/main/prog/chess.d doodle/utils/prog/dupes.d
diffstat 4 files changed, 107 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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");
--- /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);
+}
--- 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,