parent
46e919eb23
commit
a15dcf85cf
@ -0,0 +1,29 @@ |
||||
### IntelliJ IDEA ### |
||||
out/ |
||||
!**/src/main/**/out/ |
||||
!**/src/test/**/out/ |
||||
|
||||
### Eclipse ### |
||||
.apt_generated |
||||
.classpath |
||||
.factorypath |
||||
.project |
||||
.settings |
||||
.springBeans |
||||
.sts4-cache |
||||
bin/ |
||||
!**/src/main/**/bin/ |
||||
!**/src/test/**/bin/ |
||||
|
||||
### NetBeans ### |
||||
/nbproject/private/ |
||||
/nbbuild/ |
||||
/dist/ |
||||
/nbdist/ |
||||
/.nb-gradle/ |
||||
|
||||
### VS Code ### |
||||
.vscode/ |
||||
|
||||
### Mac OS ### |
||||
.DS_Store |
@ -0,0 +1,8 @@ |
||||
# Default ignored files |
||||
/shelf/ |
||||
/workspace.xml |
||||
# Editor-based HTTP Client requests |
||||
/httpRequests/ |
||||
# Datasource local storage ignored files |
||||
/dataSources/ |
||||
/dataSources.local.xml |
@ -0,0 +1,6 @@ |
||||
<component name="InspectionProjectProfileManager"> |
||||
<profile version="1.0"> |
||||
<option name="myName" value="Project Default" /> |
||||
<inspection_tool class="ReplaceUntilWithRangeUntil" enabled="true" level="WEAK WARNING" enabled_by_default="true" /> |
||||
</profile> |
||||
</component> |
@ -0,0 +1,10 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="Kotlin2JvmCompilerArguments"> |
||||
<option name="jvmTarget" value="1.8" /> |
||||
</component> |
||||
<component name="KotlinCommonCompilerArguments"> |
||||
<option name="apiVersion" value="1.9" /> |
||||
<option name="languageVersion" value="1.9" /> |
||||
</component> |
||||
</project> |
@ -0,0 +1,26 @@ |
||||
<component name="libraryTable"> |
||||
<library name="KotlinJavaRuntime" type="repository"> |
||||
<properties maven-id="org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.0" /> |
||||
<CLASSES> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.0/kotlin-stdlib-jdk8-1.9.0.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.9.0/kotlin-stdlib-1.9.0.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.0/kotlin-stdlib-common-1.9.0.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.0/kotlin-stdlib-jdk7-1.9.0.jar!/" /> |
||||
</CLASSES> |
||||
<JAVADOC> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.0/kotlin-stdlib-jdk8-1.9.0-javadoc.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.9.0/kotlin-stdlib-1.9.0-javadoc.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.0/kotlin-stdlib-common-1.9.0-javadoc.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0-javadoc.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.0/kotlin-stdlib-jdk7-1.9.0-javadoc.jar!/" /> |
||||
</JAVADOC> |
||||
<SOURCES> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.0/kotlin-stdlib-jdk8-1.9.0-sources.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.9.0/kotlin-stdlib-1.9.0-sources.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.0/kotlin-stdlib-common-1.9.0-sources.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0-sources.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.0/kotlin-stdlib-jdk7-1.9.0-sources.jar!/" /> |
||||
</SOURCES> |
||||
</library> |
||||
</component> |
@ -0,0 +1,6 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="openjdk-21" project-jdk-type="JavaSDK"> |
||||
<output url="file://$PROJECT_DIR$/out" /> |
||||
</component> |
||||
</project> |
@ -0,0 +1,8 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="ProjectModuleManager"> |
||||
<modules> |
||||
<module fileurl="file://$PROJECT_DIR$/day04.iml" filepath="$PROJECT_DIR$/day04.iml" /> |
||||
</modules> |
||||
</component> |
||||
</project> |
@ -0,0 +1,6 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="VcsDirectoryMappings"> |
||||
<mapping directory="$PROJECT_DIR$/.." vcs="Git" /> |
||||
</component> |
||||
</project> |
@ -0,0 +1,15 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<module type="JAVA_MODULE" version="4"> |
||||
<component name="NewModuleRootManager" inherit-compiler-output="true"> |
||||
<exclude-output /> |
||||
<content url="file://$MODULE_DIR$"> |
||||
<sourceFolder url="file://$MODULE_DIR$/resources" type="java-resource" /> |
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" /> |
||||
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" /> |
||||
<sourceFolder url="file://$MODULE_DIR$/testResources" type="java-test-resource" /> |
||||
</content> |
||||
<orderEntry type="inheritedJdk" /> |
||||
<orderEntry type="sourceFolder" forTests="false" /> |
||||
<orderEntry type="library" name="KotlinJavaRuntime" level="project" /> |
||||
</component> |
||||
</module> |
@ -0,0 +1,28 @@ |
||||
import java.io.File |
||||
|
||||
//TIP Press <shortcut raw="SHIFT"/> twice to open the Search Everywhere dialog and type <b>show whitespaces</b>, |
||||
// then press <shortcut raw="ENTER"/>. You can now see whitespace characters in your code. |
||||
fun main() { |
||||
val file = File("b.input").readLines(); |
||||
val pairsOfSets = file.map { |
||||
Pair(it.substringBefore(","), it.substringAfter(",")) |
||||
}; |
||||
|
||||
val number = pairsOfSets.filter { (a, b) -> cntains(parseRange(a), parseRange(b)) }.count(); |
||||
println("The number of contained sets is $number"); |
||||
|
||||
val number2 = pairsOfSets.filter { (a, b) -> overlaps(parseRange(a), parseRange(b)) }.count(); |
||||
println("The number of overlapping sets is $number2"); |
||||
} |
||||
|
||||
fun cntains(a:Pair<Int,Int>, b:Pair<Int,Int>): Boolean { |
||||
return ((a.first <= b.first) and (a.second >= b.second)) or |
||||
((b.first <= a.first) and (b.second >= a.second)); |
||||
} |
||||
fun overlaps(a:Pair<Int,Int>, b:Pair<Int,Int>): Boolean { |
||||
return (a.first in b.first..b.second) or (a.second in b.first..b.second) or cntains(a,b); |
||||
} |
||||
|
||||
fun parseRange(a:String): Pair<Int, Int> { |
||||
return Pair(a.substringBefore("-").toInt(),a.substringAfter("-").toInt()); |
||||
} |
@ -0,0 +1,29 @@ |
||||
### IntelliJ IDEA ### |
||||
out/ |
||||
!**/src/main/**/out/ |
||||
!**/src/test/**/out/ |
||||
|
||||
### Eclipse ### |
||||
.apt_generated |
||||
.classpath |
||||
.factorypath |
||||
.project |
||||
.settings |
||||
.springBeans |
||||
.sts4-cache |
||||
bin/ |
||||
!**/src/main/**/bin/ |
||||
!**/src/test/**/bin/ |
||||
|
||||
### NetBeans ### |
||||
/nbproject/private/ |
||||
/nbbuild/ |
||||
/dist/ |
||||
/nbdist/ |
||||
/.nb-gradle/ |
||||
|
||||
### VS Code ### |
||||
.vscode/ |
||||
|
||||
### Mac OS ### |
||||
.DS_Store |
@ -0,0 +1,8 @@ |
||||
# Default ignored files |
||||
/shelf/ |
||||
/workspace.xml |
||||
# Editor-based HTTP Client requests |
||||
/httpRequests/ |
||||
# Datasource local storage ignored files |
||||
/dataSources/ |
||||
/dataSources.local.xml |
@ -0,0 +1,6 @@ |
||||
<component name="InspectionProjectProfileManager"> |
||||
<profile version="1.0"> |
||||
<option name="myName" value="Project Default" /> |
||||
<inspection_tool class="ReplaceUntilWithRangeUntil" enabled="true" level="WEAK WARNING" enabled_by_default="true" /> |
||||
</profile> |
||||
</component> |
@ -0,0 +1,10 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="Kotlin2JvmCompilerArguments"> |
||||
<option name="jvmTarget" value="1.8" /> |
||||
</component> |
||||
<component name="KotlinCommonCompilerArguments"> |
||||
<option name="apiVersion" value="1.9" /> |
||||
<option name="languageVersion" value="1.9" /> |
||||
</component> |
||||
</project> |
@ -0,0 +1,26 @@ |
||||
<component name="libraryTable"> |
||||
<library name="KotlinJavaRuntime" type="repository"> |
||||
<properties maven-id="org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.0" /> |
||||
<CLASSES> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.0/kotlin-stdlib-jdk8-1.9.0.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.9.0/kotlin-stdlib-1.9.0.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.0/kotlin-stdlib-common-1.9.0.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.0/kotlin-stdlib-jdk7-1.9.0.jar!/" /> |
||||
</CLASSES> |
||||
<JAVADOC> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.0/kotlin-stdlib-jdk8-1.9.0-javadoc.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.9.0/kotlin-stdlib-1.9.0-javadoc.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.0/kotlin-stdlib-common-1.9.0-javadoc.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0-javadoc.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.0/kotlin-stdlib-jdk7-1.9.0-javadoc.jar!/" /> |
||||
</JAVADOC> |
||||
<SOURCES> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.0/kotlin-stdlib-jdk8-1.9.0-sources.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.9.0/kotlin-stdlib-1.9.0-sources.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.0/kotlin-stdlib-common-1.9.0-sources.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0-sources.jar!/" /> |
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.0/kotlin-stdlib-jdk7-1.9.0-sources.jar!/" /> |
||||
</SOURCES> |
||||
</library> |
||||
</component> |
@ -0,0 +1,6 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="openjdk-21" project-jdk-type="JavaSDK"> |
||||
<output url="file://$PROJECT_DIR$/out" /> |
||||
</component> |
||||
</project> |
@ -0,0 +1,8 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="ProjectModuleManager"> |
||||
<modules> |
||||
<module fileurl="file://$PROJECT_DIR$/day05.iml" filepath="$PROJECT_DIR$/day05.iml" /> |
||||
</modules> |
||||
</component> |
||||
</project> |
@ -0,0 +1,6 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="VcsDirectoryMappings"> |
||||
<mapping directory="$PROJECT_DIR$/.." vcs="Git" /> |
||||
</component> |
||||
</project> |
@ -0,0 +1,15 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<module type="JAVA_MODULE" version="4"> |
||||
<component name="NewModuleRootManager" inherit-compiler-output="true"> |
||||
<exclude-output /> |
||||
<content url="file://$MODULE_DIR$"> |
||||
<sourceFolder url="file://$MODULE_DIR$/resources" type="java-resource" /> |
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" /> |
||||
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" /> |
||||
<sourceFolder url="file://$MODULE_DIR$/testResources" type="java-test-resource" /> |
||||
</content> |
||||
<orderEntry type="inheritedJdk" /> |
||||
<orderEntry type="sourceFolder" forTests="false" /> |
||||
<orderEntry type="library" name="KotlinJavaRuntime" level="project" /> |
||||
</component> |
||||
</module> |
@ -0,0 +1,89 @@ |
||||
import java.io.File |
||||
import java.lang.Integer.max |
||||
|
||||
data class Move(val count: Int, val from: Int, val to: Int) |
||||
|
||||
fun main() { |
||||
val startWorkspace = MutableList<String>(0) {""}; |
||||
var addingToWorkspace = true; |
||||
val sInstructions = MutableList<String>(0) {""} |
||||
|
||||
for (line in File("b.input").readLines()) { |
||||
if (line.isEmpty()) addingToWorkspace = false; |
||||
|
||||
if (addingToWorkspace) startWorkspace.add(line); |
||||
else if (line.isNotEmpty()) sInstructions.add(line); |
||||
} |
||||
val workspace = transpose(startWorkspace) |
||||
.filter { !(("[" in it) or ("]" in it) or it.isBlank()) } |
||||
.map { it.drop(1).trim { it == ' '} } |
||||
.toMutableList(); |
||||
|
||||
val instructions = sInstructions.map { parse(it) }; |
||||
|
||||
println("before doing anything, the workspace looks like this:"); |
||||
println(workspace.joinToString("\n")); |
||||
|
||||
for (m in instructions) { |
||||
println("after doing $m, the workspace looks like:"); |
||||
|
||||
for (x in 0..(m.count-1)) { |
||||
val source = workspace[m.from]; |
||||
val taken = source.last(); |
||||
|
||||
workspace[m.from] = source.substring(0, source.length-1); |
||||
workspace[m.to] = workspace[m.to] + taken; |
||||
} |
||||
println(workspace.joinToString("\n")); |
||||
} |
||||
|
||||
val toppers = workspace |
||||
.map { it.last() } |
||||
.joinToString(""); |
||||
println("the final crate toppers were $toppers"); |
||||
|
||||
|
||||
// now for part 2 |
||||
val workspace2 = transpose(startWorkspace) |
||||
.filter { !(("[" in it) or ("]" in it) or it.isBlank()) } |
||||
.map { it.drop(1).trim { it == ' '} } |
||||
.toMutableList(); |
||||
|
||||
for (m in instructions) { |
||||
val source = workspace2[m.from]; |
||||
val taken = source.substring(source.length - m.count); |
||||
workspace2[m.from] = source.substring(0, source.length - m.count); |
||||
workspace2[m.to] = workspace2[m.to] + taken; |
||||
} |
||||
|
||||
val toppers2 = workspace2 |
||||
.map { it.last() } |
||||
.joinToString(""); |
||||
println("the final crate toppers with the 9001 were $toppers2"); |
||||
} |
||||
|
||||
fun transpose(workspace: List<String>):MutableList<String> { |
||||
val lineLength = workspace.map { it.length }.reduce { a,b -> max(a,b) }; |
||||
val numberOfLines = workspace.count(); |
||||
val output = MutableList(lineLength) { x -> |
||||
List(numberOfLines) { y -> |
||||
try { |
||||
workspace[(numberOfLines-1)-y][x] |
||||
} catch (e: Exception) { |
||||
' ' |
||||
} |
||||
}.joinToString("") |
||||
}; |
||||
|
||||
return output; |
||||
} |
||||
|
||||
// parse a line like "move 12 from 3 to 10" into a move object |
||||
fun parse(i: String): Move { |
||||
val i2 = i.substringAfter("move "); |
||||
val count = i2.substringBefore(" from ").toInt(); |
||||
val i3 = i2.substringAfter(" from "); |
||||
val from = i3.substringBefore(" to ").toInt() - 1; |
||||
val to = i3.substringAfter(" to ").toInt() - 1; |
||||
return Move(count, from, to); |
||||
} |
Loading…
Reference in new issue