Finish 2001-09-21 00:00:00 UTC

Abacus1

by Sergio Di Michele

Status: Passed
Results:  25.67,  74.33 (95.96 taken)
CPU Time: 45.033
Score: 1812.75
Submitted at: 2001-09-20 03:52:39 UTC
Scored at: 2001-09-20 03:56:23 UTC

Current Rank: 344th

Comments
Sergio Di Michele
20 Sep 2001
count & permute
Please login or create a profile.
Code
function finalAnswer=solver(numPegs,numColors,guessLimit,puzzleID)

numCallsMade=0;
guess=ones(1,numPegs);

actualColor=1;
nextPeg=1;

while((actualColor<numColors)&(nextPeg<=numPegs)&(numCallsMade<guessLimit))
   prova=ones(1,numPegs)*actualColor;
   [blacks,whites,numCallsMade]=scoreme(prova,puzzleID);
   if(blacks>0)
      guess(nextPeg:nextPeg+blacks-1)=actualColor;
      nextPeg=nextPeg+blacks;
   end
   actualColor=actualColor+1;
end
if(numCallsMade==guessLimit)
   finalAnswer=guess;
   return
end
if(nextPeg<=numPegs)
   guess(nextPeg:numPegs)=numColors;
end

bestScore=-Inf;

while numCallsMade<guessLimit
   
   guess=guess(randperm(numPegs));
   
  	[black,white,numCallsMade]=scoreme(guess,puzzleID);
    score=2*black+white;
    if score>bestScore
        finalAnswer=guess;
        bestScore=score;
    end
    if black == numPegs
        % perfect score, so return
        finalAnswer=guess;
        return
    end
end