From 45a037d56e69ccd90014c9631834a749bb9768e7 Mon Sep 17 00:00:00 2001 From: Oliver Akins Date: Sun, 25 Dec 2022 15:54:59 -0600 Subject: [PATCH] Add Generic day 1 --- day_01/java/Generic.java | 62 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 day_01/java/Generic.java diff --git a/day_01/java/Generic.java b/day_01/java/Generic.java new file mode 100644 index 0000000..643d1fc --- /dev/null +++ b/day_01/java/Generic.java @@ -0,0 +1,62 @@ +import java.io.File; +import java.io.FileNotFoundException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Scanner; + +class Generic { + /* + * Expects two command line arguments: + * - The file name to load + * - The number of top values to sum together + */ + public static void main (String[] args) { + Scanner f; + try { + f = Generic.readFile(args[0]); + } catch (FileNotFoundException e) { + System.out.println("File not found, stopping execution"); + return; + } + + Integer count = Integer.parseInt(args[1]); + + ArrayList top = new ArrayList(); + Integer runningSum = 0; + while (f.hasNextLine()) { + String l = f.nextLine(); + if (l.equals("")) { + if (top.size() < count) { + top.add(runningSum); + } + else if (Collections.min(top) < runningSum) { + top.add(runningSum); + top.removeIf(x -> x <= Collections.min(top)); + } + runningSum = 0; + } else { + runningSum = runningSum + Integer.parseInt(l); + } + } + f.close(); + + + Collections.sort(top, Collections.reverseOrder()); + System.out.print( + "The largest " + count + " values are: " + + top.subList(0, count).toString() + + " totalling: " + ); + Integer sum = 0; + for (int i = 0; i < count; i++) { + sum = sum + top.get(i); + } + System.out.println(sum); + } + + private static Scanner readFile(String file) throws FileNotFoundException { + File f = new File(file); + Scanner s = new Scanner(f); + return s; + } +} \ No newline at end of file