Skip to content

Instantly share code, notes, and snippets.

@joeytrapp
joeytrapp / aoc_8.erl
Last active December 9, 2024 06:51
Advent of Code Day 8 Part 1 and Part 2
-module(aoc).
-export([main/1]).
main([Path]) ->
{ok, Content} = file:read_file(Path),
{Nodes, Max} = nodes(Content, 0, 0, {0,0}, #{}),
Anti = maps:fold(fun(_, L, S) ->
antinodes(L, L, Max, S)
end, sets:new(), Nodes),
@joeytrapp
joeytrapp / aoc_7.erl
Last active December 8, 2024 05:59
Advent of Code Day 7 Part 1 and Part 2 (code only solves Part 2)
-module(aoc).
-export([main/1]).
main([Path]) ->
{ok, Content} = file:read_file(Path),
Data = parse(Content),
io:format("Result: ~p~n", [lists:sum(lists:map(fun test/1, Data))]),
erlang:halt(0).
@joeytrapp
joeytrapp / aoc_6.erl
Last active December 7, 2024 19:08
Advent of Code Day 6 Part 1 and Part 2
-module(aoc).
-export([main/1]).
main([Path]) ->
{ok, Content} = file:read_file(Path),
{Grid, [Guard]} = parse(Content),
Complete = rounds(Grid, Guard),
Tests = sets:del_element(element(2, Guard), Complete),
io:format("Visited: ~p~n", [sets:size(Complete)]),
@joeytrapp
joeytrapp / aoc_5.erl
Created December 6, 2024 06:53
Advent of Code Day 5 Part 1 and Part 2
-module(aoc).
-export([main/1]).
main([Path]) ->
{ok, Content} = file:read_file(Path),
{Rules, Edits} = parse(Content),
{Correct, Incorrect} = classify_edits(Edits, Rules),
Corrected = corrections(Incorrect, Rules),
io:format("Originally Correct: ~p~n", [sum_of_middles(Correct)]),
@joeytrapp
joeytrapp / aoc_4.erl
Created December 5, 2024 04:04
Advent of Code Day 4 Part 1 and Part 2
-module(aoc).
-export([main/1]).
main([Path]) ->
{ok, Content} = file:read_file(Path),
Data = fill(Content),
YSize = array:size(Data),
XSize = array:size(array:get(0, Data)),
persistent_term:put(?MODULE, Data),
@joeytrapp
joeytrapp / aoc_3.erl
Last active December 9, 2024 06:58
Advent of Code 2024 Day 3 Part 1 and Part 2
-module(aoc).
-export([main/1]).
main([Path]) ->
{ok, Data1} = file:read_file(Path, [read, binary]),
io:format("Without modes: ~p~n", [read_char(Data1, skip, 0)]),
{ok, Data2} = file:read_file(Path, [read, binary]),
io:format("With modes: ~p~n", [read_char(Data2, do, 0)]),
erlang:halt(0).
@joeytrapp
joeytrapp / aoc_2.erl
Last active December 9, 2024 06:58
Advent of Code 2024 Day 2 Part 1 and Part 2
-module(aoc).
-export([main/1]).
main([Path]) ->
{ok, Data} = parse(Path),
io:format("Safe: ~p~n", [lists:sum(lists:map(fun is_safe/1, Data))]),
io:format("Dampened: ~p~n", [lists:sum(lists:map(fun is_less_safe/1, Data))]),
erlang:halt(0).
@joeytrapp
joeytrapp / aoc_1.erl
Last active December 9, 2024 06:57
Advent of Code 2024 Day 1 Part 1 and Part 2
-module(aoc).
-export([main/1]).
-import(file, [read_file/1]).
-import(lists, [unzip/1, map/2, zip/2, sort/1, foldl/3, filter/2, sum/1]).
-import(maps, [get/3, update_with/4]).
-import(string, [is_empty/1, split/3, trim/1]).
main([Path]) ->
@joeytrapp
joeytrapp / phoenix_test_redirect_missing_req_headers.exs
Last active September 6, 2024 23:44
Demonstrate that manually set request headers are not present in redirect/navigate requests
Mix.install(
[
{:phoenix_playground, "~> 0.1.6"},
{:phoenix_test, "~> 0.3.2"}
],
config: [
phoenix_test: [endpoint: Demo.Endpoint],
phoenix_playground: [
{Demo.Endpoint,
[
@joeytrapp
joeytrapp / FileBtn.re
Created April 10, 2019 17:54
ReasonReact 0.7.0 ref example
[@react.component]
let make = (~className="", ~onSelect, ~children) => {
let fileInputRef: ReactDOMRe.Ref.currentDomRef =
React.useRef(None->Js.Nullable.fromOption);
let key = React.useRef(1);
let handleInputChange =
React.useCallback0(event => {
let files = ReactEvent.Form.target(event)##files;