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 / day24.go
Created December 24, 2024 12:27
day24
package main
import (
"bufio"
"fmt"
"os"
"regexp"
"sort"
"strconv"
"strings"
@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 / main.go
Created December 18, 2024 06:49
day18.go
package main
import (
"fmt"
"image"
"os"
"strings"
)
const gridSize = 70
@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 / 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 / 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 / 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 / day02.cls
Last active December 2, 2023 21:30
day02-part2
public with sharing class day02 {
public static Integer part2(List<String> puzzleInputLines) {
Integer total = 0;
for(String line : puzzleInputLines) {
Map<String, Integer> maxGameCubesByColor = new Map<String, Integer>();
Integer gameNumber = Integer.valueOf(line.substring(line.indexOf(' ') + 1, line.indexOf(':')));
String gameRounds = line.substring(line.indexOf(':') + 1, line.length());
for(String round : gameRounds.split(';')) {
for(String score : round.split(',')) {
@nickforce
nickforce / day02.cls
Created December 2, 2023 21:20
day02-part1
public with sharing class day02 {
public static Map<String, Integer> maxTurnCubes = new Map<String, Integer>{
'red' => 12,
'green' => 13,
'blue' => 14
};
public static Integer part1(List<String> puzzleInputLines) {
Integer total = 0;
Set<Integer> validGameNumbers = new Set<Integer>();
@nickforce
nickforce / day01.cls
Created December 2, 2023 07:04
day01_part2
public with sharing class day01 {
public static Map<String,String> numberMap = new Map<String,String>{
'one' => '1',
'two' => '2',
'three' => '3',
'four' => '4',
'five' => '5',
'six' => '6',
'seven' => '7',
'eight' => '8',