diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 1fb598ef96..180534cff0 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -6,16 +6,21 @@ + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml index aa00ffab78..0cd0cea4ac 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -3,5 +3,7 @@ + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 4ec2a1b534..740639b35c 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -6,6 +6,11 @@ + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index 45473da3cf..2da9b0836e 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,13 +2,16 @@ + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index bb5b1dd06d..8996c0a2c9 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -4,52 +4,41 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + @@ -137,6 +164,7 @@ + 1618147556538 diff --git a/src/main/java/com/ossez/codebank/algorithm/models/ListNode.java b/src/main/java/com/ossez/codebank/algorithm/models/ListNode.java deleted file mode 100644 index 81a4985eae..0000000000 --- a/src/main/java/com/ossez/codebank/algorithm/models/ListNode.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.ossez.codebank.algorithm.models; - -/** - * - * @author YuCheng - * - */ -public class ListNode { - public int val; - public ListNode next; - - public ListNode(int x) { - val = x; - next = null; - } -} diff --git a/src/main/java/com/ossez/codebank/algorithm/models/TreeNode.java b/src/main/java/com/ossez/codebank/algorithm/models/TreeNode.java deleted file mode 100644 index d879b60b16..0000000000 --- a/src/main/java/com/ossez/codebank/algorithm/models/TreeNode.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.ossez.codebank.algorithm.models; - -/** - * - * @author YuCheng - * - */ -public class TreeNode { - public int val; - public TreeNode left, right; - - public TreeNode(int val) { - this.val = val; - this.left = this.right = null; - } -} diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/codility/CodilityBinaryGapTest.java b/src/test/java/com/ossez/codebank/algorithm/tests/codility/CodilityBinaryGapTest.java deleted file mode 100644 index 88c4405f13..0000000000 --- a/src/test/java/com/ossez/codebank/algorithm/tests/codility/CodilityBinaryGapTest.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.ossez.codebank.algorithm.tests.codility; - -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - *

- * More details about question see link below - *

- *

