On Tue, 18 Dec 2001 WKRfresno_at_aol.com wrote:
> I cannot yet release my solver because:
> 1. It is not fit for use by anyone else.
You should look at mine. It's a nasty mess, with #ifs and #ifdefs and //
comments and bunches of stats and weird stuff even I don't remember in
there.
> 2. Improvements are frequent.
Linus says, "release early, release often." That way other people can
find improvements (like, it doesn't compile on my hardware, here's a
patch).
Not to mention that having open discussions with other humans often leads
to new insights. For example, describing lookahead tactics on this list
led me to an optimization where I merge paths when I reach the same
position from a different route.
> 3. Other solvers will appropriate some of my tactics; then all solvers will
> be pretty much the same. That will be fine after I publish my results. Not
> now.
That'll never happen. As you pointed out, there are such big differences
in approach that not all tactics can be used. For example, my solver
can't continue after a win, and fixing that would be hard. Your solver is
designed differently and doesn't have this problem. I already KNOW about
the potential for improvement there, but it just doesn't fit into the
design very well. And you said it would be hard for you to make your
solver remove a card from a home cell, while in mine it was a simple
change.
I have no doubt that there are good ideas in your code, but using some of
them in my solver would mean ripping mine apart and putting it back
together so that it looks like yours. I'm not going to do that.
Another big difference, since you mention game 164: my solver finds a
solution in 134 moves. That's _single card_ moves, mind you. Playing out
my solution on MS Freecell is highly annoying 'cause it keeps popping up
that stupid menu asking if you want to move one card or a whole stack.
Maybe there's a way to turn it off but all the menus are in Japanese. But
I don't care 'cause I don't use MS for anything. I like the
cross-platform Tcl Patience by Christian Krone. You get to move single
cards. You can play Seahaven. (That's another difference between mine
and yours, no doubt -- mine's actually more heavily optimized for
Seahaven. Shlomi's solver can play a whole slew of games, and I have no
doubt that most of what goes on inside my solver is basically useless to
him, because it's so specific.
By the way, my solution to 164 is essentially identical to yours up to
about your move 22, where it starts moving stacks around. In terms of
single card moves putting a stack back together after taking it apart is a
waste of time, so my solver doesn't do that. So it's comparing apples and
oranges. Not to mention that you don't even count the automoves.
This does bring up the idea of writing a program that converts stack moves
into single card moves & vice versa. But I don't see much point in it,
really. You can't compare the lengths (apples and oranges). Importing
solutions into some program's autoplay feature might be useful, though,
so something that reads multiple formats and "plays the game" could be
added to a given program. The only requirement for THAT is that the
output of the solver be machine readable.
Anyway, you'll never convince ME that there are any good reasons not to
release source code. Even if you have a good reason, I'm quite prepared
to be irrational about it, too! :-)
Dr. Tom Holroyd
"I am, as I said, inspired by the biological phenomena in which
chemical forces are used in repetitious fashion to produce all
kinds of weird effects (one of which is the author)."
-- Richard Feynman, _There's Plenty of Room at the Bottom_
Received on Tue Dec 18 2001 - 18:07:07 IST