import java.util.*;

/*
 * They begin by taking turns reading from a list of starting numbers (your puzzle input).
 * Then, each turn consists of considering the most recently spoken number:
 * 
 * If that was the first time the number has been spoken, the current player says 0.
 * Otherwise, the number had been spoken before; the current player announces how many turns
 * apart the number is from when it was previously spoken.
 */

public class Memory
{
    public Memory ()
    {
        _theMemory = new HashMap<Long, Number>();
        _lastNumberSpoken = -1;
    }

    public long getLastNumber ()
    {
        return _lastNumber;
    }

    public Long speakNumber (Long numb)
    {
        _lastNumberSpoken = numb;

        Long count = _theMemory.get(numb);

        if (count == null)
            count = 0;
        else
            count++;

        _theMemory.put(numb, count);

        return count;
    }

    public Long numberPresent (Long numb)
    {
        return -1;
    }

    private HashMap<Long, Number> _theMemory;
    private Long _lastNumberSpoken;
    private Long _turn;
}
@@ -557,24 +557,43 @@
 poken = -1;%0A
+        _turn = 0;%0A
     %7D%0A%0A    p
@@ -740,16 +740,33 @@
  = numb;
+%0A        _turn++l
 %0A%0A      
@@ -767,20 +767,22 @@
         
-Long
+Number
  count =
@@ -852,17 +852,28 @@
 count = 
-0
+new Number()
 ;%0A      

Update Memory.java