/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package be.fror.projecteuler.problem;

/**
 *
 * @author Olivier Grégoire
 */
public class Problem14 extends AbstractProblem {

  @Override
  public Object solve() {
    int limit = 1000000;
    int[] cache = new int[limit];
    int maxChain = Integer.MIN_VALUE;
    int maxValue = 0;
    for (int n = 1; n < limit; n++) {
      int chain = 1;
      long t = n;
      while (t != 1L && t >= n) {
        if ((t & 1L) == 0L) {
          t >>= 1;
          chain++;
        } else {
          t = (3L * t + 1L) >> 1;
          chain += 2;
        }
      }
      cache[n] = chain + cache[(int) t];
      if (cache[n] > maxChain) {
        maxChain = cache[n];
        maxValue = n;
      }
    }
    return maxValue;
  }

}

@@ -225,11 +225,8 @@
 /**%0A
- *%0A
  * @
@@ -303,16 +303,18 @@
 blem %7B%0A%0A
+  
   @Overr
@@ -317,16 +317,18 @@
 verride%0A
+  
   public
@@ -345,24 +345,28 @@
 lve() %7B%0A    
+  
+  
 int limit = 
@@ -366,19 +366,21 @@
 imit = 1
+_
 000
+_
 000;%0A   
@@ -380,16 +380,20 @@
 00;%0A    
+  
+  
 int%5B%5D ca
@@ -410,24 +410,50 @@
 int%5Blimit%5D;%0A
+        cache%5B1%5D = 1;%0A    
     int maxC
@@ -478,16 +478,20 @@
 _VALUE;%0A
+    
     int 
@@ -508,16 +508,20 @@
  0;%0A    
+  
+  
 for (int
@@ -525,17 +525,17 @@
 int n = 
-1
+2
 ; n %3C li
@@ -548,24 +548,30 @@
 ++) %7B%0A      
+  
+    
 int chain = 
@@ -570,19 +570,25 @@
 chain = 
-1
+0
 ;%0A
+      
       lo
@@ -603,16 +603,22 @@
 ;%0A      
+     
+ 
 while (t
@@ -633,24 +633,32 @@
 & t %3E= n) %7B%0A
+        
         if (
@@ -685,16 +685,26 @@
         
+   
+       
 t %3E%3E= 1;
@@ -710,24 +710,34 @@
 ;%0A          
+    
+      
 chain++;%0A   
@@ -741,16 +741,24 @@
         
+      
+  
 %7D else %7B
@@ -768,16 +768,26 @@
         
+         
+ 
 t = (3L 
@@ -798,24 +798,34 @@
 + 1L) %3E%3E 1;%0A
+          
           ch
@@ -842,24 +842,46 @@
         
+ 
+       %7D%0A            
 %7D%0A      
 %7D%0A      
@@ -868,26 +868,24 @@
     %7D%0A      
-%7D%0A
       cache%5B
@@ -915,24 +915,30 @@
 ) t%5D;%0A      
+    
+  
 if (cache%5Bn%5D
@@ -948,24 +948,32 @@
 maxChain) %7B%0A
+        
         maxC
@@ -997,16 +997,24 @@
         
+ 
+       
 maxValue
@@ -1029,16 +1029,30 @@
     
+     
+ 
 %7D%0A
+    
     %7D%0A
+    
     
@@ -1068,15 +1068,17 @@
 xValue;%0A
+  
   %7D%0A%0A%7D%0A

Fix problem 14