Skip to content

Instantly share code, notes, and snippets.

View nickforce's full-sized avatar
🤘
Prompt engineer

Nick Johnson nickforce

🤘
Prompt engineer
View GitHub Profile
@nickforce
nickforce / day03.cls
Last active December 3, 2023 13:47
day03
public with sharing class day03 {
public static Integer part2(List<String> puzzleInputLines) {
List<Integer> validGearRatios = new List<Integer>();
// engine part row
for(Integer i = 0; i < puzzleInputLines.size(); i++) {
// engine part columns
for(Integer col = 0; col < puzzleInputLines[i].length(); col++) {
String[] columnChars = puzzleInputLines[i].split('');
// Check if the character is * a gear
@nickforce
nickforce / day04.cls
Created December 4, 2023 21:33
day04
public with sharing class day04 {
public static Integer part2(List<String> puzzleInputLines) {
Map<Integer,Integer> cardNumberToCopies = new Map<Integer,Integer>();
Map<Integer,Integer> cardNumberToWinners = new Map<Integer,Integer>();
// iterate each card
for(Integer i = 0; i < puzzleInputLines.size(); i++) {
String card = puzzleInputLines[i];
Integer cardNumber = Integer.valueOf(card.substring(card.indexOf(' ') + 1, card.indexOf(':')).trim());
Integer totalCardWinners = processTotalCardWinners(puzzleInputLines[i]);
@nickforce
nickforce / day05.cls
Created December 6, 2023 03:15
day05
public with sharing class day05 {
public static Integer part1(List<String> puzzleInputLines, String fullInput) {
String seedRow = puzzleInputLines.remove(0);
String[] seedValues = seedRow.split(': ')[1].split(' ');
List<Seed> seeds = new List<Seed>();
for(Integer i = 0; i < seedValues.size(); i += 2) {
seeds.add(new Seed(Double.valueOf(seedValues[i]), Double.valueOf(seedValues[i + 1])));
}
@nickforce
nickforce / day06.cls
Last active December 7, 2023 02:26
day06
public with sharing class day06 {
public static Long part2(List<String> puzzleInputLines) {
Long winningAttempts = 0;
Map<Long,Long> timeToDistance = parseSingleRace(puzzleInputLines);
for(Long varTime : timeToDistance.keySet()) {
// winningAttempts += getWaysToWinQuadratic(varTime, timeToDistance.get(varTime));
Long max = binarySearchHi(varTime, timeToDistance.get(varTime));
Long min = binarySearchLo(varTime, timeToDistance.get(varTime));
winningAttempts = (max - min) * -1;
@nickforce
nickforce / main.go
Created December 18, 2024 06:49
day18.go
package main
import (
"fmt"
"image"
"os"
"strings"
)
const gridSize = 70
@nickforce
nickforce / day19.go
Created December 19, 2024 05:56
day19
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func analyzeDesignFormation(availableTowels []string, requested string) (int, bool) {
@nickforce
nickforce / day24.go
Created December 24, 2024 12:27
day24
package main
import (
"bufio"
"fmt"
"os"
"regexp"
"sort"
"strconv"
"strings"