summaryrefslogtreecommitdiff
path: root/src/section-7
diff options
context:
space:
mode:
authormokha <mokha@cisco.com>2019-05-05 19:48:09 -0600
committermokha <mokha@cisco.com>2019-05-05 19:48:09 -0600
commit99a28d2dba93642e89a62ecf905a3bd4f138318d (patch)
treeee10a7df683642a42991896bbec5ced501a2abd1 /src/section-7
parent3c2be35d16d7482442911f5b06b68512f86e15b5 (diff)
split code into directories closer to what the instructor wants
Diffstat (limited to 'src/section-7')
-rw-r--r--src/section-7/HailstoneSequence.java17
-rw-r--r--src/section-7/HailstoneSequenceTest.java39
2 files changed, 56 insertions, 0 deletions
diff --git a/src/section-7/HailstoneSequence.java b/src/section-7/HailstoneSequence.java
new file mode 100644
index 0000000..b0e3c48
--- /dev/null
+++ b/src/section-7/HailstoneSequence.java
@@ -0,0 +1,17 @@
+package ca.mokhan.assignment1;
+
+import java.util.ArrayList;
+
+public class HailstoneSequence {
+ public static ArrayList<Integer> getHailstoneSequence(int n) {
+ return getHailstoneSequence(n, new ArrayList<Integer>());
+ }
+
+ public static ArrayList<Integer> getHailstoneSequence(int n, ArrayList<Integer> items) {
+ items.add(n);
+
+ if (n == 1) return items;
+ else if (n % 2 == 0) return getHailstoneSequence(n / 2, items);
+ else return getHailstoneSequence((n * 3) + 1, items);
+ }
+}
diff --git a/src/section-7/HailstoneSequenceTest.java b/src/section-7/HailstoneSequenceTest.java
new file mode 100644
index 0000000..6dc1fea
--- /dev/null
+++ b/src/section-7/HailstoneSequenceTest.java
@@ -0,0 +1,39 @@
+package ca.mokhan.assignment1;
+
+import java.util.ArrayList;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+public class HailstoneSequenceTest extends TestCase {
+ public HailstoneSequenceTest(String testName) {
+ super(testName);
+ }
+
+ public static Test suite() {
+ return new TestSuite(HailstoneSequenceTest.class);
+ }
+
+ public void testGetHailstoneSequence() {
+ ArrayList<Integer> results = HailstoneSequence.getHailstoneSequence(15);
+
+ assertTrue(15 == results.get(0));
+ assertTrue(46 == results.get(1));
+ assertTrue(23 == results.get(2));
+ assertTrue(70 == results.get(3));
+ assertTrue(35 == results.get(4));
+ assertTrue(106 == results.get(5));
+ assertTrue(53 == results.get(6));
+ assertTrue(160 == results.get(7));
+ assertTrue(80 == results.get(8));
+ assertTrue(40 == results.get(9));
+ assertTrue(20 == results.get(10));
+ assertTrue(10 == results.get(11));
+ assertTrue(5 == results.get(12));
+ assertTrue(16 == results.get(13));
+ assertTrue(8 == results.get(14));
+ assertTrue(4 == results.get(15));
+ assertTrue(2 == results.get(16));
+ assertTrue(1 == results.get(17));
+ }
+}