Compare commits
11 Commits
5780588903
...
main
Author | SHA1 | Date | |
---|---|---|---|
fe8e901212
|
|||
4a62be948b
|
|||
ac6082f993
|
|||
632868f7f3
|
|||
7326d17948
|
|||
a786262683
|
|||
e70e71b068
|
|||
c7e8bf103e
|
|||
2239760ce2
|
|||
07ac0b2fc5
|
|||
f6fa8e6b6a
|
@ -23,7 +23,10 @@ let package = Package(
|
||||
.executable(name: "11", targets: ["11"]),
|
||||
.executable(name: "12", targets: ["12"]),
|
||||
.executable(name: "13", targets: ["13"]),
|
||||
.executable(name: "14", targets: ["14"])
|
||||
.executable(name: "14", targets: ["14"]),
|
||||
.executable(name: "15", targets: ["15"]),
|
||||
.executable(name: "16", targets: ["16"]),
|
||||
.executable(name: "17", targets: ["17"])
|
||||
],
|
||||
dependencies: [
|
||||
// Dependencies declare other packages that this package depends on.
|
||||
@ -111,6 +114,20 @@ let package = Package(
|
||||
.executableTarget(
|
||||
name: "14",
|
||||
dependencies: [ .targetItem(name: "Runner", condition: nil) ]
|
||||
),
|
||||
.executableTarget(
|
||||
name: "15",
|
||||
dependencies: [ .targetItem(name: "Runner", condition: nil),
|
||||
.product(name: "Collections", package: "swift-collections")]
|
||||
),
|
||||
.executableTarget(
|
||||
name: "16",
|
||||
dependencies: [ .targetItem(name: "Runner", condition: nil) ]
|
||||
),
|
||||
.executableTarget(
|
||||
name: "17",
|
||||
dependencies: [ .targetItem(name: "Runner", condition: nil),
|
||||
.product(name: "Collections", package: "swift-collections")]
|
||||
)
|
||||
]
|
||||
)
|
||||
|
152
Sources/15/15.swift
Normal file
152
Sources/15/15.swift
Normal file
@ -0,0 +1,152 @@
|
||||
//
|
||||
// File.swift
|
||||
//
|
||||
//
|
||||
// Created by Max Nuding on 15s.12.21.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import Runner
|
||||
import Collections
|
||||
|
||||
typealias ThreatLevel = Int
|
||||
|
||||
struct Coord: Hashable, CustomStringConvertible {
|
||||
let row: Int
|
||||
let col: Int
|
||||
|
||||
var description: String { "(\(row), \(col))" }
|
||||
|
||||
func neighbors() -> [Coord] {
|
||||
[
|
||||
Coord(row: row-1, col: col),
|
||||
Coord(row: row, col: col+1),
|
||||
Coord(row: row+1, col: col),
|
||||
Coord(row: row, col: col-1)
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
class Day15: Runnable {
|
||||
let inputPath: String
|
||||
var lastRow: Int = 0
|
||||
var lastCol: Int = 0
|
||||
var parts = [[ThreatLevel]]()
|
||||
var neighbors = [Coord: [Coord]]()
|
||||
|
||||
required init(inputPath: String) {
|
||||
self.inputPath = inputPath
|
||||
}
|
||||
|
||||
private func expandMap() {
|
||||
var tmpParts = parts
|
||||
for (rowNum, row) in tmpParts.enumerated() {
|
||||
let newRow = [Int](0...4).flatMap { cr in
|
||||
row.map { rv in cr + rv }.map { $0 > 9 ? $0 - 9 : $0 }
|
||||
}
|
||||
parts[rowNum] = newRow
|
||||
}
|
||||
|
||||
tmpParts = parts
|
||||
for num in 1...4 {
|
||||
for i in tmpParts.indices {
|
||||
let tr = tmpParts[i]
|
||||
let ntr = tr.map { $0 + num }.map { $0 > 9 ? $0 - 9 : $0 }
|
||||
parts.append(ntr)
|
||||
}
|
||||
}
|
||||
|
||||
lastRow = parts.count - 1
|
||||
lastCol = (parts.first?.count ?? 0) - 1
|
||||
}
|
||||
|
||||
public func run() {
|
||||
let input = try! String(contentsOfFile: inputPath)
|
||||
parts = input
|
||||
.trimmingCharacters(in: .newlines)
|
||||
.components(separatedBy: .newlines)
|
||||
.map { Array($0) }
|
||||
.map { ar in ar.map {c in ThreatLevel(c.description)!} }
|
||||
lastRow = parts.count - 1
|
||||
lastCol = (parts.first?.count ?? 0) - 1
|
||||
|
||||
calculateSafestPath()
|
||||
expandMap()
|
||||
neighbors = [Coord: [Coord]]()
|
||||
calculateSafestPath()
|
||||
}
|
||||
|
||||
private func calculateSafestPath() {
|
||||
// Distances to startNode
|
||||
var totalThreatLevel = [Coord: ThreatLevel]()
|
||||
|
||||
var unvisited = Set(parts.enumerated().flatMap {row in
|
||||
row.element.indices.map { col in
|
||||
Coord(row: row.offset, col: col)
|
||||
}
|
||||
})
|
||||
|
||||
/* Keep a seperate dictionary, to calculate which coordinates have a set threat level
|
||||
* a.k.a total distance to start
|
||||
* This allows to find the next coordinate to check fairly quickly, by just
|
||||
* looking at the minmum key in this.
|
||||
* I initially tried a PriorityQueue, but my implementation was pretty slow and it spent too much time sorting
|
||||
*/
|
||||
var threatLevelDistrubution = [ThreatLevel: Set<Coord>]()
|
||||
let startNode = Coord(row: 0, col: 0)
|
||||
totalThreatLevel[startNode] = 0
|
||||
threatLevelDistrubution[Int.max] = unvisited
|
||||
threatLevelDistrubution[Int.max]!.remove(startNode)
|
||||
threatLevelDistrubution[0] = Set([startNode])
|
||||
|
||||
while let threatLevel = threatLevelDistrubution.keys.min() {
|
||||
let currentNode = threatLevelDistrubution[threatLevel]!.first!
|
||||
unvisited.remove(currentNode)
|
||||
threatLevelDistrubution[threatLevel]!.remove(currentNode)
|
||||
|
||||
// Remove key from dictionary if not coords are left for a specific threat level
|
||||
if threatLevelDistrubution[threatLevel]!.isEmpty {
|
||||
threatLevelDistrubution.removeValue(forKey: threatLevel)
|
||||
}
|
||||
|
||||
if neighbors[currentNode] == nil {
|
||||
neighbors[currentNode] = currentNode
|
||||
.neighbors()
|
||||
.filter {
|
||||
$0.col >= 0 && $0.col <= lastCol && $0.row >= 0 && $0.row <= lastRow
|
||||
}
|
||||
}
|
||||
var adjacent = neighbors[currentNode]!
|
||||
neighbors[currentNode] = adjacent
|
||||
adjacent = adjacent
|
||||
.filter {
|
||||
unvisited.contains($0)
|
||||
}
|
||||
let currentThreatLevel = totalThreatLevel[currentNode, default: Int.max]
|
||||
for a in adjacent {
|
||||
let testCost = parts[a] + currentThreatLevel
|
||||
let currentCost = totalThreatLevel[a, default: Int.max]
|
||||
if currentCost > testCost {
|
||||
totalThreatLevel[a] = testCost
|
||||
threatLevelDistrubution[currentCost]!.remove(a)
|
||||
threatLevelDistrubution[testCost, default: Set<Coord>()].insert(a)
|
||||
|
||||
// Remove key from dictionary if not coords are left for a specific threat leveli
|
||||
if threatLevelDistrubution[currentCost]!.isEmpty {
|
||||
threatLevelDistrubution.removeValue(forKey: currentCost)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
print(totalThreatLevel[Coord(row: lastRow, col: lastCol)]!)
|
||||
}
|
||||
}
|
||||
|
||||
extension Array where Element == Array<Int> {
|
||||
subscript(coord: Coord) -> Int {
|
||||
get { self[coord.row][coord.col] }
|
||||
set(newValue) {
|
||||
self[coord.row][coord.col] = newValue
|
||||
}
|
||||
}
|
||||
}
|
12
Sources/15/main.swift
Normal file
12
Sources/15/main.swift
Normal file
@ -0,0 +1,12 @@
|
||||
//
|
||||
// File.swift
|
||||
//
|
||||
//
|
||||
// Created by Max Nuding on 15.12.21.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import Runner
|
||||
|
||||
//Runner(target: Day15.self, day: "15", isTest: true).run()
|
||||
Runner(target: Day15.self, day: "15", isTest: false).run()
|
191
Sources/16/16.swift
Normal file
191
Sources/16/16.swift
Normal file
@ -0,0 +1,191 @@
|
||||
//
|
||||
// File.swift
|
||||
//
|
||||
//
|
||||
// Created by Max Nuding on 15.12.21.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import Runner
|
||||
|
||||
|
||||
enum OperatorType: Int {
|
||||
case sum = 0
|
||||
case product = 1
|
||||
case minimum = 2
|
||||
case maximum = 3
|
||||
case value = 4
|
||||
case greaterThan = 5
|
||||
case lessThan = 6
|
||||
case equal = 7
|
||||
}
|
||||
|
||||
protocol Packet {
|
||||
var version: Int { get }
|
||||
|
||||
func getTotalVersion() -> Int
|
||||
func getValue() -> Int
|
||||
}
|
||||
|
||||
struct ValuePacket: Packet {
|
||||
let version: Int
|
||||
let value: Int
|
||||
|
||||
func getTotalVersion() -> Int { version }
|
||||
func getValue() -> Int { value }
|
||||
}
|
||||
|
||||
struct OperatorPacket: Packet {
|
||||
let type: OperatorType
|
||||
let version: Int
|
||||
let subPackets: [Packet]
|
||||
|
||||
func getTotalVersion() -> Int { version + subPackets.map { $0.getTotalVersion() }.reduce(0, +) }
|
||||
func getValue() -> Int {
|
||||
let spValues = subPackets.map { $0.getValue() }
|
||||
switch type {
|
||||
case .sum:
|
||||
return spValues.reduce(0, +)
|
||||
case .product:
|
||||
return spValues.reduce(1, *)
|
||||
case .minimum:
|
||||
return spValues.min()!
|
||||
case .maximum:
|
||||
return spValues.max()!
|
||||
case .greaterThan:
|
||||
return spValues.first! > spValues.last! ? 1 : 0
|
||||
case .lessThan:
|
||||
return spValues.first! < spValues.last! ? 1 : 0
|
||||
case .equal:
|
||||
return spValues.first! == spValues.last! ? 1 : 0
|
||||
case .value:
|
||||
fatalError()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Day16: Runnable {
|
||||
let inputPath: String
|
||||
|
||||
required init(inputPath: String) {
|
||||
self.inputPath = inputPath
|
||||
}
|
||||
|
||||
public func run() {
|
||||
let input = try! String(contentsOfFile: inputPath)
|
||||
let parts = input
|
||||
.trimmingCharacters(in: .newlines)
|
||||
let bytes = parts.bits().joined()
|
||||
let packets = parsePacket(bytes: bytes)
|
||||
let p: Packet = packets.0
|
||||
print(p.getTotalVersion())
|
||||
print(p.getValue())
|
||||
}
|
||||
|
||||
func parsePacket<S>(bytes: S) -> (Packet, S.SubSequence) where S:StringProtocol {
|
||||
let version = bytes[bytes.startIndex..<bytes.index(bytes.startIndex, offsetBy: 3)].binaryToDecimal()
|
||||
let typeId = bytes[bytes.index(bytes.startIndex, offsetBy: 3)..<bytes.index(bytes.startIndex, offsetBy: 6)].binaryToDecimal()
|
||||
var value: Packet
|
||||
var reminder: S.SubSequence
|
||||
switch typeId {
|
||||
case 4:
|
||||
let (v, r) = parseLiteralPacketValue(bytes: bytes)
|
||||
value = ValuePacket(version: version, value: v)
|
||||
reminder = r
|
||||
default:
|
||||
let (v, r) = parseOperatorPacker(bytes: bytes)
|
||||
value = OperatorPacket(type: OperatorType(rawValue: typeId)!, version: version, subPackets: v)
|
||||
reminder = r
|
||||
}
|
||||
return (value, reminder)
|
||||
}
|
||||
|
||||
func parseOperatorPacker<S>(bytes: S) -> ([Packet], S.SubSequence) where S:StringProtocol {
|
||||
let startNextBitsIndex = bytes.index(bytes.startIndex, offsetBy: 7)
|
||||
let lengthTypeId = bytes[bytes.index(bytes.startIndex, offsetBy: 6)..<startNextBitsIndex].description
|
||||
let isTotalLength = lengthTypeId == "0"
|
||||
|
||||
let nextBitsLength = isTotalLength ? 15 : 11
|
||||
let endNextBitsIndex = bytes.index(startNextBitsIndex, offsetBy: nextBitsLength)
|
||||
let nextBits = bytes[startNextBitsIndex..<endNextBitsIndex]
|
||||
|
||||
var number = nextBits.binaryToDecimal()
|
||||
var reminder = bytes[endNextBitsIndex...]
|
||||
var subPackets = [Packet]()
|
||||
|
||||
while number > 0 {
|
||||
let (p, rem) = parsePacket(bytes: reminder)
|
||||
number -= isTotalLength ? (reminder.count - rem.count) : 1
|
||||
subPackets.append(p)
|
||||
reminder = rem
|
||||
}
|
||||
return (subPackets, reminder)
|
||||
}
|
||||
|
||||
func parseLiteralPacketValue<S>(bytes: S) -> (Int, S.SubSequence) where S:StringProtocol {
|
||||
var index = bytes.index(bytes.startIndex, offsetBy: 6)
|
||||
var ei = index
|
||||
var bits: Substring = ""
|
||||
var reminder: S.SubSequence = ""
|
||||
while true {
|
||||
let si = bytes.index(index, offsetBy: 1)
|
||||
ei = bytes.index(si, offsetBy: 4)
|
||||
bits += bytes[si..<ei]
|
||||
if bytes[index] == "0" {
|
||||
reminder = bytes[ei...]
|
||||
break
|
||||
}
|
||||
index = bytes.index(ei, offsetBy: 0)
|
||||
}
|
||||
return (bits.binaryToDecimal(), reminder)
|
||||
}
|
||||
}
|
||||
|
||||
extension StringProtocol {
|
||||
func bits() -> [String] {
|
||||
self.map { $0.bits }
|
||||
}
|
||||
|
||||
func binaryToDecimal() -> Int { Int(self, radix: 2)! }
|
||||
}
|
||||
|
||||
extension Character {
|
||||
var bits: String {
|
||||
switch self.hexDigitValue! {
|
||||
case 0:
|
||||
return "0000"
|
||||
case 1:
|
||||
return "0001"
|
||||
case 2:
|
||||
return "0010"
|
||||
case 3:
|
||||
return "0011"
|
||||
case 4:
|
||||
return "0100"
|
||||
case 5:
|
||||
return "0101"
|
||||
case 6:
|
||||
return "0110"
|
||||
case 7:
|
||||
return "0111"
|
||||
case 8:
|
||||
return "1000"
|
||||
case 9:
|
||||
return "1001"
|
||||
case 10:
|
||||
return "1010"
|
||||
case 11:
|
||||
return "1011"
|
||||
case 12:
|
||||
return "1100"
|
||||
case 13:
|
||||
return "1101"
|
||||
case 14:
|
||||
return "1110"
|
||||
case 15:
|
||||
return "1111"
|
||||
default:
|
||||
fatalError()
|
||||
}
|
||||
}
|
||||
}
|
12
Sources/16/main.swift
Normal file
12
Sources/16/main.swift
Normal file
@ -0,0 +1,12 @@
|
||||
//
|
||||
// File.swift
|
||||
//
|
||||
//
|
||||
// Created by Max Nuding on 15.12.21.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import Runner
|
||||
|
||||
//Runner(target: Day16.self, day: "16", isTest: true).run()
|
||||
Runner(target: Day16.self, day: "16", isTest: false).run()
|
95
Sources/17/17.swift
Normal file
95
Sources/17/17.swift
Normal file
@ -0,0 +1,95 @@
|
||||
//
|
||||
// File.swift
|
||||
//
|
||||
//
|
||||
// Created by Max Nuding on 17.12.21.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import Runner
|
||||
import Collections
|
||||
|
||||
struct Point:Hashable {
|
||||
var x: Int
|
||||
var y: Int
|
||||
}
|
||||
|
||||
struct Area {
|
||||
let topLeft: Point
|
||||
let botRight: Point
|
||||
|
||||
init(x: String, y: String) {
|
||||
let xVals = x[x.index(x.startIndex, offsetBy: 2)...].components(separatedBy: "..").map { Int($0)! }
|
||||
let yVals = y[y.index(y.startIndex, offsetBy: 2)...].components(separatedBy: "..").map { Int($0)! }
|
||||
topLeft = Point(x: xVals.first!, y: yVals.last!)
|
||||
botRight = Point(x: xVals.last!, y: yVals.first!)
|
||||
}
|
||||
|
||||
func contains(point: Point) -> Bool {
|
||||
point.x >= topLeft.x && point.x <= botRight.x && point.y <= topLeft.y && point.y >= botRight.y
|
||||
}
|
||||
|
||||
func overshot(point: Point) -> Bool {
|
||||
point.y < botRight.y || point.x > botRight.x
|
||||
}
|
||||
}
|
||||
|
||||
struct Probe {
|
||||
var position = Point(x: 0, y: 0)
|
||||
var velocity: Point
|
||||
|
||||
mutating func move() {
|
||||
position.x += velocity.x
|
||||
position.y += velocity.y
|
||||
if velocity.x < 0 {
|
||||
velocity.x += 1
|
||||
} else if velocity.x > 0 {
|
||||
velocity.x -= 1
|
||||
}
|
||||
velocity.y -= 1
|
||||
}
|
||||
}
|
||||
|
||||
class Day17: Runnable {
|
||||
let inputPath: String
|
||||
|
||||
required init(inputPath: String) {
|
||||
self.inputPath = inputPath
|
||||
}
|
||||
|
||||
public func run() {
|
||||
let input = try! String(contentsOfFile: inputPath)
|
||||
let parts = input
|
||||
.trimmingCharacters(in: .newlines)
|
||||
.components(separatedBy: ": ")
|
||||
.last!
|
||||
.components(separatedBy: ", ")
|
||||
let area = Area(x: parts.first!, y: parts.last!)
|
||||
|
||||
var maxY = Int.min
|
||||
var found = [Point]()
|
||||
found.reserveCapacity(3000)
|
||||
for x in 0...500 {
|
||||
for y in -500...500 {
|
||||
let velocity = Point(x: x, y: y)
|
||||
var probe = Probe(velocity: velocity)
|
||||
var maxYCurrent = Int.min
|
||||
repeat {
|
||||
probe.move()
|
||||
if probe.position.y > maxYCurrent {
|
||||
maxYCurrent = probe.position.y
|
||||
}
|
||||
if area.contains(point: probe.position) {
|
||||
if maxYCurrent > maxY {
|
||||
maxY = maxYCurrent
|
||||
}
|
||||
found.append(velocity)
|
||||
break
|
||||
}
|
||||
} while !area.overshot(point: probe.position)
|
||||
}
|
||||
}
|
||||
print(maxY)
|
||||
print(Set(found).count)
|
||||
}
|
||||
}
|
12
Sources/17/main.swift
Normal file
12
Sources/17/main.swift
Normal file
@ -0,0 +1,12 @@
|
||||
//
|
||||
// File.swift
|
||||
//
|
||||
//
|
||||
// Created by Max Nuding on 17.12.21.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import Runner
|
||||
|
||||
//Runner(target: Day17.self, day: "17", isTest: true).run()
|
||||
Runner(target: Day17.self, day: "17", isTest: false).run()
|
100
Sources/Runner/Resources/input/15.txt
Normal file
100
Sources/Runner/Resources/input/15.txt
Normal file
@ -0,0 +1,100 @@
|
||||
4644191171337732143712186124233573969322319997149343221542323211321212169142231235619969739483792471
|
||||
2221293392911371411593639962951141752813313921357129613938931533621918583683134152965492646642538116
|
||||
2795791297555313411382761825567331471819212315341825911232943151936415218119321513121916912261697597
|
||||
1214537613992125712382233916937264885938549131332876391646112221213144242126287714516436119191917362
|
||||
1412811515321221111439182464221331329974283623974241113548427128422112192118983384463232121843121141
|
||||
3245255675412351991191259591561111991221265214221291175137165299373379821323142951719393624496355173
|
||||
7821636439137114454815234184431131151885565811162122141111291739141236111319913333811111656913241523
|
||||
1418191421242372241523343828141122624329116111754397113548982293191411111144261229944124833111847376
|
||||
1415223811928588114168213319591148928517427169381184991691112118229218263638951854741122722159931213
|
||||
1185112211216296846141231621592158511243111111346117648971911331811279689234291837116151264761299521
|
||||
2157175132842918592376386235452686111324627214122733298544113111534712212591393262313832165437912113
|
||||
1116112493319299432145649149992697711725421154424224312213396977142985512232427326338299642149836196
|
||||
6549229499212395113283291496151231611431251843344129142294319947252811251219755391642553173113821296
|
||||
4113393621316222283852914519968238256112711138455548538191592324236277743141198979959471862712168221
|
||||
1741128134354414241419176117119212641541117881955126161946213118193312324857619874348283423325548598
|
||||
3751141123712163925113282172764932353534116546231281293118591422522113149152261498874515989313554314
|
||||
4514551971341761251629465312511329291978512148461991612957411327621224192111126296379215871233811481
|
||||
3293217144136116298991343111524616863893234462111723531219141172273261192421911186619159615299151135
|
||||
7774221151285219996117174373446146141833811666627831912921211686311331622326641123291596353856612959
|
||||
1351122214751889195351764143332617127231529144667721221129811142151686112447161472232912114911498432
|
||||
7225121617125257598871963211815844737221578124248727132498851251391513323133165922818784851344161916
|
||||
1112187345141297179198141512813725433119213925696911577227241222816471151855194112221672612468122119
|
||||
1121991355992132552111213132191442529433379222141737721118515814411171128371158391185211772681121151
|
||||
3611317119849285611931216381814841117111553118123151123429121933733781431918246438319192543378241244
|
||||
2216973154335197135211535821482816136121216777138722357726122631253431191217262219637112927427564151
|
||||
5191998411823118893385217392312149124881216981988142455391121911741599925291712131939112984622594162
|
||||
9512532169823462117945393432541745813525811441272984121112552932917817923383181475411441151349226821
|
||||
3411874821911569271324123211326163841991128122341482721111115399651299314699266658849911711231323912
|
||||
7694685861132348951471861817731787685615352753172139744392721512255361251492221911127122613845334296
|
||||
1113697413329171211439739511931411924968888839312278319759419239814972811121854533399269742318264862
|
||||
3261667141191721233392311941113633191795822122212119221174142635691755551245192319949176814814316991
|
||||
2128111325114212336337636612529217112293426976253814989893331386522713418281571915911922457712133131
|
||||
8388911376618344994992583184752685539238543959953246364821659122425889299729352751111921721511272199
|
||||
2122155921932542114611151421752127825727141198197413114255419142717265333392684821477226612894862559
|
||||
1951121655921881375819253119554413525181757211271911799915211551299921612352952113953924955851737855
|
||||
8195214285611188396611335793711117151312316188149873422613973825989185924514991359346339783843843334
|
||||
5456833919619253912174733996922156217884375932117373542943268995816113232121789731392898427391181116
|
||||
4777217181611414812166144323146981138677578415811253842294432341423919922422381614691619319263292673
|
||||
1871985126952132273312531611829113511331968253631512251863889446196571436982662319393312117814312223
|
||||
4144118646856288731789179912621365532752715112255935546128459221171311137762973879129462196861223341
|
||||
5331743126787154471212425952845476245991112234222998154272399175132112413123715171136641911131729182
|
||||
6459321122282315131822523312117117212329381828311268157731316333126392285181951389374121861573611883
|
||||
1129519121932136168211173395152156158311198521161721877242125629612171323591229332881655592295117452
|
||||
4341822521595939622189164981116331219261274132118781411796193741169311918311822217877764111699911254
|
||||
4194536129171715722286327511111124828745972271325116713569374751324429292311753151131516413241834449
|
||||
2654142945631129956123367481172912142744199122191626922239395112592217148883514168932621184272178615
|
||||
4157713294921232144519182476441189526311311114777342965936356951743225131121191824416924178512318511
|
||||
6912411821531292292181267613662222516132574199134177394148798111514136319121566731314235317164439911
|
||||
1437321155329217229142678137571111359263414123211224312882335825119927798139832929124119648129273158
|
||||
1732391818138229589491914619358266961163398213919395213291514999415122435132113734813288381419819249
|
||||
4113346921421917866111857654393412952122411689932611554121571489921198684193331141319469559362897418
|
||||
3936181514241719511931294342174121311321234132821683441143221627121222912219121123417289754991212193
|
||||
5231211979311961116116212251613682828181291627731949883315367221227411122625338116897436595199253162
|
||||
2316316823133527186851941188913312213143341419114417621723676119643866413111512137248492799272283874
|
||||
3119192116842719272523136623911313937534137524214481191735181477319325633146114939176412112636323417
|
||||
2492714192521612141248169319193626151911919321234131296181642619511212191466114432116195132659299995
|
||||
8479281136811514162331236428357598113492342253565417152872842112725149934866538744331141447117166111
|
||||
8119623422439216225228196551954272643443171919589198617821835123212386869188415911424183945151334241
|
||||
2441131613411116653297822116736662114797231228699315262527411234919279976921765231169112216112919848
|
||||
3831541198992925558534136856443141276992238182251969817995131132423277612211112197312711991832328931
|
||||
4857223123934311294131922752993114976915557976818181275728832322272499252323121313288171744324765443
|
||||
6288391134124416473924343716745649381453218212143281127971317811511748813199842175114288225452114924
|
||||
2198193117421166796123194192539312141215519112972453238891813111365441112114115347214113916577619519
|
||||
4829218134763351139297321322168924116121484533211291255719399319238352153167888261311881156385931422
|
||||
1128131518795612511811698671411951513233914459321461852952978173818789621743591166392521464181816178
|
||||
1238497511773695513118432223193651911824333381942211111917892631655191328368558712842618374164192141
|
||||
5197814252643194532182168116535512142118911412974122512425237539834313411221165712489961923581131921
|
||||
5911812939579518465461451173198646171335111185511687173891229811734589488111952535421341871929712588
|
||||
1671651526181764772599923144212312319733142231365158737371635371423522142829181192112264525227179493
|
||||
7421112826829293192119831269314941212923232123538851869151292117144743917691154582417433994491521943
|
||||
9191346716972561945245244324428371279373282126116111451618129133112293262414113689369614111711445421
|
||||
2316166312199999129455391528271939493421961982164811491114318795721435615291362213311318321186121151
|
||||
9931241122891924292311432346646113846761512131981437311511562199358147246719196723818191337753291332
|
||||
1222114361952914555221222296169622784558836751121518966219244215831746229685414172141737963133114493
|
||||
5218313115227314139655246183769219129243229111742851151185617522413973822128342227812919165581163524
|
||||
9291132423113289278354324575153169229992171127124135461837121234526253159331631693469211222922141974
|
||||
8452363325897641925169932431428139199613218111915136812112119111995795222511113131372723121212711118
|
||||
2197227213274819481124191141229711865192112947469114147211523239645218213151193132942921122111792371
|
||||
9275351123144952331922211614314212365538513531132558123126944517881183166133275219943389521111173193
|
||||
1676123311913129662665831191951759436541912564748652528469419649571161712679147469912553225741913996
|
||||
3191353128953131423711131716711282864474834951441111829112836519349724223297611712534725619191814221
|
||||
4173761111187311916392959649155953281454675178259425336991997957211941375122951384157137917823346849
|
||||
6231866821187632943121892433531142499383519821114756411214331534451221651412644522124791217848229112
|
||||
4218513612717224329629361592483513734819131413112231512426831431594336223618413472242122315818213821
|
||||
1672513521112672575721281934545322131861691451188212512246411624946313848511278356324319145934746199
|
||||
7277435215413485681311177121429997231927125112162783124381311646223581365917794813269411132811948118
|
||||
1171256993195581123322244392112531112921826117456633951228891118213977135113912128736772927396511155
|
||||
7513423614827252911431224428129419471913857316347921811289615226221512981231328492565212872149824422
|
||||
4172392667172923414112281271468455913321542234539111143311488844993986926526232111912899467919673129
|
||||
2266423275271832192191927133161851111718244711617612592821169634215492721212529519332171925375214519
|
||||
2961251383676393331912784833198316856114611437958511134729539811313332428111416135419161136827381511
|
||||
2191313432414523594719493126599684313513119243281212311968932355513797175111911888954498999447129422
|
||||
4116222439791495331225415853138639142821696183279788473226912132161296116634441352242287514831641639
|
||||
2456122986411166492928291613291461786611191281413582887271831192125366139197116411714187313721143319
|
||||
3137321286181773323297599141911589613214333724715721771326962716833251289731121417114311929432923141
|
||||
4471591643429412532212412921891262226734323514259112982727616315933911299142522382749595219893774213
|
||||
8361434437271446111531163739832741723991191369215895121472249713859411711382822931149329516384858813
|
||||
7162151376995138977914242232912263921431263824116411237115179847816871745736216484215173821453691814
|
||||
1221412352976445211311141195476196991326389881615412212286967548955857131279126264116711124668334891
|
||||
6982434645865366398413542122219772368658463742631121963313814929811193197282524243293233246445611618
|
10
Sources/Runner/Resources/input/15_test.txt
Normal file
10
Sources/Runner/Resources/input/15_test.txt
Normal file
@ -0,0 +1,10 @@
|
||||
1163751742
|
||||
1381373672
|
||||
2136511328
|
||||
3694931569
|
||||
7463417111
|
||||
1319128137
|
||||
1359912421
|
||||
3125421639
|
||||
1293138521
|
||||
2311944581
|
1
Sources/Runner/Resources/input/16.txt
Normal file
1
Sources/Runner/Resources/input/16.txt
Normal file
@ -0,0 +1 @@
|
||||
020D708041258C0B4C683E61F674A1401595CC3DE669AC4FB7BEFEE840182CDF033401296F44367F938371802D2CC9801A980021304609C431007239C2C860400F7C36B005E446A44662A2805925FF96CBCE0033C5736D13D9CFCDC001C89BF57505799C0D1802D2639801A900021105A3A43C1007A1EC368A72D86130057401782F25B9054B94B003013EDF34133218A00D4A6F1985624B331FE359C354F7EB64A8524027D4DEB785CA00D540010D8E9132270803F1CA1D416200FDAC01697DCEB43D9DC5F6B7239CCA7557200986C013912598FF0BE4DFCC012C0091E7EFFA6E44123CE74624FBA01001328C01C8FF06E0A9803D1FA3343E3007A1641684C600B47DE009024ED7DD9564ED7DD940C017A00AF26654F76B5C62C65295B1B4ED8C1804DD979E2B13A97029CFCB3F1F96F28CE43318560F8400E2CAA5D80270FA1C90099D3D41BE00DD00010B893132108002131662342D91AFCA6330001073EA2E0054BC098804B5C00CC667B79727FF646267FA9E3971C96E71E8C00D911A9C738EC401A6CBEA33BC09B8015697BB7CD746E4A9FD4BB5613004BC01598EEE96EF755149B9A049D80480230C0041E514A51467D226E692801F049F73287F7AC29CB453E4B1FDE1F624100203368B3670200C46E93D13CAD11A6673B63A42600C00021119E304271006A30C3B844200E45F8A306C8037C9CA6FF850B004A459672B5C4E66A80090CC4F31E1D80193E60068801EC056498012804C58011BEC0414A00EF46005880162006800A3460073007B620070801E801073002B2C0055CEE9BC801DC9F5B913587D2C90600E4D93CE1A4DB51007E7399B066802339EEC65F519CF7632FAB900A45398C4A45B401AB8803506A2E4300004262AC13866401434D984CA4490ACA81CC0FB008B93764F9A8AE4F7ABED6B293330D46B7969998021C9EEF67C97BAC122822017C1C9FA0745B930D9C480
|
1
Sources/Runner/Resources/input/16_test.txt
Normal file
1
Sources/Runner/Resources/input/16_test.txt
Normal file
@ -0,0 +1 @@
|
||||
38006F45291200
|
1
Sources/Runner/Resources/input/17.txt
Normal file
1
Sources/Runner/Resources/input/17.txt
Normal file
@ -0,0 +1 @@
|
||||
target area: x=128..160, y=-142..-88
|
1
Sources/Runner/Resources/input/17_test.txt
Normal file
1
Sources/Runner/Resources/input/17_test.txt
Normal file
@ -0,0 +1 @@
|
||||
target area: x=20..30, y=-10..-5
|
Reference in New Issue
Block a user