- * - * @author YuCheng - * - */ -public class CodilityBinaryGapTest { - - private final static Logger logger = LoggerFactory.getLogger(CodilityBinaryGapTest.class); - - /** - * - */ - @Test - public void testMain() { - logger.debug("BEGIN"); - - int N = 529; - String intStr = Integer.toBinaryString(N); - - intStr = intStr.replace("1", "#1#"); - - String[] strArray = intStr.split("1"); - - int maxCount = 0; - for (int i = 0; i < strArray.length; i++) { - String checkStr = strArray[i]; - int countLength = 0; - - if (checkStr.length() > 2 && checkStr.startsWith("#") && checkStr.endsWith("#")) { - checkStr = checkStr.replace("#", ""); - countLength = checkStr.length(); - - if (maxCount < countLength) { - maxCount = countLength; - } - - } - } - - logger.debug("MAX COUNT: [{}]", maxCount); - } - -} diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0007SerializeAndDeserializeTest.java b/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0007SerializeAndDeserializeTest.java deleted file mode 100644 index d1c3438ff8..0000000000 --- a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0007SerializeAndDeserializeTest.java +++ /dev/null @@ -1,131 +0,0 @@ -package com.ossez.codebank.algorithm.tests.lintcode; - -import java.util.ArrayList; - -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.ossez.codebank.algorithm.models.TreeNode; - -/** - *

- * 7 - *

- *

- * - * @author YuCheng - * - */ -public class LintCode0007SerializeAndDeserializeTest { - - private final static Logger logger = LoggerFactory.getLogger(LintCode0007SerializeAndDeserializeTest.class); - - /** - * - */ - @Test - public void testMain() { - logger.debug("BEGIN"); - String data = "{3,9,20,#,#,15,7}"; - - System.out.println(serialize(deserialize(data))); - - } - - /** - * Deserialize from array to tree - * - * @param data - * @return - */ - private TreeNode deserialize(String data) { - // NULL CHECK - if (data.equals("{}")) { - return null; - } - - ArrayList treeList = new ArrayList(); - - data = data.replace("{", ""); - data = data.replace("}", ""); - String[] vals = data.split(","); - - // INSERT ROOT - TreeNode root = new TreeNode(Integer.parseInt(vals[0])); - treeList.add(root); - - int index = 0; - boolean isLeftChild = true; - for (int i = 1; i < vals.length; i++) { - if (!vals[i].equals("#")) { - TreeNode node = new TreeNode(Integer.parseInt(vals[i])); - if (isLeftChild) { - treeList.get(index).left = node; - } else { - treeList.get(index).right = node; - } - treeList.add(node); - } - - // LEVEL - if (!isLeftChild) { - index++; - } - - // MOVE TO RIGHT OR NEXT LEVEL - isLeftChild = !isLeftChild; - } - - return root; - - } - - /** - * - * @param root - * @return - */ - public String serialize(TreeNode root) { - // write your code here - if (root == null) { - return "{}"; - } - - ArrayList queue = new ArrayList(); - queue.add(root); - - for (int i = 0; i < queue.size(); i++) { - TreeNode node = queue.get(i); - if (node == null) { - continue; - } - queue.add(node.left); - queue.add(node.right); - } - - while (queue.get(queue.size() - 1) == null) { - queue.remove(queue.size() - 1); - } - - StringBuilder sb = new StringBuilder(); - sb.append("{"); - sb.append(queue.get(0).val); - for (int i = 1; i < queue.size(); i++) { - if (queue.get(i) == null) { - sb.append(",#"); - } else { - sb.append(","); - sb.append(queue.get(i).val); - } - } - sb.append("}"); - return sb.toString(); - } - -} diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0069LevelOrderTest.java b/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0069LevelOrderTest.java deleted file mode 100644 index 75633c8b25..0000000000 --- a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0069LevelOrderTest.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.ossez.codebank.algorithm.tests.lintcode; - -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.Queue; - -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.ossez.codebank.algorithm.models.TreeNode; - -/** - *

- * 69 - *

- *

- * - * @author YuCheng - * - */ -public class LintCode0069LevelOrderTest { - - private final static Logger logger = LoggerFactory.getLogger(LintCode0069LevelOrderTest.class); - - /** - * - */ - @Test - public void testMain() { - logger.debug("BEGIN"); - String data = "{3,9,20,#,#,15,7}"; - - TreeNode tn = deserialize(data); - System.out.println(levelOrder(tn)); - - } - - /** - * Deserialize from array to tree - * - * @param data - * @return - */ - private TreeNode deserialize(String data) { - // NULL CHECK - if (data.equals("{}")) { - return null; - } - - ArrayList treeList = new ArrayList(); - - data = data.replace("{", ""); - data = data.replace("}", ""); - String[] vals = data.split(","); - - // INSERT ROOT - TreeNode root = new TreeNode(Integer.parseInt(vals[0])); - treeList.add(root); - - int index = 0; - boolean isLeftChild = true; - for (int i = 1; i < vals.length; i++) { - if (!vals[i].equals("#")) { - TreeNode node = new TreeNode(Integer.parseInt(vals[i])); - if (isLeftChild) { - treeList.get(index).left = node; - } else { - treeList.get(index).right = node; - } - treeList.add(node); - } - - // LEVEL - if (!isLeftChild) { - index++; - } - - // MOVE TO RIGHT OR NEXT LEVEL - isLeftChild = !isLeftChild; - } - - return root; - - } - - private List> levelOrder(TreeNode root) { - Queue queue = new LinkedList(); - List> rs = new ArrayList>(); - - // NULL CHECK - if (root == null) { - return rs; - } - - queue.offer(root); - - while (!queue.isEmpty()) { - int length = queue.size(); - List list = new ArrayList(); - - for (int i = 0; i < length; i++) { - TreeNode curTN = queue.poll(); - list.add(curTN.val); - if (curTN.left != null) { - queue.offer(curTN.left); - } - if (curTN.right != null) { - queue.offer(curTN.right); - } - } - - rs.add(list); - } - - return rs; - } -} diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0102HasCycleTest.java b/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0102HasCycleTest.java deleted file mode 100644 index 8e63d7cdd2..0000000000 --- a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0102HasCycleTest.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.ossez.codebank.algorithm.tests.lintcode; - -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.ossez.codebank.algorithm.models.ListNode; - -/** - *

- * 102 - *

- *

- * - * @author YuCheng - * - */ -public class LintCode0102HasCycleTest { - - private final static Logger logger = LoggerFactory.getLogger(LintCode0102HasCycleTest.class); - - /** - * - */ - @Test - public void testMain() { - logger.debug("BEGIN"); - // INIT LINKED LIST - ListNode head = new ListNode(1); - head.next = new ListNode(2); - head.next.next = new ListNode(3); - head.next.next.next = new ListNode(4); - - // CREATE A LOOP - head.next.next.next.next = head.next.next.next; - - boolean retResult = false; - - // LIKED LIST MAY NULL: - if (!(head == null || head.next == null)) { - ListNode s = head; - ListNode f = head.next; - - while (f.next != null && f.next.next != null) { - - s = s.next; - f = f.next.next; - - if (f == s) { - retResult = true; - break; - } - } - } - - System.out.println(retResult); - - } -} diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0165MergeTwoListsTest.java b/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0165MergeTwoListsTest.java deleted file mode 100644 index 15d4fa17e4..0000000000 --- a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0165MergeTwoListsTest.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.ossez.codebank.algorithm.tests.lintcode; - -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.ossez.codebank.algorithm.models.ListNode; - -/** - *

- * 102 - *

- *

- * - * @author YuCheng - * - */ -public class LintCode0165MergeTwoListsTest { - - private final static Logger logger = LoggerFactory.getLogger(LintCode0165MergeTwoListsTest.class); - - /** - * - */ - @Test - public void testMain() { - logger.debug("BEGIN"); - // INIT LINKED LIST l1 - ListNode l1 = new ListNode(1); - l1.next = new ListNode(3); - l1.next.next = new ListNode(8); - l1.next.next.next = new ListNode(11); - l1.next.next.next.next = new ListNode(15); - - // INIT LINKED LIST l2 - ListNode l2 = new ListNode(2); - - // RETURN RESULT - ListNode retResult = new ListNode(0); - - // NULL CHECK - // if (l1 == null && l2 == null) { - // retResult = null; - // } - // - // if (l1 == null) { - // retResult = l2; - // } - // - // if (l2 == null) { - // retResult = l1; - // } - - // MERGE - retResult = new ListNode(0); - ListNode tmpNode = new ListNode(0); - retResult = tmpNode; - while (l1 != null & l2 != null) { - if (l1.val <= l2.val) { - tmpNode.next = l1; - l1 = l1.next; - } else { - tmpNode.next = l2; - l2 = l2.next; - } - - tmpNode = tmpNode.next; - } - - if (l1 == null) { - tmpNode.next = l2; - } - - if (l2 == null) { - tmpNode.next = l1; - } - - retResult = retResult.next; - - System.out.println(retResult.val); - System.out.println(retResult.next.val); - System.out.println(retResult.next.next.val); - - } -} diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0425LetterCombinationsTest.java b/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0425LetterCombinationsTest.java deleted file mode 100644 index 328f7a3367..0000000000 --- a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0425LetterCombinationsTest.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.ossez.codebank.algorithm.tests.lintcode; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - *

- * 425 - *

- *

- * - * @author YuCheng - * - */ -public class LintCode0425LetterCombinationsTest { - - private final static Logger logger = LoggerFactory.getLogger(LintCode0425LetterCombinationsTest.class); - - /** - * - */ - @Test - public void testMain() { - logger.debug("LetterCombinationsTest"); - String digits = "23"; - - HashMap phoneKeyMap = new HashMap(); - phoneKeyMap.put("0", ""); - phoneKeyMap.put("1", ""); - phoneKeyMap.put("2", "abc"); - phoneKeyMap.put("3", "def"); - phoneKeyMap.put("4", "ghi"); - phoneKeyMap.put("5", "jkl"); - phoneKeyMap.put("6", "mno"); - phoneKeyMap.put("7", "pqrs"); - phoneKeyMap.put("8", "tuv"); - phoneKeyMap.put("9", "wxyz"); - - List retStatus = new ArrayList<>(); - - if (digits != null && digits.length() != 0) { - phoneRecursive(digits, retStatus, phoneKeyMap, "", 0); - } - - System.out.println(retStatus); - } - - /** - * phoneRecursive - * - * @param digits - * @param retStatus - * @param phoneKeyMap - * @param comb - * @param index - */ - private void phoneRecursive(String digits, List retStatus, HashMap phoneKeyMap, String comb, int index) { - if (index == digits.length()) { - retStatus.add(comb); - return; - } - - char pos = digits.charAt(index); - for (char c : ((String) phoneKeyMap.get(String.valueOf(pos))).toCharArray()) { - phoneRecursive(digits, retStatus, phoneKeyMap, comb + c, index + 1); - } - } -} diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0433NumIslandsTest.java b/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0433NumIslandsTest.java deleted file mode 100644 index 0e8d5cd08c..0000000000 --- a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0433NumIslandsTest.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.ossez.codebank.algorithm.tests.lintcode; - -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - *

- * 433 - *

- *

- * - * @author YuCheng - * - */ -public class LintCode0433NumIslandsTest { - - private final static Logger logger = LoggerFactory.getLogger(LintCode0433NumIslandsTest.class); - - /** - * - */ - @Test - public void testMain() { - logger.debug("BEGIN"); - // INIT GRID - boolean[][] grid = { { true, true, false, false, false }, { false, true, false, false, true }, { false, false, false, true, true }, - { false, false, false, false, false }, { false, false, false, false, true } - - }; - - // NULL CHECK - if (grid.length == 0 || grid[0].length == 0) { - System.out.println("NULL"); - // return 0; - } - - // GET SIZE - int n = grid.length; - int m = grid[0].length; - - // ARRAY FOR VISITED LOG - boolean[][] visited = new boolean[n][m]; - - int count = 0; - - // LOOP FOR GRID - for (int i = 0; i < n; i++) { - for (int j = 0; j < m; j++) { - if (grid[i][j] && !visited[i][j]) { - numIslandsDFS(grid, visited, i, j); - count++; - } - } - } - - System.out.println(count); - - } - - /** - * - * @param grid - * @param visited - * @param x - * @param y - */ - public void numIslandsDFS(boolean[][] grid, boolean[][] visited, int x, int y) { - if (x < 0 || x >= grid.length) { - return; - } - - if (y < 0 || y >= grid[0].length) { - return; - } - - if (grid[x][y] != true || visited[x][y]) { - return; - } - - visited[x][y] = true; - - // Recursive call - numIslandsDFS(grid, visited, x - 1, y); - numIslandsDFS(grid, visited, x + 1, y); - numIslandsDFS(grid, visited, x, y - 1); - numIslandsDFS(grid, visited, x, y + 1); - - } -} diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode1480DotProductTest.java b/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode1480DotProductTest.java deleted file mode 100644 index b32db4bf6f..0000000000 --- a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode1480DotProductTest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.ossez.codebank.algorithm.tests.lintcode; - -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - *

- * 1480 - *

- *

- * - * @author YuCheng - * - */ -public class LintCode1480DotProductTest { - - private final static Logger logger = LoggerFactory.getLogger(LintCode1480DotProductTest.class); - - /** - * - */ - @Test - public void testMain() { - logger.debug("BEGIN"); - int t = 87; - int[] dur = { 20, 25, 19, 37 }; - // Write your code here - } - -} diff --git a/toolkits/.idea/compiler.xml b/toolkits/.idea/compiler.xml deleted file mode 100644 index 6c6e9b735f..0000000000 --- a/toolkits/.idea/compiler.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/toolkits/.idea/encodings.xml b/toolkits/.idea/encodings.xml deleted file mode 100644 index a0529939e8..0000000000 --- a/toolkits/.idea/encodings.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/toolkits/.idea/jarRepositories.xml b/toolkits/.idea/jarRepositories.xml deleted file mode 100644 index 712ab9d985..0000000000 --- a/toolkits/.idea/jarRepositories.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/toolkits/.idea/vcs.xml b/toolkits/.idea/vcs.xml deleted file mode 100644 index 6c0b863585..0000000000 --- a/toolkits/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/src/main/java/com/ossez/codebank/interview/KayakCountUpDown.java b/toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/interview/KayakCountUpDown.java similarity index 95% rename from src/main/java/com/ossez/codebank/interview/KayakCountUpDown.java rename to toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/interview/KayakCountUpDown.java index fa272b22a1..9c4eeda688 100644 --- a/src/main/java/com/ossez/codebank/interview/KayakCountUpDown.java +++ b/toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/interview/KayakCountUpDown.java @@ -1,4 +1,4 @@ -package com.ossez.codebank.interview; +package com.ossez.toolkits.codebank.common.interview; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/com/ossez/codebank/interview/KayakRobotMovement.java b/toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/interview/KayakRobotMovement.java similarity index 93% rename from src/main/java/com/ossez/codebank/interview/KayakRobotMovement.java rename to toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/interview/KayakRobotMovement.java index 22cb653292..cb5b9537c8 100644 --- a/src/main/java/com/ossez/codebank/interview/KayakRobotMovement.java +++ b/toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/interview/KayakRobotMovement.java @@ -1,4 +1,4 @@ -package com.ossez.codebank.interview; +package com.ossez.toolkits.codebank.common.interview; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/com/ossez/codebank/interview/ManNextFibonacciNumber.java b/toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/interview/ManNextFibonacciNumber.java similarity index 96% rename from src/main/java/com/ossez/codebank/interview/ManNextFibonacciNumber.java rename to toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/interview/ManNextFibonacciNumber.java index d98b2da869..6b0c17ef50 100644 --- a/src/main/java/com/ossez/codebank/interview/ManNextFibonacciNumber.java +++ b/toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/interview/ManNextFibonacciNumber.java @@ -1,4 +1,4 @@ -package com.ossez.codebank.interview; +package com.ossez.toolkits.codebank.common.interview; import java.io.BufferedReader; import java.io.InputStreamReader; diff --git a/src/main/java/com/ossez/codebank/algorithm/usecases/VarargsCase.java b/toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/usecase/VarargsCase.java similarity index 100% rename from src/main/java/com/ossez/codebank/algorithm/usecases/VarargsCase.java rename to toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/usecase/VarargsCase.java diff --git a/src/main/java/com/ossez/codebank/algorithml/utils/TreeUtils.java b/toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/utils/TreeUtils.java similarity index 85% rename from src/main/java/com/ossez/codebank/algorithml/utils/TreeUtils.java rename to toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/utils/TreeUtils.java index aafa847383..09d8ada76a 100644 --- a/src/main/java/com/ossez/codebank/algorithml/utils/TreeUtils.java +++ b/toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/utils/TreeUtils.java @@ -1,55 +1,57 @@ -package com.ossez.codebank.algorithml.utils; - -import java.util.ArrayList; - -import com.ossez.codebank.algorithm.models.TreeNode; - -/** - * - * @author YuCheng - * - */ -public class TreeUtils { - - public static TreeNode initTree(String data) { - // NULL CHECK - if (data.equals("{}")) { - return null; - } - - ArrayList treeList = new ArrayList(); - - data = data.replace("{", ""); - data = data.replace("}", ""); - String[] vals = data.split(","); - - // INSERT ROOT - TreeNode root = new TreeNode(Integer.parseInt(vals[0])); - treeList.add(root); - - int index = 0; - boolean isLeftChild = true; - for (int i = 1; i < vals.length; i++) { - if (!vals[i].equals("#")) { - TreeNode node = new TreeNode(Integer.parseInt(vals[i])); - if (isLeftChild) { - treeList.get(index).left = node; - } else { - treeList.get(index).right = node; - } - treeList.add(node); - } - - // LEVEL - if (!isLeftChild) { - index++; - } - - // MOVE TO RIGHT OR NEXT LEVEL - isLeftChild = !isLeftChild; - } - - return root; - - } -} +package com.ossez.toolkits.codebank.common.utils; + +import com.ossez.toolkits.codebank.common.model.TreeNode; + +import java.util.ArrayList; + + + +/** + * + * @author YuCheng + * + */ +public class TreeUtils { + + public static TreeNode initTree(String data) { + // NULL CHECK + if (data.equals("{}")) { + return null; + } + + ArrayList treeList = new ArrayList(); + + data = data.replace("{", ""); + data = data.replace("}", ""); + String[] vals = data.split(","); + + // INSERT ROOT + TreeNode root = new TreeNode(Integer.parseInt(vals[0])); + treeList.add(root); + + int index = 0; + boolean isLeftChild = true; + for (int i = 1; i < vals.length; i++) { + if (!vals[i].equals("#")) { + TreeNode node = new TreeNode(Integer.parseInt(vals[i])); + if (isLeftChild) { + treeList.get(index).left = node; + } else { + treeList.get(index).right = node; + } + treeList.add(node); + } + + // LEVEL + if (!isLeftChild) { + index++; + } + + // MOVE TO RIGHT OR NEXT LEVEL + isLeftChild = !isLeftChild; + } + + return root; + + } +} diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/BitOperationTest.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/BitOperationTest.java similarity index 90% rename from src/test/java/com/ossez/codebank/algorithm/tests/BitOperationTest.java rename to toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/BitOperationTest.java index 257c6a3a68..fc432903f3 100644 --- a/src/test/java/com/ossez/codebank/algorithm/tests/BitOperationTest.java +++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/BitOperationTest.java @@ -1,36 +1,36 @@ -package com.ossez.codebank.algorithm.tests; - -import org.apache.commons.math3.util.FastMath; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * - * @author YuCheng - * - */ -public class BitOperationTest { - - private final static Logger logger = LoggerFactory.getLogger(BitOperationTest.class); - - /** - * 35 https://www.lintcode.com/problem/reverse-linked-list/description - */ - @Test - public void testInt2Bit() { - logger.debug("BEGIN"); - System.out.println(Integer.toBinaryString(5)); - System.out.println(Integer.toBinaryString(2)); - - System.out.println(Integer.toBinaryString(2 << 2)); - - System.out.println(Integer.parseInt(Integer.toBinaryString(2 << 2), 2)); - - System.out.println(5 / 3); - System.out.println(5 % 3); - FastMath.pow(2, 3); - - } - -} +package com.ossez.toolkits.codebank.tests; + +import org.apache.commons.math3.util.FastMath; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * + * @author YuCheng + * + */ +public class BitOperationTest { + + private final static Logger logger = LoggerFactory.getLogger(BitOperationTest.class); + + /** + * 35 https://www.lintcode.com/problem/reverse-linked-list/description + */ + @Test + public void testInt2Bit() { + logger.debug("BEGIN"); + System.out.println(Integer.toBinaryString(5)); + System.out.println(Integer.toBinaryString(2)); + + System.out.println(Integer.toBinaryString(2 << 2)); + + System.out.println(Integer.parseInt(Integer.toBinaryString(2 << 2), 2)); + + System.out.println(5 / 3); + System.out.println(5 % 3); + FastMath.pow(2, 3); + + } + +} diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/LintcodeTest.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/LintcodeTest.java similarity index 96% rename from src/test/java/com/ossez/codebank/algorithm/tests/LintcodeTest.java rename to toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/LintcodeTest.java index 7cf699092d..082e4b6b62 100644 --- a/src/test/java/com/ossez/codebank/algorithm/tests/LintcodeTest.java +++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/LintcodeTest.java @@ -1,18 +1,12 @@ -package com.ossez.lang.tutorial.tests; +package com.ossez.toolkits.codebank.tests; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; import java.util.HashSet; -import java.util.LinkedList; import java.util.List; -import java.util.TreeSet; import java.util.regex.Matcher; import java.util.regex.Pattern; -import javax.management.ListenerNotFoundException; - import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/SingletonTest.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/SingletonTest.java similarity index 91% rename from src/test/java/com/ossez/codebank/algorithm/tests/SingletonTest.java rename to toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/SingletonTest.java index 041a9b840c..9e2b343ddc 100644 --- a/src/test/java/com/ossez/codebank/algorithm/tests/SingletonTest.java +++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/SingletonTest.java @@ -1,69 +1,69 @@ -package com.ossez.codebank.algorithm.tests; - -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Eager Singleton - * - * @author YuCheng - * - */ -class EagerSingleton { - private static final EagerSingleton INSTANCE = new EagerSingleton(); - - // Private constructor suppresses - private EagerSingleton() { - } - - // default public constructor - public static EagerSingleton getInstance() { - return INSTANCE; - } -} - -/** - * Lazy Singleton - * - * @author YuCheng - * - */ -class LazySingleton { - private static volatile LazySingleton INSTANCE = null; - - // Private constructor suppresses - // default LazySingleton constructor - private LazySingleton() { - } - - // thread safe and performance promote - public static LazySingleton getInstance() { - if (INSTANCE == null) { - synchronized (LazySingleton.class) { - // when more than two threads run into the first null check same time, to avoid instanced more than one time, it needs to be - // checked again. - if (INSTANCE == null) { - INSTANCE = new LazySingleton(); - } - } - } - return INSTANCE; - } -} - -/** - * - * @author YuCheng - * - */ -public class SingletonTest { - private final static Logger logger = LoggerFactory.getLogger(SingletonTest.class); - - @Test - public void testSingleton() { - logger.debug("TEST Singleton"); - - } - -} +package com.ossez.toolkits.codebank.tests; + +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Eager Singleton + * + * @author YuCheng + * + */ +class EagerSingleton { + private static final EagerSingleton INSTANCE = new EagerSingleton(); + + // Private constructor suppresses + private EagerSingleton() { + } + + // default public constructor + public static EagerSingleton getInstance() { + return INSTANCE; + } +} + +/** + * Lazy Singleton + * + * @author YuCheng + * + */ +class LazySingleton { + private static volatile LazySingleton INSTANCE = null; + + // Private constructor suppresses + // default LazySingleton constructor + private LazySingleton() { + } + + // thread safe and performance promote + public static LazySingleton getInstance() { + if (INSTANCE == null) { + synchronized (LazySingleton.class) { + // when more than two threads run into the first null check same time, to avoid instanced more than one time, it needs to be + // checked again. + if (INSTANCE == null) { + INSTANCE = new LazySingleton(); + } + } + } + return INSTANCE; + } +} + +/** + * + * @author YuCheng + * + */ +public class SingletonTest { + private final static Logger logger = LoggerFactory.getLogger(SingletonTest.class); + + @Test + public void testSingleton() { + logger.debug("TEST Singleton"); + + } + +} diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/TreeTest.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/TreeTest.java similarity index 86% rename from src/test/java/com/ossez/codebank/algorithm/tests/TreeTest.java rename to toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/TreeTest.java index 93a489f5bb..691e52c463 100644 --- a/src/test/java/com/ossez/codebank/algorithm/tests/TreeTest.java +++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/TreeTest.java @@ -1,85 +1,86 @@ -package com.ossez.codebank.algorithm.tests; - -import java.util.ArrayList; -import java.util.List; - -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.ossez.codebank.algorithm.models.TreeNode; -import com.ossez.codebank.algorithml.utils.TreeUtils; - -/** - * - * @author YuCheng - * - */ -public class TreeTest { - private final static Logger logger = LoggerFactory.getLogger(TreeTest.class); - private static List loopList = new ArrayList(); - - @Test - public void testMain() { - logger.debug("TREE TEST"); - String data = "{1,2,3,4,5,#,6,#,#,7,8,#,#}"; - TreeNode treeNode = TreeUtils.initTree(data); - - // PRE - loopList = new ArrayList(); - preOrderTraverselRecursion(treeNode); - System.out.println(loopList); - - // IN - loopList = new ArrayList(); - inOrderTraverselRecursion(treeNode); - System.out.println(loopList); - - // POST - loopList = new ArrayList(); - postOrderTraversalRecursion(treeNode); - System.out.println(loopList); - } - - - - - /** - * - * @param root - */ - public void preOrderTraverselRecursion(TreeNode root) { - if (root != null) { - loopList.add(root.val); - preOrderTraverselRecursion(root.left); - preOrderTraverselRecursion(root.right); - } - } - - /** - * - * @param root - */ - public void inOrderTraverselRecursion(TreeNode root) { - if (root != null) { - inOrderTraverselRecursion(root.left); - loopList.add(root.val); - inOrderTraverselRecursion(root.right); - } - - } - - /** - * - * @param root - */ - public void postOrderTraversalRecursion(TreeNode root) { - if (root != null) { - postOrderTraversalRecursion(root.left); - postOrderTraversalRecursion(root.right); - loopList.add(root.val); - } - - } - -} +package com.ossez.toolkits.codebank.tests; + +import java.util.ArrayList; +import java.util.List; + +import com.ossez.toolkits.codebank.common.model.TreeNode; +import com.ossez.toolkits.codebank.common.utils.TreeUtils; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + + +/** + * + * @author YuCheng + * + */ +public class TreeTest { + private final static Logger logger = LoggerFactory.getLogger(TreeTest.class); + private static List loopList = new ArrayList(); + + @Test + public void testMain() { + logger.debug("TREE TEST"); + String data = "{1,2,3,4,5,#,6,#,#,7,8,#,#}"; + TreeNode treeNode = TreeUtils.initTree(data); + + // PRE + loopList = new ArrayList(); + preOrderTraverselRecursion(treeNode); + System.out.println(loopList); + + // IN + loopList = new ArrayList(); + inOrderTraverselRecursion(treeNode); + System.out.println(loopList); + + // POST + loopList = new ArrayList(); + postOrderTraversalRecursion(treeNode); + System.out.println(loopList); + } + + + + + /** + * + * @param root + */ + public void preOrderTraverselRecursion(TreeNode root) { + if (root != null) { + loopList.add(root.val); + preOrderTraverselRecursion(root.left); + preOrderTraverselRecursion(root.right); + } + } + + /** + * + * @param root + */ + public void inOrderTraverselRecursion(TreeNode root) { + if (root != null) { + inOrderTraverselRecursion(root.left); + loopList.add(root.val); + inOrderTraverselRecursion(root.right); + } + + } + + /** + * + * @param root + */ + public void postOrderTraversalRecursion(TreeNode root) { + if (root != null) { + postOrderTraversalRecursion(root.left); + postOrderTraversalRecursion(root.right); + loopList.add(root.val); + } + + } + +} diff --git a/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/VariableTest.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/VariableTest.java index f2935594dd..c4aa5d3020 100644 --- a/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/VariableTest.java +++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/VariableTest.java @@ -54,7 +54,8 @@ public class VariableTest extends TestCase { public void testStaticVariableChange() { OssezVariable objA = new OssezVariable(1, 2, 3); - logger.debug("s1/s2/s3 - [{}]/[{}]/[{}]", objA.s1, objA.s2, OssezVariable.s3); + logger.debug("s1/s2/s3 - [{}]", Math.round(10.55)); + OssezVariable objB = new OssezVariable(4, 5, 6); logger.debug("s1/s2/s3 - [{}]/[{}]/[{}]", objA.s1, objA.s2, OssezVariable.s3); diff --git a/src/test/java/com/ossez/codebank/interview/tests/AmazonTest.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/AmazonTest.java similarity index 98% rename from src/test/java/com/ossez/codebank/interview/tests/AmazonTest.java rename to toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/AmazonTest.java index df2101b3ca..8aacd8f4fe 100644 --- a/src/test/java/com/ossez/codebank/interview/tests/AmazonTest.java +++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/AmazonTest.java @@ -1,6 +1,5 @@ -package com.ossez.codebank.interview.tests; +package com.ossez.toolkits.codebank.tests.interview; -import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; diff --git a/src/test/java/com/ossez/codebank/interview/tests/KayakTest.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/KayakTest.java similarity index 78% rename from src/test/java/com/ossez/codebank/interview/tests/KayakTest.java rename to toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/KayakTest.java index 19282437d9..e90e1d27c5 100644 --- a/src/test/java/com/ossez/codebank/interview/tests/KayakTest.java +++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/KayakTest.java @@ -1,64 +1,65 @@ -package com.ossez.codebank.interview.tests; - -import static org.junit.Assert.assertEquals; - -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.ossez.codebank.interview.KayakCountUpDown; -import com.ossez.codebank.interview.KayakRobotMovement; - -/** - * - * @author YuCheng - * - */ -public class KayakTest { - - private final static Logger logger = LoggerFactory.getLogger(KayakTest.class); - - /** - * https://www.cwiki.us/display/ITCLASSIFICATION/Robot+Movement - * - * testGetCoordinates - * - */ - @Test - public void testGetCoordinates() { - logger.debug("TEST Get Coordinat "); - logger.debug("LFFF - [{}]", KayakRobotMovement.getCoordinates("FF")); - logger.debug("LFFFRFFFRRFFF - [{}]", KayakRobotMovement.getCoordinates("LFFFRFFFRRFFF")); - - assertEquals(KayakRobotMovement.getCoordinates("FF"), "0,2"); - assertEquals(KayakRobotMovement.getCoordinates("LFFFRFFFRRFFF"), "-3,0"); - - } - - /** - * https://www.cwiki.us/display/ITCLASSIFICATION/Count+Up+Down - * - * CountUpDown - */ - @Test - public void testCountUpDown() { - logger.debug("TEST Count Up and Down "); - - // 2 -5 - logger.debug("[2 -> 5]"); - logger.debug("UP - {}", new KayakCountUpDown().countUp(2, 5)); - logger.debug("UP & DOWN - {}", new KayakCountUpDown().countUpDown(2, 5)); - - // 0 - 5 - logger.debug("[0 -> 5]"); - logger.debug("UP - {}", new KayakCountUpDown().countUp(0, 5)); - logger.debug("UP & DOWN - {}", new KayakCountUpDown().countUpDown(0, 5)); - - // -1 - 5 - logger.debug("[-1 -> 5]"); - logger.debug("UP - {}", new KayakCountUpDown().countUp(-1, 5)); - logger.debug("UP & DOWN - {}", new KayakCountUpDown().countUpDown(-1, 5)); - - } - -} +package com.ossez.toolkits.codebank.tests.interview; + +import static org.junit.Assert.assertEquals; + +import org.junit.Assert; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.ossez.toolkits.codebank.common.interview.KayakCountUpDown; +import com.ossez.toolkits.codebank.common.interview.KayakRobotMovement; + +/** + * + * @author YuCheng + * + */ +public class KayakTest { + + private final static Logger logger = LoggerFactory.getLogger(KayakTest.class); + + /** + * https://www.cwiki.us/display/ITCLASSIFICATION/Robot+Movement + * + * testGetCoordinates + * + */ + @Test + public void testGetCoordinates() { + logger.debug("TEST Get Coordinat "); + logger.debug("LFFF - [{}]", KayakRobotMovement.getCoordinates("FF")); + logger.debug("LFFFRFFFRRFFF - [{}]", KayakRobotMovement.getCoordinates("LFFFRFFFRRFFF")); + + Assert.assertEquals(KayakRobotMovement.getCoordinates("FF"), "0,2"); + Assert.assertEquals(KayakRobotMovement.getCoordinates("LFFFRFFFRRFFF"), "-3,0"); + + } + + /** + * https://www.cwiki.us/display/ITCLASSIFICATION/Count+Up+Down + * + * CountUpDown + */ + @Test + public void testCountUpDown() { + logger.debug("TEST Count Up and Down "); + + // 2 -5 + logger.debug("[2 -> 5]"); + logger.debug("UP - {}", new KayakCountUpDown().countUp(2, 5)); + logger.debug("UP & DOWN - {}", new KayakCountUpDown().countUpDown(2, 5)); + + // 0 - 5 + logger.debug("[0 -> 5]"); + logger.debug("UP - {}", new KayakCountUpDown().countUp(0, 5)); + logger.debug("UP & DOWN - {}", new KayakCountUpDown().countUpDown(0, 5)); + + // -1 - 5 + logger.debug("[-1 -> 5]"); + logger.debug("UP - {}", new KayakCountUpDown().countUp(-1, 5)); + logger.debug("UP & DOWN - {}", new KayakCountUpDown().countUpDown(-1, 5)); + + } + +} diff --git a/src/test/java/com/ossez/codebank/interview/tests/others/LambdaEvensTest.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/LambdaEvensTest.java similarity index 94% rename from src/test/java/com/ossez/codebank/interview/tests/others/LambdaEvensTest.java rename to toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/LambdaEvensTest.java index 38bdac4519..e17e89777d 100644 --- a/src/test/java/com/ossez/codebank/interview/tests/others/LambdaEvensTest.java +++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/LambdaEvensTest.java @@ -1,4 +1,4 @@ -package com.ossez.codebank.interview.tests.others; +package com.ossez.toolkits.codebank.tests.interview; import org.junit.Test; import org.slf4j.Logger; diff --git a/src/test/java/com/ossez/codebank/interview/tests/MassMutual.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/MassMutual.java similarity index 98% rename from src/test/java/com/ossez/codebank/interview/tests/MassMutual.java rename to toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/MassMutual.java index b88a2fe2f0..b322242a7c 100644 --- a/src/test/java/com/ossez/codebank/interview/tests/MassMutual.java +++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/MassMutual.java @@ -1,4 +1,4 @@ -package com.ossez.codebank.interview.tests; +package com.ossez.toolkits.codebank.tests.interview; import java.io.File; import java.nio.charset.StandardCharsets; diff --git a/src/test/java/com/ossez/codebank/interview/tests/others/MinimumCoinsTest.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/MinimumCoinsTest.java similarity index 89% rename from src/test/java/com/ossez/codebank/interview/tests/others/MinimumCoinsTest.java rename to toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/MinimumCoinsTest.java index 9b251ae5fd..aa806bfb7e 100644 --- a/src/test/java/com/ossez/codebank/interview/tests/others/MinimumCoinsTest.java +++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/MinimumCoinsTest.java @@ -1,12 +1,9 @@ -package com.ossez.codebank.interview.tests.others; +package com.ossez.toolkits.codebank.tests.interview; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; -import java.util.List; - /** * For Minimum Coins * diff --git a/src/test/java/com/ossez/codebank/interview/tests/PillPackTest.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/PillPackTest.java similarity index 94% rename from src/test/java/com/ossez/codebank/interview/tests/PillPackTest.java rename to toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/PillPackTest.java index 17f7e15c5b..3df6538b9f 100644 --- a/src/test/java/com/ossez/codebank/interview/tests/PillPackTest.java +++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/PillPackTest.java @@ -1,83 +1,83 @@ -package com.ossez.codebank.interview.tests; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Stream; - -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * PillPack - * - *
- * https://www.cwiki.us/display/ITCLASSIFICATION/Flatten+Nested+Arrays
- * 
- * - * @author YuCheng - * - */ -public class PillPackTest { - - private final static Logger logger = LoggerFactory.getLogger(PillPackTest.class); - - List returnList = new ArrayList(); - - /** - * https://www.cwiki.us/display/ITCLASSIFICATION/Flatten+Nested+Arrays - * - * FlattenNestedArrays - */ - @Test - public void testFlattenNestedArrays() { - logger.debug("Test FlattenNestedArrays"); - - Object[] array = { 1, 2, new Object[] { 3, 4, new Object[] { 5, new Object[] { new Object[] { 6 } } }, 7 }, 8, 9, 10 }; - logger.debug("LOOP: {} - > {}", Arrays.deepToString(array), Arrays.toString(loopFlatten(array))); - - logger.debug("Java 8: {} - > {}", Arrays.deepToString(array), Arrays.toString(java8Flatten(array).toArray())); - - } - - /** - * Loop And Recursive - * - * @param inputArray - * @return - * @throws IllegalArgumentException - */ - private static Integer[] loopFlatten(Object[] inputArray) throws IllegalArgumentException { - // NULL CHECK - if (inputArray == null) - return null; - - List flatList = new ArrayList(); - - for (Object element : inputArray) { - if (element instanceof Integer) { - flatList.add((Integer) element); - } else if (element instanceof Object[]) { - // Recursive - flatList.addAll(Arrays.asList(loopFlatten((Object[]) element))); - } else { - throw new IllegalArgumentException("Input must be an array of Integers or nested arrays of Integers"); - } - } - return flatList.toArray(new Integer[flatList.size()]); - } - - /** - * Java 8 Stream to Flatten array. - * - * @param array - * @return - */ - private static Stream java8Flatten(Object[] array) { - // int[] flatInt = java8Flatten(array).mapToInt(Integer.class::cast).toArray(); - return Arrays.stream(array).flatMap(o -> o instanceof Object[] ? java8Flatten((Object[]) o) : Stream.of(o)); - - } - -} +package com.ossez.toolkits.codebank.tests.interview; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Stream; + +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * PillPack + * + *
+ * https://www.cwiki.us/display/ITCLASSIFICATION/Flatten+Nested+Arrays
+ * 
+ * + * @author YuCheng + * + */ +public class PillPackTest { + + private final static Logger logger = LoggerFactory.getLogger(PillPackTest.class); + + List returnList = new ArrayList(); + + /** + * https://www.cwiki.us/display/ITCLASSIFICATION/Flatten+Nested+Arrays + * + * FlattenNestedArrays + */ + @Test + public void testFlattenNestedArrays() { + logger.debug("Test FlattenNestedArrays"); + + Object[] array = { 1, 2, new Object[] { 3, 4, new Object[] { 5, new Object[] { new Object[] { 6 } } }, 7 }, 8, 9, 10 }; + logger.debug("LOOP: {} - > {}", Arrays.deepToString(array), Arrays.toString(loopFlatten(array))); + + logger.debug("Java 8: {} - > {}", Arrays.deepToString(array), Arrays.toString(java8Flatten(array).toArray())); + + } + + /** + * Loop And Recursive + * + * @param inputArray + * @return + * @throws IllegalArgumentException + */ + private static Integer[] loopFlatten(Object[] inputArray) throws IllegalArgumentException { + // NULL CHECK + if (inputArray == null) + return null; + + List flatList = new ArrayList(); + + for (Object element : inputArray) { + if (element instanceof Integer) { + flatList.add((Integer) element); + } else if (element instanceof Object[]) { + // Recursive + flatList.addAll(Arrays.asList(loopFlatten((Object[]) element))); + } else { + throw new IllegalArgumentException("Input must be an array of Integers or nested arrays of Integers"); + } + } + return flatList.toArray(new Integer[flatList.size()]); + } + + /** + * Java 8 Stream to Flatten array. + * + * @param array + * @return + */ + private static Stream java8Flatten(Object[] array) { + // int[] flatInt = java8Flatten(array).mapToInt(Integer.class::cast).toArray(); + return Arrays.stream(array).flatMap(o -> o instanceof Object[] ? java8Flatten((Object[]) o) : Stream.of(o)); + + } + +} diff --git a/src/test/java/com/ossez/codebank/interview/tests/TennaTest.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/TennaTest.java similarity index 94% rename from src/test/java/com/ossez/codebank/interview/tests/TennaTest.java rename to toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/TennaTest.java index 2f3ec0f3cd..86e3ad55c8 100644 --- a/src/test/java/com/ossez/codebank/interview/tests/TennaTest.java +++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/TennaTest.java @@ -1,4 +1,4 @@ -package com.ossez.codebank.interview.tests; +package com.ossez.toolkits.codebank.tests.interview; import java.util.HashMap; diff --git a/src/test/java/com/ossez/codebank/interview/tests/WayfairTest.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/WayfairTest.java similarity index 97% rename from src/test/java/com/ossez/codebank/interview/tests/WayfairTest.java rename to toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/WayfairTest.java index 2dde74bcd9..105141c652 100644 --- a/src/test/java/com/ossez/codebank/interview/tests/WayfairTest.java +++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/WayfairTest.java @@ -1,4 +1,4 @@ -package com.ossez.codebank.interview.tests; +package com.ossez.toolkits.codebank.tests.interview; import java.math.BigDecimal; import java.util.ArrayList; diff --git a/toolkits/discourse/pom.xml b/toolkits/discourse/pom.xml index ecc3e6f9bc..40dca25e9e 100644 --- a/toolkits/discourse/pom.xml +++ b/toolkits/discourse/pom.xml @@ -52,6 +52,14 @@ ${java.version} + + org.apache.maven.plugins + maven-compiler-plugin + + 11 + 11 + +