From 689ec45baf395e201df244fe184a77dd1dc26cf0 Mon Sep 17 00:00:00 2001 From: Yucheng Hu Date: Thu, 3 Jan 2019 01:11:53 -0500 Subject: [PATCH] =?UTF-8?q?Amazon=20=E9=9D=A2=E8=AF=95=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=8C=91=E6=88=98=E9=A2=98=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../codebank/interview/tests/AmazonTest.java | 210 ++++++++++++++++++ 1 file changed, 210 insertions(+) create mode 100644 src/test/java/com/ossez/codebank/interview/tests/AmazonTest.java diff --git a/src/test/java/com/ossez/codebank/interview/tests/AmazonTest.java b/src/test/java/com/ossez/codebank/interview/tests/AmazonTest.java new file mode 100644 index 0000000000..df2101b3ca --- /dev/null +++ b/src/test/java/com/ossez/codebank/interview/tests/AmazonTest.java @@ -0,0 +1,210 @@ +package com.ossez.codebank.interview.tests; + +import java.lang.reflect.Array; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.stream.Stream; + +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Amazon + * + *
+ * https://www.cwiki.us/display/ITCLASSIFICATION/Flatten+Nested+Arrays
+ * 
+ * + * @author YuCheng + * + */ +public class AmazonTest { + + private final static Logger logger = LoggerFactory.getLogger(AmazonTest.class); + + List returnList = new ArrayList(); + + /** + * https://www.cwiki.us/display/ITCLASSIFICATION/Flatten+Nested+Arrays + * + * FlattenNestedArrays + */ + @Test + public void testFlattenNestedArrays() { + logger.debug("Test FlattenNestedArrays"); + int numRows = 3; + int numColumns = 3; + List> area = new ArrayList>(); + List a1 = new ArrayList(); + List a2 = new ArrayList(); + List a3 = new ArrayList(); + + a1.add(1); + a1.add(0); + a1.add(0); + + a2.add(1); + a2.add(0); + a2.add(0); + + a3.add(1); + a3.add(9); + a3.add(1); + area.add(a1); + area.add(a2); + area.add(a3); + + int countD = 0; + + int x = 0; + int y = 0; + + for (int i = 0; i < area.size(); i++) { + boolean found9 = false; + y = 0; + + List xList = area.get(i); + for (int j = 0; j < xList.size(); j++) { + if (xList.get(j) != 9) { + y++; + } else { + found9 = true; + break; + } + + } + + if (found9) { + break; + } + + x++; + + } + + int carX = 0; + int carY = 0; + + for (int k = 0; k < numRows * numRows; k++) { + + String command = makeMove(carX, carY, numRows, numColumns, area); + + if (command != null) { + + if (command.equals("U")) { + carY = carY + 1; + } + if (command.equals("R")) { + carX = carX + 1; + } + if (command.equals("L")) { + carX = carX - 1; + } + if (command.equals("D")) { + carY = carY + 1; + } + + countD = countD + 1; + + if (carX == x && carY == y) { + break; + } + } else { + break; + } + } + + System.out.println("---" + x + y); + System.out.println("--COUNT-" + countD ); + + } + + /** + * Java 8 Stream to Flatten array. + * + * @param array + * @return + */ + private static String makeMove(int carX, int carY, int numRows, int numColumns, List> area) { + + + + if ((carX + 1 0 && area.get(carX + 1).get(carY) !=9 ) + if (area.get(carX - 1).get(carY) == 1) + return "L"; + else + return "F"; + + else if (carX > 0 && carY > 0 && area.get(carX - 1).get(carY - 1) == 1) + return "D"; + + return null; + } + + /** + * Loop And Recursive + * + * @param inputArray + * @return + * @throws IllegalArgumentException + */ + private List> nearestVegetarianRestaurant(int totalRestaurants, List> allLocations, int numRestaurants) { + // WRITE YOUR CODE HERE + + List> ret = new ArrayList>(); + HashMap> mp = new HashMap>(); + Double[] keyArray = new Double[totalRestaurants]; + + int i = 0; + for (List al : allLocations) { + Double dis = getDis(al.get(0), al.get(1)); + mp.put(dis, al); + keyArray[i] = dis; + + i++; + } + + Arrays.sort(keyArray); + for (int j = 0; j < numRestaurants; j++) { + ret.add(mp.get(keyArray[j])); + } + + return null; + } + + private Double getDis(int a, int b) { + // WRITE YOUR CODE HERE + + return Math.sqrt(a * a + b * b); + + } + + /** + * 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)); + + } + +}