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, Long>();
        _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, Long> _theMemory;
    private long _lastNumberSpoken;
}
@@ -518,20 +518,22 @@
 p%3CLong, 
-Long
+Number
 %3E();%0A   
@@ -671,17 +671,17 @@
 Number (
-l
+L
 ong numb
@@ -926,25 +926,25 @@
 %0A    public 
-l
+L
 ong numberPr
@@ -950,17 +950,17 @@
 resent (
-l
+L
 ong numb
@@ -1019,20 +1019,22 @@
 p%3CLong, 
-Long
+Number
 %3E _theMe
@@ -1051,17 +1051,17 @@
 private 
-l
+L
 ong _las
@@ -1075,9 +1075,33 @@
 Spoken;%0A
+    private Long _turn;%0A
 %7D

Update Memory.java