diff --git a/pom.xml b/pom.xml index b029312..510b582 100644 --- a/pom.xml +++ b/pom.xml @@ -14,8 +14,8 @@ maven-compiler-plugin 3.8.0 - 1.8 - 1.8 + 11 + 11 diff --git a/src/main/java/com/zipcodewilmington/assessment1/part1/BasicArrayUtils.java b/src/main/java/com/zipcodewilmington/assessment1/part1/BasicArrayUtils.java index ef714b5..becd11b 100644 --- a/src/main/java/com/zipcodewilmington/assessment1/part1/BasicArrayUtils.java +++ b/src/main/java/com/zipcodewilmington/assessment1/part1/BasicArrayUtils.java @@ -9,7 +9,7 @@ public class BasicArrayUtils { * @return the first element in the array */ public static String getFirstElement(String[] stringArray) { - return null; + return stringArray[0]; } /** @@ -17,7 +17,7 @@ public static String getFirstElement(String[] stringArray) { * @return the second element in the array */ public static String getSecondElement(String[] stringArray) { - return null; + return stringArray[1]; } /** @@ -25,7 +25,7 @@ public static String getSecondElement(String[] stringArray) { * @return the last element in the array */ public static String getLastElement(String[] stringArray) { - return null; + return stringArray[stringArray.length - 1]; } /** @@ -33,6 +33,6 @@ public static String getLastElement(String[] stringArray) { * @return the second to last element in the array */ public static String getSecondToLastElement(String[] stringArray) { - return null; + return stringArray[stringArray.length - 2]; } } diff --git a/src/main/java/com/zipcodewilmington/assessment1/part1/BasicStringUtils.java b/src/main/java/com/zipcodewilmington/assessment1/part1/BasicStringUtils.java index ca13f2d..f77fe97 100644 --- a/src/main/java/com/zipcodewilmington/assessment1/part1/BasicStringUtils.java +++ b/src/main/java/com/zipcodewilmington/assessment1/part1/BasicStringUtils.java @@ -9,7 +9,8 @@ public class BasicStringUtils { * @return string with identical content, and the first character capitalized */ public static String camelCase(String str) { - return null; + String camel = str.substring(0,1).toUpperCase() + str.substring(1); + return camel; } /** @@ -17,7 +18,9 @@ public static String camelCase(String str) { * @return string with identical contents, in the reverse order */ public static String reverse(String str) { - return null; + StringBuilder sb = new StringBuilder(str); + sb.reverse(); + return sb.toString(); } /** @@ -25,7 +28,10 @@ public static String reverse(String str) { * @return string with identical contents, in reverse order, with first character capitalized */ public static String reverseThenCamelCase(String str) { - return null; + StringBuilder sb = new StringBuilder(str); + sb.reverse(); + String camel = sb.substring(0,1).toUpperCase() + sb.substring(1); + return camel; } @@ -34,7 +40,7 @@ public static String reverseThenCamelCase(String str) { * @return string with identical contents excluding first and last character */ public static String removeFirstAndLastCharacter(String str) { - return null; + return str.substring(1,str.length() - 1); } /** @@ -42,6 +48,15 @@ public static String removeFirstAndLastCharacter(String str) { * @return string with identical characters, each with opposite casing */ public static String invertCasing(String str) { - return null; + char[] chars = str.toCharArray(); + for (int i = 0; i losingMoves = new HashMap<>(); + protected static final HashMap winningMoves = new HashMap<>(); + + public RockPaperSissorsEvaluator() { + String[][] losingMovesArr = new String[][] {{ ROCK, SCISSOR }, { PAPER, ROCK }, { SCISSOR, PAPER }}; + String[][] winningMovesArr = new String[][] { { ROCK, PAPER }, { PAPER, SCISSOR }, { SCISSOR, ROCK }}; + for (int i = 0; i < losingMovesArr.length; i++) { + String[] losingMove = losingMovesArr[i]; + String[] winningMove = winningMovesArr[i]; + losingMoves.put(losingMove[0], losingMove[1]); + winningMoves.put(winningMove[0], winningMove[1]); + } + } + /** * @param handSign a string representative of a hand sign * @return the respective winning move */ public String getWinningMove(String handSign) { - return null; + return winningMoves.get(handSign); } /** @@ -21,7 +37,7 @@ public String getWinningMove(String handSign) { * @return the respective losing move */ public String getLosingMove(String handSign) { - return null; + return losingMoves.get(handSign); } /** @@ -30,6 +46,10 @@ public String getLosingMove(String handSign) { * @return a string representative of the winning hand sign between the two players */ public String getWinner(String handSignOfPlayer1, String handSignOfPlayer2) { - return null; + + boolean didPlayer2Lose = losingMoves.get(handSignOfPlayer1).equals(handSignOfPlayer2); + boolean didPlayer1Lose = losingMoves.get(handSignOfPlayer2).equals(handSignOfPlayer1); + + return didPlayer2Lose ? handSignOfPlayer1 : didPlayer1Lose ? handSignOfPlayer2 : "tie"; } } diff --git a/src/main/java/com/zipcodewilmington/assessment1/part2/ArrayUtils.java b/src/main/java/com/zipcodewilmington/assessment1/part2/ArrayUtils.java index bb9995a..56b7ea4 100644 --- a/src/main/java/com/zipcodewilmington/assessment1/part2/ArrayUtils.java +++ b/src/main/java/com/zipcodewilmington/assessment1/part2/ArrayUtils.java @@ -1,5 +1,7 @@ package com.zipcodewilmington.assessment1.part2; +import java.util.*; + /** * Created by leon on 2/16/18. */ @@ -11,7 +13,13 @@ public class ArrayUtils { * Given an array of objects, named `objectArray`, and an object `objectToCount`, return the number of times the `objectToCount` appears in the `objectArray` */ public static Integer getNumberOfOccurrences(Object[] objectArray, Object objectToCount) { - return null; + int occu = 0; + for (Object obj : objectArray){ + if(objectToCount == obj){ + occu +=1; + } + } + return occu; } /** @@ -21,7 +29,9 @@ public static Integer getNumberOfOccurrences(Object[] objectArray, Object object * Given an array of objects, name `objectArray`, and an object `objectToRemove`, return an array of objects with identical contents excluding `objectToRemove` */ public static Object[] removeValue(Object[] objectArray, Object objectToRemove) { - return null; + ArrayList arrList = new ArrayList(Arrays.asList(objectArray)); + arrList.removeAll(Collections.singleton(objectToRemove)); + return arrList.toArray(Integer[]::new); } /** @@ -30,7 +40,23 @@ public static Object[] removeValue(Object[] objectArray, Object objectToRemove) * given an array of objects, named `objectArray` return the most frequently occuring object in the array */ public static Object getMostCommon(Object[] objectArray) { - return null; + int count = 1; + Object mostCom = objectArray[0]; + Object temp; + for (int i = 0; i < (objectArray.length - 1); i++) { + temp = objectArray[i]; + int tempCount = 0; + for (int j = 1; j < objectArray.length; j++) { + if (temp == objectArray[j]) { + tempCount++; + } + } + if (tempCount > count) { + mostCom = temp; + count = tempCount; + } + } + return mostCom; } @@ -40,7 +66,26 @@ public static Object getMostCommon(Object[] objectArray) { * given an array of objects, named `objectArray` return the least frequently occuring object in the array */ public static Object getLeastCommon(Object[] objectArray) { - return null; + + Map frequencies = new HashMap<>(); + int[] intArr = new int[objectArray.length]; + + for (int i = 0; i < objectArray.length; i++) { + intArr[i] = (Integer) objectArray[i]; + } + for (int num : intArr) { + frequencies.put(num, frequencies.getOrDefault(num, 0) + 1); + } + int occu = Integer.MAX_VALUE; + int leastOccuNum = intArr[0]; + for (int num : frequencies.keySet()) { + int freq = frequencies.get(num); + if (freq < occu) { + occu = freq; + leastOccuNum = num; + } + } + return leastOccuNum; } /** @@ -50,6 +95,13 @@ public static Object getLeastCommon(Object[] objectArray) { * given two arrays `objectArray` and `objectArrayToAdd`, return an array containing all elements in `objectArray` and `objectArrayToAdd` */ public static Object[] mergeArrays(Object[] objectArray, Object[] objectArrayToAdd) { - return null; + Collection result = new ArrayList(objectArray.length + objectArrayToAdd.length); + for (Object val : objectArray) { + result.add(val); + } + for (Object val : objectArrayToAdd) { + result.add(val); + } + return result.toArray(Integer[]::new); } } diff --git a/src/main/java/com/zipcodewilmington/assessment1/part2/MultiplesDeleter.java b/src/main/java/com/zipcodewilmington/assessment1/part2/MultiplesDeleter.java index a348b0d..7c08fd0 100644 --- a/src/main/java/com/zipcodewilmington/assessment1/part2/MultiplesDeleter.java +++ b/src/main/java/com/zipcodewilmington/assessment1/part2/MultiplesDeleter.java @@ -1,5 +1,8 @@ package com.zipcodewilmington.assessment1.part2; +import java.util.Arrays; +import java.util.stream.Collectors; + /** * Created by leon on 2/16/18. */ @@ -10,7 +13,7 @@ public class MultiplesDeleter { * given an array of integers, named `ints` return an identical array with evens removed */ public Integer[] deleteEvens(Integer[] ints) { - return null; + return Arrays.stream(ints).filter(num -> num % 2 != 0).toArray(Integer[]::new); } /** @@ -19,7 +22,7 @@ public Integer[] deleteEvens(Integer[] ints) { * given an array of integers, named `ints` return an identical array with odds removed */ public Integer[] deleteOdds(Integer[] ints) { - return null; + return Arrays.stream(ints).filter(num -> num % 2 == 0).toArray(Integer[]::new); } /** @@ -28,7 +31,7 @@ public Integer[] deleteOdds(Integer[] ints) { * given an array of integers, named `ints` return an identical array with numbers indivisible by 3 removed */ public Integer[] deleteMultiplesOf3(Integer[] ints) { - return null; + return Arrays.stream(ints).filter(num -> num % 3 != 0).toArray(Integer[]::new); } /** @@ -38,6 +41,6 @@ public Integer[] deleteMultiplesOf3(Integer[] ints) { * given an array of integers, named `ints` return an identical array with numbers indivisible by `multiple` removed */ public Integer[] deleteMultiplesOfN(Integer[] ints, int multiple) { - return null; + return Arrays.stream(ints).filter(num -> num % multiple != 0).toArray(Integer[]::new); } } diff --git a/src/main/java/com/zipcodewilmington/assessment1/part2/StringUtils.java b/src/main/java/com/zipcodewilmington/assessment1/part2/StringUtils.java index fc403e5..056b032 100644 --- a/src/main/java/com/zipcodewilmington/assessment1/part2/StringUtils.java +++ b/src/main/java/com/zipcodewilmington/assessment1/part2/StringUtils.java @@ -11,7 +11,8 @@ public class StringUtils { * given a string containing words delimited by spaces, representative of a sentence, return an array of strings, each element representative of a respective word in the sentence */ public static String[] getWords(String sentence) { - return null; + String[] words = sentence.split(" "); + return words; } @@ -21,7 +22,8 @@ public static String[] getWords(String sentence) { * given a string containing words delimited by spaces, representative of a sentence, return the first word of the sentence */ public static String getFirstWord(String sentence) { - return null; + String[] words = sentence.split(" "); + return words[0]; } /** @@ -30,7 +32,10 @@ public static String getFirstWord(String sentence) { * given a string containing words delimited by spaces, representative of a sentence, return the first word with identical contents in reverse order */ public static String reverseFirstWord(String sentence) { - return null; + String[] words = sentence.split(" "); + StringBuilder sb = new StringBuilder(words[0]); + sb.reverse(); + return sb.toString(); } /** @@ -39,7 +44,10 @@ public static String reverseFirstWord(String sentence) { * given a string containing words delimited by spaces, representative of a sentence, return the first word with identical contents in reverse order with the first character capitalized */ public static String reverseFirstWordThenCamelCase(String sentence) { - return null; + String[] words = sentence.split(" "); + StringBuilder sb = new StringBuilder(words[0]); + String word = sb.reverse().substring(0,1).toUpperCase() + sb.substring(1); + return word; } @@ -50,7 +58,7 @@ public static String reverseFirstWordThenCamelCase(String sentence) { * given a string and index, return an identical string excluding the character at the specified index */ public static String removeCharacterAtIndex(String str, int index) { - return null; + return str.substring(0,index) + str.substring(index + 1); } } diff --git a/src/main/java/com/zipcodewilmington/assessment1/part3/Cat.java b/src/main/java/com/zipcodewilmington/assessment1/part3/Cat.java index e731b77..c980ee3 100644 --- a/src/main/java/com/zipcodewilmington/assessment1/part3/Cat.java +++ b/src/main/java/com/zipcodewilmington/assessment1/part3/Cat.java @@ -4,11 +4,15 @@ * Created by leon on 2/16/18. */ public class Cat extends Pet { + public String name = "Cat name"; + public Integer age = 0; /** * @param name name of this Cat * @param age age of this Cat */ public Cat(String name, Integer age) { + this.name = name; + this.age = age; } @@ -16,12 +20,14 @@ public Cat(String name, Integer age) { * @param age age of this Cat */ public Cat(Integer age) { + this.age = age; } /** * @param name name of this Cat */ public Cat(String name) { + this.name = name; } @@ -38,6 +44,24 @@ public Cat() { * @return meow as a string */ public String speak() { - return null; + return "Meow"; + } + + @Override + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; } } diff --git a/src/main/java/com/zipcodewilmington/assessment1/part3/Dog.java b/src/main/java/com/zipcodewilmington/assessment1/part3/Dog.java index 0c775fd..92ef9ca 100644 --- a/src/main/java/com/zipcodewilmington/assessment1/part3/Dog.java +++ b/src/main/java/com/zipcodewilmington/assessment1/part3/Dog.java @@ -4,11 +4,15 @@ * Created by leon on 2/16/18. */ public class Dog extends Pet { + public String name = "Dog name"; + public Integer age = 0; /** * @param name name of this Dog * @param age age of this dog */ public Dog(String name, Integer age) { + this.name = name; + this.age = age; } @@ -16,12 +20,14 @@ public Dog(String name, Integer age) { * @param age age of this dog */ public Dog(Integer age) { + this.age = age; } /** * @param name name of this dog */ public Dog(String name) { + this.name = name; } @@ -38,6 +44,24 @@ public Dog() { * @return bark as a string */ public String speak() { - return null; + return "Bark"; + } + + @Override + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; } } diff --git a/src/main/java/com/zipcodewilmington/assessment1/part3/Pet.java b/src/main/java/com/zipcodewilmington/assessment1/part3/Pet.java index 3c925da..889d15b 100644 --- a/src/main/java/com/zipcodewilmington/assessment1/part3/Pet.java +++ b/src/main/java/com/zipcodewilmington/assessment1/part3/Pet.java @@ -4,6 +4,9 @@ * Created by leon on 2/16/18. */ public abstract class Pet implements Animal { + public String name = ""; + public Integer age = 0; + PetOwner petOwner; /** * nullary constructor * by default, pet has age of 0; name of ""; @@ -15,6 +18,7 @@ public Pet() { * @param name name of this pet */ public Pet(String name) { + this.name = name; } @@ -22,6 +26,7 @@ public Pet(String name) { * @param age age of this pet */ public Pet(int age) { + this.age = age; } /** @@ -29,20 +34,22 @@ public Pet(int age) { * @param age age of this pet */ public Pet(String name, int age) { + this.name = name; + this.age = age; } /** * @return name of this pet */ public String getName() { - return null; + return name; } /** * @return age of this pet */ public Integer getAge() { - return null; + return age; } /** @@ -50,12 +57,13 @@ public Integer getAge() { * ensure this instance of `Pet` is added to the owner's composite `pets` list */ public void setOwner(PetOwner newPetOwner) { + this.petOwner = newPetOwner; } /** * @return PetOwner object whose composite `pets` collection contains this Pet instance */ public PetOwner getOwner() { - return null; + return this.petOwner; } } diff --git a/src/main/java/com/zipcodewilmington/assessment1/part3/PetOwner.java b/src/main/java/com/zipcodewilmington/assessment1/part3/PetOwner.java index 7bbf2ab..8d8bc22 100644 --- a/src/main/java/com/zipcodewilmington/assessment1/part3/PetOwner.java +++ b/src/main/java/com/zipcodewilmington/assessment1/part3/PetOwner.java @@ -1,27 +1,47 @@ package com.zipcodewilmington.assessment1.part3; +import java.util.ArrayList; + /** * Created by leon on 2/16/18. */ public class PetOwner { + String name; + ArrayList pets; /** * @param name name of the owner of the Pet * @param pets array of Pet object */ public PetOwner(String name, Pet... pets) { + this.name = name; + this.pets = new ArrayList<>(); + + if (pets != null) { + for (Pet eachPet : pets) { + eachPet.setOwner(this); + this.pets.add(eachPet); + } + } } /** * @param pet pet to be added to the composite collection of Pets */ public void addPet(Pet pet) { + pet.setOwner(this); + pets.add(pet); } /** * @param pet pet to be removed from the composite collection Pets */ public void removePet(Pet pet) { - + for (int i = 0; i < this.pets.size(); i++) { + Pet eachPet = this.pets.get(i); + if (eachPet.name.equals(pet.name)) { + this.pets.set(i, null); + } + } } /** @@ -29,14 +49,24 @@ public void removePet(Pet pet) { * @return true if I own this pet */ public Boolean isOwnerOf(Pet pet) { - return null; + if(pet.getOwner() == null){ + return false; + } + return pet.getOwner().name.equals(this.name); } /** * @return the age of the Pet object whose age field is the lowest amongst all Pets in this class */ public Integer getYoungetPetAge() { - return null; + int youngestAge = Integer.MAX_VALUE; + for (Pet eachPet : this.pets) { + if (eachPet.getAge() < youngestAge) { + youngestAge = eachPet.getAge(); + } + } + + return youngestAge; } @@ -46,7 +76,14 @@ public Integer getYoungetPetAge() { * @return the age of the Pet object whose age field is the highest amongst all Pets in this class */ public Integer getOldestPetAge() { - return null; + int oldestAge = 0; + for (Pet eachPet : this.pets) { + if (eachPet.getAge() > oldestAge) { + oldestAge = eachPet.getAge(); + } + } + + return oldestAge; } @@ -54,27 +91,32 @@ public Integer getOldestPetAge() { * @return the sum of ages of Pet objects stored in this class divided by the number of Pet object */ public Float getAveragePetAge() { - return null; + float sum = 0; + for (Pet eachPet : this.pets) { + sum += eachPet.getAge(); + } + + return sum / this.pets.size(); } /** * @return the number of Pet objects stored in this class */ public Integer getNumberOfPets() { - return null; + return this.pets.size(); } /** * @return the name property of the Pet */ public String getName() { - return null; + return name; } /** * @return array representation of animals owned by this PetOwner */ public Pet[] getPets() { - return null; + return this.pets.toArray(Pet[]::new); } } diff --git a/src/main/java/com/zipcodewilmington/assessment1/part4/Jumper.java b/src/main/java/com/zipcodewilmington/assessment1/part4/Jumper.java index f881e9c..25acb13 100644 --- a/src/main/java/com/zipcodewilmington/assessment1/part4/Jumper.java +++ b/src/main/java/com/zipcodewilmington/assessment1/part4/Jumper.java @@ -5,7 +5,19 @@ public class Jumper { /* * Complete the function below. */ - public int jumps(int k, int j) { - return -1; + public int jumps(int flagHeight, int jumpHeight) { + + int totalHeight = 0; + int totalJumps = 0; + + while ((totalHeight + jumpHeight) <= flagHeight){ + totalHeight += jumpHeight; + totalJumps++; + } + while(totalHeight < flagHeight){ + totalHeight++; + totalJumps++; + } + return totalJumps; } } diff --git a/src/main/java/com/zipcodewilmington/assessment1/part5/Palindrome.java b/src/main/java/com/zipcodewilmington/assessment1/part5/Palindrome.java index 89e2016..5abdce8 100644 --- a/src/main/java/com/zipcodewilmington/assessment1/part5/Palindrome.java +++ b/src/main/java/com/zipcodewilmington/assessment1/part5/Palindrome.java @@ -3,6 +3,15 @@ public class Palindrome { public Integer countPalindromes(String input){ - return null; + int count = 0; + for (int i = 0; i < input.length(); i++) { + for (int j = 0; j < input.length() - i; j++) { + StringBuilder sb = new StringBuilder(input.substring(j, j + (i + 1))); + StringBuilder sbClone = new StringBuilder(sb.toString()); + boolean isPalin = sbClone.reverse().toString().equals(sb.toString()); + count += isPalin ? 1 : 0; + } + } + return count; } }