From 2a50d9711a0d2172619e0b2404362188ad6a9ccb Mon Sep 17 00:00:00 2001 From: pavel Date: Mon, 27 Nov 2017 11:17:50 -0500 Subject: [PATCH 1/3] "Iteration working" --- src/main/java/io/zipcoder/Problem2.java | 46 +++++++++++++++++++++ src/test/java/io/zipcoder/Problem2Test.java | 26 ++++++++++++ 2 files changed, 72 insertions(+) diff --git a/src/main/java/io/zipcoder/Problem2.java b/src/main/java/io/zipcoder/Problem2.java index e0af6a0..ad8e101 100644 --- a/src/main/java/io/zipcoder/Problem2.java +++ b/src/main/java/io/zipcoder/Problem2.java @@ -1,4 +1,50 @@ package io.zipcoder; +import java.util.LinkedList; + public class Problem2 { + + public String fibonacciIteration(int n){ + int currentInt = 0; + LinkedList integers = new LinkedList(); + integers.add(0); + integers.add(1); + StringBuilder sb = new StringBuilder(); + sb.append("0, 1"); + int index = 2; + while(true){ + currentInt = integers.get(index-1)+integers.get(index-2); + integers.add(currentInt); + if(currentInt > n){ + break; + } + sb.append(", "+currentInt); + index++; + } + return sb.toString(); + } + + + // Don't work + // much easier to work with ints for recursion + /*public int fibonacciRecursion(int n){ + + if() + sb.append(fibonacciRecursion(n - 1) + fibonacciRecursion(n - 2)); + return null; + } + + public String printFibonacciRecursion(int[] array){ + StringBuilder sb = new StringBuilder(); + for(int i: array){ + if(i < array.length-1) { + sb.append(i + ", "); + } else { + sb.append(i); + } + } + return sb.toString(); + }*/ + + } diff --git a/src/test/java/io/zipcoder/Problem2Test.java b/src/test/java/io/zipcoder/Problem2Test.java index fa9ffa5..353e6be 100644 --- a/src/test/java/io/zipcoder/Problem2Test.java +++ b/src/test/java/io/zipcoder/Problem2Test.java @@ -1,4 +1,30 @@ package io.zipcoder; +import org.junit.Assert; +import org.junit.Test; + public class Problem2Test { + + @Test + public void fibonacciIterationTest(){ + Problem2 problem2 = new Problem2(); + + String expected = "0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144"; + String actual = problem2.fibonacciIteration(150); + + Assert.assertEquals(expected, actual); + } + + + @Test + public void printFibonacciRecursionTest(){ + Problem2 problem2 = new Problem2(); + + String expected = "0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144"; + String actual = problem2.fibonacciRecursion(150); + + Assert.assertEquals(expected, actual); + } + + } From 8b06d75f6a7a9f5ed0e74fd52ae715ce4cb23b4d Mon Sep 17 00:00:00 2001 From: pavel Date: Thu, 30 Nov 2017 22:10:43 -0500 Subject: [PATCH 2/3] "I hate recursion, but it works" --- src/main/java/io/zipcoder/Problem2.java | 50 ++++++++++----------- src/test/java/io/zipcoder/Problem2Test.java | 2 +- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/main/java/io/zipcoder/Problem2.java b/src/main/java/io/zipcoder/Problem2.java index ad8e101..8eb7de2 100644 --- a/src/main/java/io/zipcoder/Problem2.java +++ b/src/main/java/io/zipcoder/Problem2.java @@ -1,5 +1,7 @@ package io.zipcoder; +import java.lang.reflect.Array; +import java.util.ArrayList; import java.util.LinkedList; public class Problem2 { @@ -11,40 +13,38 @@ public String fibonacciIteration(int n){ integers.add(1); StringBuilder sb = new StringBuilder(); sb.append("0, 1"); - int index = 2; - while(true){ - currentInt = integers.get(index-1)+integers.get(index-2); + for(int i = 2; integers.get(i-1)+integers.get(i-2) < n; i++){ + currentInt = integers.get(i-1)+integers.get(i-2); integers.add(currentInt); - if(currentInt > n){ - break; - } sb.append(", "+currentInt); - index++; } return sb.toString(); } - - // Don't work - // much easier to work with ints for recursion - /*public int fibonacciRecursion(int n){ - - if() - sb.append(fibonacciRecursion(n - 1) + fibonacciRecursion(n - 2)); - return null; + public ArrayList fibonacciRecursion(int max){ + ArrayList fibs = new ArrayList(); + fibs.add(0); + fibs.add(1); + return fibonacciRecursion(fibs, max); } - public String printFibonacciRecursion(int[] array){ - StringBuilder sb = new StringBuilder(); - for(int i: array){ - if(i < array.length-1) { - sb.append(i + ", "); - } else { - sb.append(i); - } + private ArrayList fibonacciRecursion(ArrayList fibs, int max){ + int nextFib = fibs.get(fibs.size()-1) + fibs.get(fibs.size() - 2); + if(nextFib > max){ + return fibs; } - return sb.toString(); - }*/ + fibs.add(nextFib); + return fibonacciRecursion(fibs, max); + } + public String printFibonacciRecursion(ArrayList fibs){ + if(fibs.size() == 1){ + return "" + fibs.get(0); + } else { + String output = fibs.get(0) + ", "; + fibs.remove(0); + return output + printFibonacciRecursion(fibs); + } + } } diff --git a/src/test/java/io/zipcoder/Problem2Test.java b/src/test/java/io/zipcoder/Problem2Test.java index 353e6be..c90f3be 100644 --- a/src/test/java/io/zipcoder/Problem2Test.java +++ b/src/test/java/io/zipcoder/Problem2Test.java @@ -21,7 +21,7 @@ public void printFibonacciRecursionTest(){ Problem2 problem2 = new Problem2(); String expected = "0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144"; - String actual = problem2.fibonacciRecursion(150); + String actual = problem2.printFibonacciRecursion(problem2.fibonacciRecursion(150)); Assert.assertEquals(expected, actual); } From 9dfcdbf42f99c3d921a96236975aeb9cf5438a2c Mon Sep 17 00:00:00 2001 From: pavel Date: Thu, 30 Nov 2017 22:11:36 -0500 Subject: [PATCH 3/3] "I hate recursion, but it works" --- src/main/java/io/zipcoder/Problem2.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/io/zipcoder/Problem2.java b/src/main/java/io/zipcoder/Problem2.java index 8eb7de2..0327983 100644 --- a/src/main/java/io/zipcoder/Problem2.java +++ b/src/main/java/io/zipcoder/Problem2.java @@ -1,6 +1,5 @@ package io.zipcoder; -import java.lang.reflect.Array; import java.util.ArrayList; import java.util.LinkedList;