From 43c0df0d22087679ef9be036e5bdd3c60b48f583 Mon Sep 17 00:00:00 2001 From: Mattrixwv Date: Wed, 17 Jun 2020 10:45:47 -0400 Subject: [PATCH] Updated for performance --- .../ProjectEuler/Problems/Problem18.java | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/main/java/mattrixwv/ProjectEuler/Problems/Problem18.java b/src/main/java/mattrixwv/ProjectEuler/Problems/Problem18.java index 1ed5023..bd53eb1 100644 --- a/src/main/java/mattrixwv/ProjectEuler/Problems/Problem18.java +++ b/src/main/java/mattrixwv/ProjectEuler/Problems/Problem18.java @@ -1,7 +1,7 @@ //ProjectEuler/Java/Problem18.java //Matthew Ellison // Created: 03-11-19 -//Modified: 03-28-18 +//Modified: 06-17-20 //Find the maximum total from top to bottom /* 75 @@ -23,7 +23,7 @@ //This is done using a breadth first search //Unless otherwise listed all non-standard includes are my own creation and available from https://bibucket.org/Mattrixwv/JavaClasses /* - Copyright (C) 2019 Matthew Ellison + Copyright (C) 2020 Matthew Ellison This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -47,16 +47,16 @@ import java.util.Arrays; public class Problem18 extends Problem{ //The number of rows in the array - private static final Integer NUM_ROWS = 15; + private static final int NUM_ROWS = 15; //Used to keep track of where the best location came from private static class location{ - public Integer xLocation; - public Integer yLocation; - public Integer total; + public int xLocation; + public int yLocation; + public int total; //Used originally for debugging so I could trace the path backwards @SuppressWarnings("unused") - public Boolean fromRight; - location(Integer x, Integer y, Integer t, Boolean r){ + public boolean fromRight; + location(int x, int y, int t, boolean r){ xLocation = x; yLocation = y; total = t; @@ -113,7 +113,7 @@ public class Problem18 extends Problem{ //Add the second row as possible points possiblePoints.add(new location(0, 1, (list.get(0).get(0) + list.get(1).get(0)), true)); possiblePoints.add(new location(1, 1, (list.get(0).get(0) + list.get(1).get(1)), false)); - Boolean foundBottom = false; //Used when you find a point at the bottom of the list + boolean foundBottom = false; //Used when you find a point at the bottom of the list //Loop until you find the bottom of the list while(!foundBottom){ @@ -133,8 +133,8 @@ public class Problem18 extends Problem{ //Add to the list of possible points from the point we just found and //If you are at the bottom raise the flag to end the program - Integer xLoc = minLoc.xLocation; - Integer yLoc = minLoc.yLocation + 1; //Add one because you will always be moving to the next row + int xLoc = minLoc.xLocation; + int yLoc = minLoc.yLocation + 1; //Add one because you will always be moving to the next row if(yLoc >= NUM_ROWS){ foundBottom = true; } @@ -153,13 +153,13 @@ public class Problem18 extends Problem{ //Save the results //Get the correct total which will be the inversion of the current one - Integer actualTotal = ((100 * NUM_ROWS) - foundPoints.get(foundPoints.size() - 1).total); + int actualTotal = ((100 * NUM_ROWS) - foundPoints.get(foundPoints.size() - 1).total); - result = String.format("The value of the longest path is " + actualTotal.toString()); + result = String.format("The value of the longest path is " + actualTotal); } } /* Results: The value of the longest path is 1074 -It took 1.585 milliseconds to solve this problem. +It took 278.899 microseconds to solve this problem. */