Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class SantasPresentFactory {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- ArrayDeque<Integer> materials = new ArrayDeque<>();
- Arrays.stream(scanner.nextLine().split(" "))
- .mapToInt(Integer::parseInt)
- .forEach(materials::push);
- ArrayDeque<Integer> magics = new ArrayDeque<>();
- Arrays.stream(scanner.nextLine().split(" "))
- .mapToInt(Integer::parseInt)
- .forEach(magics::offer);
- TreeMap<String, Integer> presents = new TreeMap<>(); // will be sorted by name ascending
- HashMap<Integer, String> wishList = new HashMap<>();
- wishList.put(150, "Doll");
- wishList.put(250, "Wooden train");
- wishList.put(300, "Teddy bear");
- wishList.put(400, "Bicycle");
- int counter = 0;
- while (!materials.isEmpty() && !magics.isEmpty()) {
- int material = materials.peek();
- int magic = magics.peek();
- int result = material * magic;
- if (wishList.containsKey(result)) {
- String item = wishList.get(result);
- materials.pop();
- magics.poll();
- if (!presents.containsKey(item)) {
- presents.put(item, 1);
- } else {
- int countOfCurrentPresents = presents.get(item);
- countOfCurrentPresents++;
- presents.put(item, countOfCurrentPresents);
- }
- } else if (result > 0) {
- materials.push(materials.pop() + 15);
- magics.poll();
- } else if (result < 0) {
- int sum = materials.peek() + magics.peek();
- materials.pop();
- magics.poll();
- // magics.push(sum);
- materials.push(sum);
- } else if (result == 0) {
- if (materials.peek() == 0) {
- materials.pop();
- } else if (magics.peek() == 0) {
- magics.poll();
- }
- }
- }
- if (presents.containsKey("Doll") && presents.containsKey("Wooden train")
- || presents.containsKey("Teddy bear") && presents.containsKey("Bicycle")) {
- System.out.println("The presents are crafted! Merry Christmas!");
- if (!materials.isEmpty()) {
- System.out.print("Materials left: ");
- System.out.println(getArrayDequeAsString(", ", materials));
- }
- if (!magics.isEmpty()) {
- System.out.print("Magic left: ");
- System.out.println(getArrayDequeAsString(", ", magics));
- }
- } else {
- System.out.println("No presents this Christmas!");
- if (!materials.isEmpty()) {
- System.out.print("Materials left: ");
- System.out.println(getArrayDequeAsString(", ", materials));
- }
- if (!magics.isEmpty()) {
- System.out.print("Magic left: ");
- System.out.println(getArrayDequeAsString(", ", magics));
- }
- }
- for (Map.Entry<String, Integer> nameCount : presents.entrySet()) {
- System.out.printf("%s: %d%n", nameCount.getKey(), nameCount.getValue());
- }
- }
- static String getArrayDequeAsString(String delimiter, ArrayDeque<Integer> arrayDeque) {
- StringBuilder result = new StringBuilder();
- for (Integer integer : arrayDeque) {
- result.append(integer).append(delimiter);
- }
- return result.substring(0, result.lastIndexOf(delimiter)); // return everything except last delimiter
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement