Monday, October 5, 2015

[19.5] Game of Master Mind

1. Example
Bit Vector STORE alphabet into corresponding pos
Return more than two variables = > create a class

   R Y  G  B


Case1:  R     G         G    B
Gues1: Y      R         G    B

                   p-hit     hit   hit
=> ONLT told : 1 p-hit and 2 hits


check color and position =>
current hit = 0;
if color match and position match => current hit  =2 ( hit)

if color match => current hit = 1 (p-hit)
O(n^2) => O(n) bit vector, int has 32 bit enough for 26 alphabets, 

2. Implementation


// Assume all Capital
public static class Result
{
    public int hits; 
    public int pseudoHits;
}

public static Result estimate(String guess, String solution)
{





    Result res = new Result();

   



    // validate the input
    if (guess == null || solution == null)
       return res;




    int solution_mask = 0;
    for (int i = 0; i < 4; i++ )
    {
         int val = solution.charAt(i) - 'A'; // 'A'->0, 'B'->1, 'C'->2
         // NOTE :Set bits
         solution_mask |= 1<<(1+val);// 'A'->1, 'B'->2, 'C'->3, 26 aplhabets
    }


    

    for (int i = 0 ; i < 4 ; i ++)
    {
          if (guess.charAt(i) == solution.charAt(i))
               ++res.hits;
          // NOTE: Test bits
          else if (  (solution_mask  &  ( 1<< (1+guess.charAt(i) - 'A') )) >=1  )      
               ++res.pseudoHits;
    }



    return res;



}
3. similar Ones

No comments:

Post a Comment