Initial project setup + Day 1
This commit is contained in:
129
.gitignore
vendored
Normal file
129
.gitignore
vendored
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
|
||||||
|
# Created by https://www.gitignore.io/api/maven,kotlin,intellij
|
||||||
|
# Edit at https://www.gitignore.io/?templates=maven,kotlin,intellij
|
||||||
|
|
||||||
|
### Intellij ###
|
||||||
|
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
|
||||||
|
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||||
|
|
||||||
|
# User-specific stuff
|
||||||
|
.idea/**/workspace.xml
|
||||||
|
.idea/**/tasks.xml
|
||||||
|
.idea/**/usage.statistics.xml
|
||||||
|
.idea/**/dictionaries
|
||||||
|
.idea/**/shelf
|
||||||
|
|
||||||
|
# Generated files
|
||||||
|
.idea/**/contentModel.xml
|
||||||
|
|
||||||
|
# Sensitive or high-churn files
|
||||||
|
.idea/**/dataSources/
|
||||||
|
.idea/**/dataSources.ids
|
||||||
|
.idea/**/dataSources.local.xml
|
||||||
|
.idea/**/sqlDataSources.xml
|
||||||
|
.idea/**/dynamic.xml
|
||||||
|
.idea/**/uiDesigner.xml
|
||||||
|
.idea/**/dbnavigator.xml
|
||||||
|
|
||||||
|
# Gradle
|
||||||
|
.idea/**/gradle.xml
|
||||||
|
.idea/**/libraries
|
||||||
|
|
||||||
|
# Gradle and Maven with auto-import
|
||||||
|
# When using Gradle or Maven with auto-import, you should exclude module files,
|
||||||
|
# since they will be recreated, and may cause churn. Uncomment if using
|
||||||
|
auto-import.
|
||||||
|
.idea/modules.xml
|
||||||
|
.idea/*.iml
|
||||||
|
.idea/modules
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
|
||||||
|
# CMake
|
||||||
|
cmake-build-*/
|
||||||
|
|
||||||
|
# Mongo Explorer plugin
|
||||||
|
.idea/**/mongoSettings.xml
|
||||||
|
|
||||||
|
# File-based project format
|
||||||
|
*.iws
|
||||||
|
|
||||||
|
# IntelliJ
|
||||||
|
out/
|
||||||
|
|
||||||
|
# mpeltonen/sbt-idea plugin
|
||||||
|
.idea_modules/
|
||||||
|
|
||||||
|
# JIRA plugin
|
||||||
|
atlassian-ide-plugin.xml
|
||||||
|
|
||||||
|
# Cursive Clojure plugin
|
||||||
|
.idea/replstate.xml
|
||||||
|
|
||||||
|
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||||
|
com_crashlytics_export_strings.xml
|
||||||
|
crashlytics.properties
|
||||||
|
crashlytics-build.properties
|
||||||
|
fabric.properties
|
||||||
|
|
||||||
|
# Editor-based Rest Client
|
||||||
|
.idea/httpRequests
|
||||||
|
|
||||||
|
# Android studio 3.1+ serialized cache file
|
||||||
|
.idea/caches/build_file_checksums.ser
|
||||||
|
|
||||||
|
### Intellij Patch ###
|
||||||
|
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
|
||||||
|
|
||||||
|
modules.xml
|
||||||
|
.idea/misc.xml
|
||||||
|
|
||||||
|
# Sonarlint plugin
|
||||||
|
.idea/**/sonarlint/
|
||||||
|
|
||||||
|
# SonarQube Plugin
|
||||||
|
.idea/**/sonarIssues.xml
|
||||||
|
|
||||||
|
# Markdown Navigator plugin
|
||||||
|
.idea/**/markdown-navigator.xml
|
||||||
|
.idea/**/markdown-navigator/
|
||||||
|
|
||||||
|
### Kotlin ###
|
||||||
|
# Compiled class file
|
||||||
|
*.class
|
||||||
|
|
||||||
|
# Log file
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# BlueJ files
|
||||||
|
*.ctxt
|
||||||
|
|
||||||
|
# Mobile Tools for Java (J2ME)
|
||||||
|
.mtj.tmp/
|
||||||
|
|
||||||
|
# Package Files #
|
||||||
|
*.jar
|
||||||
|
*.war
|
||||||
|
*.nar
|
||||||
|
*.ear
|
||||||
|
*.zip
|
||||||
|
*.tar.gz
|
||||||
|
*.rar
|
||||||
|
|
||||||
|
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||||
|
hs_err_pid*
|
||||||
|
|
||||||
|
### Maven ###
|
||||||
|
target/
|
||||||
|
pom.xml.tag
|
||||||
|
pom.xml.releaseBackup
|
||||||
|
pom.xml.versionsBackup
|
||||||
|
pom.xml.next
|
||||||
|
release.properties
|
||||||
|
dependency-reduced-pom.xml
|
||||||
|
buildNumber.properties
|
||||||
|
.mvn/timing.properties
|
||||||
|
.mvn/wrapper/maven-wrapper.jar
|
||||||
|
.flattened-pom.xml
|
||||||
|
|
||||||
|
# End of https://www.gitignore.io/api/maven,kotlin,intellij
|
||||||
2
.idea/.gitignore
generated
vendored
Normal file
2
.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/workspace.xml
|
||||||
1
.idea/.name
generated
Normal file
1
.idea/.name
generated
Normal file
@@ -0,0 +1 @@
|
|||||||
|
adventofcode2019
|
||||||
10
.idea/codeStyles/Project.xml
generated
Normal file
10
.idea/codeStyles/Project.xml
generated
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
|
<code_scheme name="Project" version="173">
|
||||||
|
<JetCodeStyleSettings>
|
||||||
|
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||||
|
</JetCodeStyleSettings>
|
||||||
|
<codeStyleSettings language="kotlin">
|
||||||
|
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||||
|
</codeStyleSettings>
|
||||||
|
</code_scheme>
|
||||||
|
</component>
|
||||||
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
|
<state>
|
||||||
|
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
|
||||||
|
</state>
|
||||||
|
</component>
|
||||||
13
.idea/compiler.xml
generated
Normal file
13
.idea/compiler.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="CompilerConfiguration">
|
||||||
|
<annotationProcessing>
|
||||||
|
<profile name="Maven default annotation processors profile" enabled="true">
|
||||||
|
<sourceOutputDir name="target/generated-sources/annotations" />
|
||||||
|
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
|
||||||
|
<outputRelativeToContentRoot value="true" />
|
||||||
|
<module name="advent-of-code2019" />
|
||||||
|
</profile>
|
||||||
|
</annotationProcessing>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
6
.idea/encodings.xml
generated
Normal file
6
.idea/encodings.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Encoding">
|
||||||
|
<file url="file://$PROJECT_DIR$" charset="UTF-8" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
69
pom.xml
Normal file
69
pom.xml
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>com.basdado.adventofcode</groupId>
|
||||||
|
<artifactId>advent-of-code-2019</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>com.basdado.adventofcode advent-of-code-2019</name>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<kotlin.version>1.3.61</kotlin.version>
|
||||||
|
<kotlin.code.style>official</kotlin.code.style>
|
||||||
|
<junit.version>4.12</junit.version>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-stdlib</artifactId>
|
||||||
|
<version>${kotlin.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-test-junit</artifactId>
|
||||||
|
<version>${kotlin.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>${junit.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<sourceDirectory>src/main/kotlin</sourceDirectory>
|
||||||
|
<testSourceDirectory>src/test/kotlin</testSourceDirectory>
|
||||||
|
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-maven-plugin</artifactId>
|
||||||
|
<version>${kotlin.version}</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>compile</id>
|
||||||
|
<phase>compile</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>compile</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>test-compile</id>
|
||||||
|
<phase>test-compile</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>test-compile</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
</project>
|
||||||
11
src/main/kotlin/com/basdado/adventofcode/Utils.kt
Normal file
11
src/main/kotlin/com/basdado/adventofcode/Utils.kt
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
package com.basdado.adventofcode
|
||||||
|
|
||||||
|
import java.nio.file.Files
|
||||||
|
import java.nio.file.Paths
|
||||||
|
import java.util.stream.Stream
|
||||||
|
|
||||||
|
fun lines(resourceFile: String): Stream<String> {
|
||||||
|
return Files.lines(Paths.get(Utils::class.java.getResource(resourceFile).toURI()))
|
||||||
|
}
|
||||||
|
|
||||||
|
class Utils
|
||||||
40
src/main/kotlin/com/basdado/adventofcode/day1/Day1.kt
Normal file
40
src/main/kotlin/com/basdado/adventofcode/day1/Day1.kt
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
package com.basdado.adventofcode.day1
|
||||||
|
|
||||||
|
import com.basdado.adventofcode.lines
|
||||||
|
|
||||||
|
const val DAY1_PATH = "/day/1/input.txt"
|
||||||
|
|
||||||
|
fun main(args: Array<String>) {
|
||||||
|
println(Day1.puzzle1())
|
||||||
|
println(Day1.puzzle2())
|
||||||
|
}
|
||||||
|
|
||||||
|
object Day1 {
|
||||||
|
|
||||||
|
fun puzzle1(): Long {
|
||||||
|
return lines(DAY1_PATH)
|
||||||
|
.filter { !it.isBlank() }
|
||||||
|
.mapToLong { it.toLong() }
|
||||||
|
.map { (it / 3) - 2 }
|
||||||
|
.sum()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun puzzle2(): Long {
|
||||||
|
return lines(DAY1_PATH)
|
||||||
|
.filter { !it.isBlank() }
|
||||||
|
.mapToLong { it.toLong() }
|
||||||
|
.map { (it / 3) - 2 }
|
||||||
|
.map { it + calculateFuelFuel(it) }
|
||||||
|
.sum()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun calculateFuelFuel(initialFuel: Long): Long {
|
||||||
|
var currentFuel = initialFuel
|
||||||
|
var sum = 0L
|
||||||
|
while (currentFuel > 8) {
|
||||||
|
currentFuel = currentFuel / 3 - 2
|
||||||
|
sum += currentFuel
|
||||||
|
}
|
||||||
|
return sum
|
||||||
|
}
|
||||||
|
}
|
||||||
100
src/main/resources/day/1/input.txt
Normal file
100
src/main/resources/day/1/input.txt
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
66626
|
||||||
|
95053
|
||||||
|
84365
|
||||||
|
111504
|
||||||
|
97412
|
||||||
|
124986
|
||||||
|
133224
|
||||||
|
60267
|
||||||
|
68096
|
||||||
|
120910
|
||||||
|
105547
|
||||||
|
138575
|
||||||
|
112841
|
||||||
|
113102
|
||||||
|
92387
|
||||||
|
83511
|
||||||
|
62646
|
||||||
|
98974
|
||||||
|
138093
|
||||||
|
59417
|
||||||
|
137854
|
||||||
|
78318
|
||||||
|
143846
|
||||||
|
81514
|
||||||
|
86217
|
||||||
|
98493
|
||||||
|
82056
|
||||||
|
129376
|
||||||
|
61322
|
||||||
|
51045
|
||||||
|
115467
|
||||||
|
106540
|
||||||
|
149439
|
||||||
|
141253
|
||||||
|
65608
|
||||||
|
130480
|
||||||
|
79444
|
||||||
|
80032
|
||||||
|
101908
|
||||||
|
105695
|
||||||
|
145502
|
||||||
|
87538
|
||||||
|
68817
|
||||||
|
128768
|
||||||
|
148784
|
||||||
|
115464
|
||||||
|
147306
|
||||||
|
148666
|
||||||
|
118258
|
||||||
|
82755
|
||||||
|
68422
|
||||||
|
98333
|
||||||
|
105334
|
||||||
|
120963
|
||||||
|
89349
|
||||||
|
78675
|
||||||
|
99151
|
||||||
|
61383
|
||||||
|
81549
|
||||||
|
106544
|
||||||
|
72880
|
||||||
|
88152
|
||||||
|
110879
|
||||||
|
91277
|
||||||
|
123584
|
||||||
|
78430
|
||||||
|
51658
|
||||||
|
126045
|
||||||
|
93833
|
||||||
|
52535
|
||||||
|
130831
|
||||||
|
130920
|
||||||
|
80069
|
||||||
|
140263
|
||||||
|
50943
|
||||||
|
63503
|
||||||
|
116135
|
||||||
|
112686
|
||||||
|
67582
|
||||||
|
83515
|
||||||
|
128736
|
||||||
|
136447
|
||||||
|
69998
|
||||||
|
72472
|
||||||
|
61009
|
||||||
|
136054
|
||||||
|
124675
|
||||||
|
134813
|
||||||
|
149765
|
||||||
|
132135
|
||||||
|
127787
|
||||||
|
148333
|
||||||
|
78020
|
||||||
|
94212
|
||||||
|
81407
|
||||||
|
58994
|
||||||
|
146820
|
||||||
|
66603
|
||||||
|
62761
|
||||||
|
86955
|
||||||
Reference in New Issue
Block a user