Skip to content

Instantly share code, notes, and snippets.

View felix-larsen's full-sized avatar
🤔
thinking

Felix Larsen felix-larsen

🤔
thinking
View GitHub Profile
@felix-larsen
felix-larsen / december10_1.swift
Created December 10, 2020 07:13
10th December solution - Advent of Code - swift
let countDiff = listOfDifferences.reduce(into: [:]) { counts, joltDiff in counts[joltDiff, default: 0] += 1 }
print(countDiff)
print((countDiff[1] ?? 0 ) * (countDiff[3] ?? 0 ))
@felix-larsen
felix-larsen / december11_1.swift
Created December 11, 2020 21:23
11th December solution - Advent of Code - swift
var iterations = 0
var newGrid = grid
repeat {
grid = newGrid
newGrid = [String]()
for (rowIndex, row) in grid.enumerated() {
var newRow = ""
for (columnIndex, element) in row.enumerated() {
if element == "L" {
let count = countAdjacentChars(of: "#", in: grid, at: (columnIndex, rowIndex), allowedMismatches: 8)
@felix-larsen
felix-larsen / december12_1.swift
Created December 12, 2020 10:28
12th December solution - Advent of Code 2020 - swift
var x = 0.0
var y = 0.0
var direction = 0.0 // degrees east
lines.forEach { (line) in
if let instruction = line.first, let amount = Double(line.dropFirst()) {
if instruction == "E" {
x += amount
} else if instruction == "W" {
x -= amount
@felix-larsen
felix-larsen / december13_1.swift
Last active December 13, 2020 09:41
13th December solution - Advent of Code 2020 - swift
let departureTime = Int(lines[0])!
let busIds = lines[1].components(separatedBy: ",").compactMap{ Int($0) }
let minTimeToWait = busIds.map { busId in (busId, busId - (departureTime % busId)) }.min { first, second in first.1 < second.1 }!
print(minTimeToWait.0 * minTimeToWait.1)
@felix-larsen
felix-larsen / december14_1.swift
Created December 14, 2020 08:38
14th December solution - Advent of Code 2020 - swift
var currentMask = ""
var memory = [Int: String]()
lines.forEach { line in
let parts = line.components(separatedBy: " = ")
let variable = parts[0]
let value = parts[1]
print(variable, value)
if variable.contains("mask") {
currentMask = value
@felix-larsen
felix-larsen / december15.swift
Created December 15, 2020 08:31
15th December solution - Advent of code 2020 - swift
let startingNumbers = [12,1,16,3,11,0]
var numbers = [Int : Int]()
startingNumbers.enumerated().dropLast().forEach { numbers[$0.element] = $0.offset }
var roundCount = startingNumbers.count
var currentNumber = startingNumbers.last!
//let roundEnd = 2020
let roundEnd = 30000000
while roundCount < roundEnd {
@felix-larsen
felix-larsen / december16.swift
Created December 16, 2020 09:10
16th December solution - Advent of Code 2020 - swift
struct Rule {
let name: String
let range1: ClosedRange<Int>
let range2: ClosedRange<Int>
func contains(value: Int) -> Bool {
return range1.contains(value) || range2.contains(value)
}
}
@felix-larsen
felix-larsen / december17.swift
Created December 17, 2020 10:44
17th December solution - Advent of Code 2020 - swift
import Foundation
let filename = "/Users/felix/xCodeProjects/AdventOfCode2020.playground/Resources/december17.txt"
let contents = try! String(contentsOfFile: filename)
let lines = contents.components(separatedBy: CharacterSet.newlines).filter { !$0.isEmpty }
var grid = [D4 : Bool]()
//var grid = [D3 : Bool]() // for 3D simulation
for (x,line) in lines.enumerated() {
@felix-larsen
felix-larsen / december18_1.swift
Created December 18, 2020 14:43
18th December solution - Advent of Code 2020 - swift
func calcNoBrackets(expression: String) -> Int {
let parts = expression.components(separatedBy: " ")
let numbers = parts.enumerated().filter {$0.0 % 2 == 0 && !$0.1.isEmpty }.map { $0.1.toInt() }
let operators: [((Int,Int) -> Int)] = parts.enumerated().filter {$0.0 % 2 == 1 && !$0.1.isEmpty }.map { $0.1.trimmingCharacters(in: .whitespacesAndNewlines) }.map {
switch $0 {
case "*": return (*)
case "+": return (+)
default:
return (+)
}
import Foundation
struct Rule {
let condition1: [Int]?
let condition2: [Int]?
let char: Character?
}
let filename = "/Users/felix/xCodeProjects/AdventOfCode2020.playground/Resources/december19.txt"