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