Big update: Adding all advent of codes to same repo
This commit is contained in:
BIN
AdventOfCode2020/day15/NumberTurns.class
Normal file
BIN
AdventOfCode2020/day15/NumberTurns.class
Normal file
Binary file not shown.
BIN
AdventOfCode2020/day15/day15.class
Normal file
BIN
AdventOfCode2020/day15/day15.class
Normal file
Binary file not shown.
40
AdventOfCode2020/day15/day15.java
Normal file
40
AdventOfCode2020/day15/day15.java
Normal file
@@ -0,0 +1,40 @@
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
class day15 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
int[] startingNumbers = {17,1,3,16,19,0};
|
||||
ArrayList<Integer> spokenNums = new ArrayList<>();
|
||||
HashMap<Integer, Integer> seenLast = new HashMap<>();
|
||||
int lastNumber = 0;
|
||||
|
||||
for (int i = 0; i < startingNumbers.length; i++) {
|
||||
spokenNums.add(startingNumbers[i]);
|
||||
lastNumber = startingNumbers[i];
|
||||
if (i + 1 != startingNumbers.length) {
|
||||
seenLast.put(startingNumbers[i], i + 1);
|
||||
}
|
||||
}
|
||||
|
||||
while (spokenNums.size() < 30000000) {
|
||||
|
||||
if (!seenLast.containsKey(lastNumber)) {
|
||||
seenLast.put(lastNumber, spokenNums.size());
|
||||
spokenNums.add(0);
|
||||
lastNumber = 0;
|
||||
} else {
|
||||
int diff = spokenNums.size() - seenLast.get(lastNumber);
|
||||
seenLast.put(lastNumber, spokenNums.size());
|
||||
lastNumber = diff;
|
||||
spokenNums.add(lastNumber);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
System.out.println("Number: " + spokenNums.get(spokenNums.size() - 1));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user