Updated classes plugin

This commit is contained in:
2022-07-30 16:45:59 -04:00
parent 3ff3cc061a
commit f32c14a38c
9 changed files with 59 additions and 50 deletions

View File

@@ -27,7 +27,7 @@
<dependency>
<groupId>mattrixwv</groupId>
<artifactId>myClasses</artifactId>
<version>1.0-SNAPSHOT</version>
<version>1.0.1</version>
</dependency>
</dependencies>

View File

@@ -1,11 +1,11 @@
//ProjectEulerJava/src/main/java/mattrixwv/ProjectEuler/Problems/Problem12.java
//Matthew Ellison
// Created: 03-04-19
//Modified: 07-03-21
//Modified: 07-30-22
//What is the value of the first triangle number to have over five hundred divisors?
//Unless otherwise listed all non-standard includes are my own creation and available from https://bibucket.org/Mattrixwv/JavaClasses
/*
Copyright (C) 2021 Matthew Ellison
Copyright (C) 2022 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
@@ -24,6 +24,7 @@ package mattrixwv.ProjectEuler.Problems;
import java.util.ArrayList;
import java.util.List;
import mattrixwv.NumberAlgorithms;
@@ -35,7 +36,7 @@ public class Problem12 extends Problem{
//Instance variables
private long sum; //The sum of the numbers up to counter
private long counter; //The next number to be added to sum
private ArrayList<Long> divisors; //Holds the divisors of the triangular number sum
private List<Long> divisors; //Holds the divisors of the triangular number sum
//Functions
//Constructor
@@ -43,7 +44,7 @@ public class Problem12 extends Problem{
super(String.format("What is the value of the first triangle number to have over %d divisors?", GOAL_DIVISORS));
sum = 1;
counter = 2;
divisors = new ArrayList<Long>();
divisors = new ArrayList<>();
}
//Operational functions
//Solve the problem
@@ -82,6 +83,7 @@ public class Problem12 extends Problem{
solved = true;
}
//Reset the problem so it can be run again
@Override
public void reset(){
super.reset();
sum = 1;
@@ -106,7 +108,7 @@ public class Problem12 extends Problem{
return counter - 1;
}
//Returns the list of divisors of the requested number
public ArrayList<Long> getDivisorsOfTriangularNumber(){
public List<Long> getDivisorsOfTriangularNumber(){
solvedCheck("divisors of the triangular number");
return divisors;
}

View File

@@ -1,11 +1,11 @@
//ProjectEulerJava/src/main/java/mattrixwv/ProjectEuler/Problems/Problem2.java
//Matthew Ellison
// Created: 03-01-19
//Modified: 07-03-21
//Modified: 07-30-22
//The sum of the even Fibonacci numbers less than 4,000,000
//Unless otherwise listed all non-standard includes are my own creation and available from https://bibucket.org/Mattrixwv/JavaClasses
/*
Copyright (C) 2021 Matthew Ellison
Copyright (C) 2022 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
@@ -23,7 +23,7 @@
package mattrixwv.ProjectEuler.Problems;
import java.util.ArrayList;
import java.util.List;
import mattrixwv.NumberAlgorithms;
@@ -55,7 +55,7 @@ public class Problem2 extends Problem{
//Get a list of all fibonacci numbers <= TOP_NUM
ArrayList<Integer> fibNums = NumberAlgorithms.getAllFib(TOP_NUM);
List<Integer> fibNums = NumberAlgorithms.getAllFib(TOP_NUM);
//Step through every element in the list checking if it is even
for(int num : fibNums){
//If the number is even add it to the running tally

View File

@@ -1,11 +1,11 @@
//ProjectEulerJava/src/main/java/mattrixwv/ProjectEuler/Problems/Problem21.java
//Matthew Ellison
// Created: 03-18-19
//Modified: 07-03-21
//Modified: 07-30-22
//Evaluate the sum of all the amicable numbers under 10000
//Unless otherwise listed all non-standard includes are my own creation and available from https://bibucket.org/Mattrixwv/JavaClasses
/*
Copyright (C) 2021 Matthew Ellison
Copyright (C) 2022 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
@@ -28,6 +28,7 @@ import mattrixwv.NumberAlgorithms;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Problem21 extends Problem{
@@ -42,8 +43,8 @@ public class Problem21 extends Problem{
//Constructor
public Problem21(){
super(String.format("Evaluate the sum of all the amicable numbers under %d", LIMIT));
divisorSum = new ArrayList<Integer>();
amicable = new ArrayList<Integer>();
divisorSum = new ArrayList<>();
amicable = new ArrayList<>();
reserveArray();
}
//Operational functions
@@ -69,7 +70,7 @@ public class Problem21 extends Problem{
//Generate the divisors of all numbers < 10000, get their sum, and add it to the list
for(int cnt = 1;cnt < LIMIT;++cnt){
ArrayList<Integer> divisors = NumberAlgorithms.getDivisors(cnt); //Get all the divisors of a number
List<Integer> divisors = NumberAlgorithms.getDivisors(cnt); //Get all the divisors of a number
if(divisors.size() > 1){
divisors.remove(divisors.get(divisors.size() - 1)); //Remove the last entry because it will be the number itself
}
@@ -116,16 +117,16 @@ public class Problem21 extends Problem{
@Override
public String getResult(){
solvedCheck("result");
StringBuilder result = new StringBuilder(String.format("All amicable numbers less than %d are\n", LIMIT));
StringBuilder result = new StringBuilder(String.format("All amicable numbers less than %d are%n", LIMIT));
for(int cnt = 0;cnt < amicable.size();++cnt){
result.append(String.format("%d\n", amicable.get(cnt)));
result.append(String.format("%d%n", amicable.get(cnt)));
}
result.append(String.format("The sum of all of these amicable numbers is %d", ArrayAlgorithms.getSum(amicable)));
return result.toString();
}
//Returns a vector with all of the amicable numbers calculated
public ArrayList<Integer> getAmicable(){
public List<Integer> getAmicable(){
solvedCheck("amicable numbers");
return amicable;
}

View File

@@ -1,11 +1,11 @@
//ProjectEulerJava/src/main/java/mattrixwv/ProjectEuler/Problems/Problem23.java
//Matthew Ellison
// Created: 03-22-19
//Modified: 07-03-21
//Modified: 07-30-22
//Find the sum of all the positive integers which cannot be written as the sum of two abundant numbers
//Unless otherwise listed all non-standard includes are my own creation and available from https://bibucket.org/Mattrixwv/JavaClasses
/*
Copyright (C) 2021 Matthew Ellison
Copyright (C) 2022 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
@@ -27,6 +27,7 @@ import mattrixwv.ArrayAlgorithms;
import mattrixwv.NumberAlgorithms;
import java.util.ArrayList;
import java.util.List;
public class Problem23 extends Problem{
@@ -41,7 +42,7 @@ public class Problem23 extends Problem{
//Constructor
public Problem23(){
super("Find the sum of all the positive integers which cannot be written as the sum of two abundant numbers");
divisorSums = new ArrayList<Integer>();
divisorSums = new ArrayList<>();
reserveArray();
sum = 0;
}
@@ -68,7 +69,7 @@ public class Problem23 extends Problem{
//Get the sum of the divisors of all numbers < MAX_NUM
for(int cnt = 1;cnt < MAX_NUM;++cnt){
ArrayList<Integer> div = NumberAlgorithms.getDivisors(cnt);
List<Integer> div = NumberAlgorithms.getDivisors(cnt);
//Remove the last element, which is the number itself. This gives us the propper divisors
if(div.size() > 1){
div.remove(div.size() - 1);
@@ -77,7 +78,7 @@ public class Problem23 extends Problem{
}
//Get the abundant numbers
ArrayList<Integer> abund = new ArrayList<Integer>();
ArrayList<Integer> abund = new ArrayList<>();
for(int cnt = 0;cnt < divisorSums.size();++cnt){
if(divisorSums.get(cnt) > cnt){
abund.add(cnt);
@@ -100,16 +101,16 @@ public class Problem23 extends Problem{
}
//A function that returns true if num can be created by adding two elements from abund and false if it cannot
private boolean isSum(final ArrayList<Integer> abund, int num){
int sum = 0;
int tempSum = 0;
//Pick a number for the first part of the sum
for(int firstNum = 0;firstNum < abund.size();++firstNum){
//Pick a number for the second part of the sum
for(int secondNum = firstNum;secondNum < abund.size();++secondNum){
sum = abund.get(firstNum) + abund.get(secondNum);
if(sum == num){
tempSum = abund.get(firstNum) + abund.get(secondNum);
if(tempSum == num){
return true;
}
else if(sum > num){
else if(tempSum > num){
break;
}
}

View File

@@ -1,11 +1,11 @@
//ProjectEulerJava/src/main/java/mattrixwv/ProjectEuler/Problems/Problem24.java
//Matthew Ellison
// Created: 03-24-19
//Modified: 07-03-21
//Modified: 07-30-22
//What is the millionth lexicographic permutation of the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9?
//Unless otherwise listed all non-standard includes are my own creation and available from https://bibucket.org/Mattrixwv/JavaClasses
/*
Copyright (C) 2021 Matthew Ellison
Copyright (C) 2022 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
@@ -26,6 +26,7 @@ package mattrixwv.ProjectEuler.Problems;
import mattrixwv.StringAlgorithms;
import java.util.ArrayList;
import java.util.List;
public class Problem24 extends Problem{
@@ -34,13 +35,13 @@ public class Problem24 extends Problem{
private static final int NEEDED_PERM = 1000000; //The number of the permutation that you need
private static String nums = "0123456789"; //All of the characters that we need to get the permutations of
//Instance variables
private ArrayList<String> permutations; //Holds all of the permutations of the string nums
private List<String> permutations; //Holds all of the permutations of the string nums
//Functions
//Constructor
public Problem24(){
super(String.format("What is the millionth lexicographic permutation of the digits %s?", nums));
permutations = new ArrayList<String>();
permutations = new ArrayList<>();
}
//Operational functions
//Solve the problems
@@ -79,7 +80,7 @@ public class Problem24 extends Problem{
return String.format("The 1 millionth permutation is %s", permutations.get(NEEDED_PERM - 1));
}
//Returns an ArrayList with all of the permutations
public ArrayList<String> getPermutationsList(){
public List<String> getPermutationsList(){
solvedCheck("permutations");
return permutations;
}

View File

@@ -1,11 +1,11 @@
//ProjectEulerJava/src/main/java/mattrixwv/ProjectEuler/Problems/Problem3.java
//Matthew Ellison
// Created: 03-01-19
//Modified: 07-03-21
//Modified: 07-30-22
//The largest prime factor of 600851475143
//Unless otherwise listed all non-standard includes are my own creation and available from https://bibucket.org/Mattrixwv/JavaClasses
/*
Copyright (C) 2021 Matthew Ellison
Copyright (C) 2022 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
@@ -24,6 +24,7 @@ package mattrixwv.ProjectEuler.Problems;
import java.util.ArrayList;
import java.util.List;
import mattrixwv.NumberAlgorithms;
import mattrixwv.exceptions.InvalidResult;
@@ -34,13 +35,13 @@ public class Problem3 extends Problem{
//Static variables
private static final long GOAL_NUMBER = 600851475143L; //The number that needs factored
//Instance variables
private ArrayList<Long> factors; //Holds the factors of goalNumber
private List<Long> factors; //Holds the factors of goalNumber
//Functions
//Constructor
public Problem3(){
super(String.format("What is the largest prime factor of %d?", GOAL_NUMBER));
factors = new ArrayList<Long>();
factors = new ArrayList<>();
}
//Operational functions
//Solve the problem
@@ -80,7 +81,7 @@ public class Problem3 extends Problem{
return String.format("The largest factor of the number %d is %d", GOAL_NUMBER, factors.get(factors.size() - 1));
}
//Returns the list of factors of the number
public ArrayList<Long> getFactors(){
public List<Long> getFactors(){
solvedCheck("factors");
return factors;
}

View File

@@ -1,11 +1,11 @@
//ProjectEulerJava/src/main/java/mattrixwv/ProjectEuler/Problems/Problem35.java
//Matthew Ellison
// Created: 06-05-21
//Modified: 07-03-21
//Modified: 07-30-22
//How many circular primes are there below one million?
//Unless otherwise listed all non-standard includes are my own creation and available from https://bibucket.org/Mattrixwv/JavaClasses
/*
Copyright (C) 2021 Matthew Ellison
Copyright (C) 2022 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
@@ -24,6 +24,7 @@ package mattrixwv.ProjectEuler.Problems;
import java.util.ArrayList;
import java.util.List;
import mattrixwv.NumberAlgorithms;
@@ -33,12 +34,12 @@ public class Problem35 extends Problem{
//Static variables
private static final int MAX_NUM = 999999; //The largest number that we are checking for primes
//Instance variables
private ArrayList<Integer> primes; //The primes below MAX_NUM
private List<Integer> primes; //The primes below MAX_NUM
private ArrayList<Integer> circularPrimes; //The circular primes below MAX_NUM
//Functions
//Returns a list of all rotations of a string passed to it
private ArrayList<String> getRotations(String str){
ArrayList<String> rotations = new ArrayList<String>();
ArrayList<String> rotations = new ArrayList<>();
rotations.add(str);
for(int cnt = 1;cnt < str.length();++cnt){
str = str.substring(1) + str.substring(0, 1);
@@ -49,8 +50,8 @@ public class Problem35 extends Problem{
//Constructor
public Problem35(){
super("How many circular primes are there below one million?");
primes = new ArrayList<Integer>();
circularPrimes = new ArrayList<Integer>();
primes = new ArrayList<>();
circularPrimes = new ArrayList<>();
}
//Operational functions
//Solve the problem
@@ -72,7 +73,7 @@ public class Problem35 extends Problem{
//Get all of the rotations of the prime and see if they are also prime
ArrayList<String> rotations = getRotations(Integer.toString(prime));
for(String rotation : rotations){
int p = Integer.valueOf(rotation);
int p = Integer.parseInt(rotation);
if(!primes.contains(p)){
allRotationsPrime = false;
break;
@@ -92,6 +93,7 @@ public class Problem35 extends Problem{
solved = true;
}
//Reset the problem so it can be run again
@Override
public void reset(){
super.reset();
primes.clear();
@@ -104,12 +106,12 @@ public class Problem35 extends Problem{
return String.format("The number of all circular prime numbers under %d is %d", MAX_NUM, circularPrimes.size());
}
//Returns the ArrayList of primes < MAX_NUM
public ArrayList<Integer> getPrimes(){
public List<Integer> getPrimes(){
solvedCheck("list of primes");
return primes;
}
//Returns the ArrayList of circular primes < MAX_NUM
public ArrayList<Integer> getCircularPrimes(){
public List<Integer> getCircularPrimes(){
solvedCheck("list of circular primes");
return circularPrimes;
}

View File

@@ -1,11 +1,11 @@
//ProjectEulerJava/src/main/java/mattrixwv/ProjectEuler/Problems/Problem7.java
//Matthew Ellison
// Created: 03-01-19
//Modified: 07-03-21
//Modified: 07-30-22
//What is the 10001th prime number?
//Unless otherwise listed all non-standard includes are my own creation and available from https://bibucket.org/Mattrixwv/JavaClasses
/*
Copyright (C) 2021 Matthew Ellison
Copyright (C) 2022 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
@@ -24,6 +24,7 @@ package mattrixwv.ProjectEuler.Problems;
import java.util.ArrayList;
import java.util.List;
import mattrixwv.NumberAlgorithms;
@@ -33,13 +34,13 @@ public class Problem7 extends Problem{
//Static variables
private static final long NUMBER_OF_PRIMES = 10001; //The number of primes we are trying to get
//Instance variables
private ArrayList<Long> primes;
private List<Long> primes;
//Functions
//Constructor
public Problem7(){
super(String.format("What is the %dth prime number?", NUMBER_OF_PRIMES));
primes = new ArrayList<Long>();
primes = new ArrayList<>();
}
//Operational functions
//Solve the problem