次の方法で共有


History of me and My Pocket Solitaire (Peg Solitaire)

As mentioned in previous post I’m going to write series of posts about thing I like to call “My Pocket Solitaire”. It’s Peg solitaire but since I have one game at home which says in the box “Pocket solitaire” so I have kind of used to that name. Especially since I have had that game as long as I can remember Smile. That’s maybe the reason why I have been puzzled (or haunted?) by this game over the years. In order you to understand better I’ll try to describe the history in brief:

History

~1996: C++ solver running on Linux in single thread
I created simple solver using C++ and which solved this game and stored the results to disk. I stopped running this because I filled my disk space with all solutions :D

~2002: C# solver (single threaded) (around when .NET was in beta or just released).
And a bit later C# distributed solver (similar to SETI@home architecture).
Again I stopped running this because I filled my (this time much larger) disk space with all solutions :D

~2008: C# Parallel version (when Parallel Extensions to the .NET FX was in CTP)

2012: I created and published Windows Phone version of it Store link and Windows version of it Store link.

2013-2014: I wrote C++11 version (and used MSVC, GCC and Clang to compile it), C# version, Node.js, F# version, TypeScript, Hadoop versions of the same solving algorithm. And then I have done different kind of other tests with C++ domain and I’ll go them thru in more detail in future posts.

2014: Here we are and I’m now blogging about my journey in Peg solitaire world!

Why oh why?

That’s good question Smile. Basically I had couple of targets when digging into this topic again. 1) Learn. 2) Learn some more. 3) Examine performance and algorithms. 4) Compare different programming languages when dealing with this kind of challenge/problem. 5) Compare compilers. 6) Have fun Smile.

What to expect in future posts?

I’m going to start with these topics and add more later:

  • Solving problem using…
    • Top-down method
    • Bottom-up method
  • Programming language comparisons
    • “Feel” of developing such solution in given language
    • Performance aspect
    • Debugging experience
    • etc

Anyways... Happy hacking!

J