Mix.install([
{:kino, "~> 0.16.0"}
])
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| string_to_term = fn string -> | |
| string | |
| |> String.to_charlist() | |
| |> :erl_scan.string() | |
| |> then(fn {:ok, term, _} -> :erl_parse.parse_term(term) end) | |
| end | |
| term_to_string = fn term -> | |
| :io_lib.format("~w.", [term]) |> :erlang.iolist_to_binary() | |
| end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Build And Package | |
| Live meeting 2sep 25 | |
| # Priority issues rebar3 | |
| 1. issues with using hex deps to compile | |
| 2. locking of plugins for non default profiles | |
| 3. windows may be broken, CI says it is but that may only be CI | |
| 4. relx on windows is in a questionable state |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| defmodule ElmdbStage do | |
| @moduledoc """ | |
| Create a GenStage for an :elmdb based LMDB database cursor. | |
| This is for linearly reading from a db | |
| """ | |
| use GenStage | |
| def start_link( env, db ) do | |
| GenStage.start_link( __MODULE__, { env, db } ) | |
| end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| defmodule HashSignature do | |
| @doc """ | |
| encode input to a sha256 and output as an armored string. | |
| results should be fully portable and consistent with other | |
| tools. | |
| """ | |
| def get( input ) do | |
| :crypto.hash( :sha256, input ) | |
| |> :crypto.bytes_to_integer | |
| |> (fn i -> :io_lib.format("~64.16.0b",[i]) |> hd end ).() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| defmodule TimeAgent do | |
| def start_link do | |
| Agent.start_link( fn -> { Map.new, Map.new } end, name: __MODULE__ ) | |
| end | |
| def time_run( m, f, a ) do | |
| { us, result } = :timer.tc( m, f, a ) | |
| Agent.cast( __MODULE__, __MODULE__, :add_sample, [ to_string(m) <> "." <> to_string(f), us ] ) | |
| result |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| defmodule TermRoundTrip do | |
| @moduledoc """ | |
| Convert a term to a readable string then back to a term | |
| """ | |
| def term_to_binary( term ) do | |
| :io_lib.format("~p.~n", [ term ] ) | |
| |> :erlang.iolist_to_binary | |
| end | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| defmodule Day4 do | |
| def parser( input ) do | |
| String.split( input, "\n" ) | |
| |> Enum.reduce( [], fn "", acc -> acc; line,acc -> [ String.split(line," ") | acc ] end ) | |
| end | |
| def start1( input ) do | |
| parser( input ) |> step1a( [valid: 0, invalid: 0] ) | |
| end | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| defmodule Day3 do | |
| # This does more work than required but is still O(1) | |
| # diagonal low right is even square root | |
| def start1( val ) do | |
| col_height = :math.sqrt( val ) |> Float.ceil |> trunc | |
| col_height = if Integer.mod( col_height, 2 ) == 0, do: col_height+1, else: col_height | |
| low_right_corner = :math.pow( col_height, 2 ) |> trunc | |
| distance = low_right_corner - val | |
| ring_length = col_height * 4 - 4 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| defmodule Day2 do | |
| def parser( input ) do | |
| String.split( input, "\n" ) | |
| |> Enum.map( fn k -> | |
| String.split( k, "\t") | |
| |> Enum.map( &String.to_integer/1 ) | |
| end ) | |
| end | |
| def start1( input ) do | |
| input |
NewerOlder