Jul 30, 2012

[Info] Found it!

To recap my last post, I found a mystery version of Mediocre called v0.5beta that I'd left undocumented last December.

No sources or clues as to why it was beating v0.4 by a good margin.

After a couple hours of manual digging in the class-files I gave up. But having a terrible cold today I decided to give it another go (what else would you do half-consious in bed than read decompiled java programs? :).

Since the decompiled versions are slightly different on almost every row I tried to rule out parts of the code by testing. Evaluation seemed to be exactly the same as what was left in source (my experimental changes to evaluation).

But the search was still returning a different tree. Having been almost certain the evaluation was the culprit I turned to the search instead.

So taking Matthew's advice from my previous post I took a look at all the lines touching futility pruning, and I found a difference. It was indeed futility being turned off (I had missed a third boolean).

However, this version was still being crushed by both v0.4 and v0.5beta. So I looked through Engine.java line by line, and found another "slight" difference, I had completely turned off LMR.

The second I saw it I remembered I did it to get better lines for the University project I was doing around that time...

Lesson to be learned: If you're going to ruin your code, commit your changes first. :)

1 comment:

Anonymous said...

Another thing I can recommend is to include the source files in the jar file. Can be a big help if you just want to play with different variations that you don't necessarily want to commit.