Skip to content

Instantly share code, notes, and snippets.

@skatenerd
skatenerd / chainability.rb
Last active October 2, 2024 03:21
Chaining `SorbetOperation::Base` operations
class BlockOperation < BaseOperation
def initialize(&blk)
@blk = blk
end
def execute
@blk.call
end
end
class BaseOperation < SorbetOperation::Base
@skatenerd
skatenerd / day_fourteen_2023.hs
Created December 16, 2023 02:59
Day 14 AOC 2023
{-# LANGUAGE OverloadedStrings #-}
module DayFourteen where
import qualified Data.Text as T
import Data.Ratio ((%))
import qualified Data.List as L
import qualified Text.Read as TR
import Debug.Trace (traceShowId, traceShow)
import qualified Data.Maybe as M
import qualified Data.Map as DM
@skatenerd
skatenerd / day_fifteen_2023.hs
Created December 15, 2023 23:56
Day 15 AOC 2023
{-# LANGUAGE OverloadedStrings #-}
module DayFifteen where
import qualified Data.Text as T
import Data.Ratio ((%))
import qualified Data.List as L
import qualified Text.Read as TR
import Debug.Trace (traceShowId, traceShow)
import qualified Data.Maybe as M
import qualified Data.Map as DM
@skatenerd
skatenerd / day_twelve_2023.hs
Created December 15, 2023 13:48
Day Twelve
{-# LANGUAGE OverloadedStrings #-}
module DayTwelve where
import qualified Data.Text as T
import Data.Ratio ((%))
import qualified Data.List as L
import qualified Text.Read as TR
import Debug.Trace (traceShowId, traceShow)
import qualified Data.Maybe as M
import qualified Data.Map as DM
@skatenerd
skatenerd / day_eleven_2023.hs
Created December 12, 2023 14:38
AOC 2023 Day 11 - all about transposition
{-# LANGUAGE OverloadedStrings #-}
module DayEleven where
import qualified Data.Text as T
import qualified Data.List as L
import qualified Text.Read as TR
import Debug.Trace (traceShowId, traceShow)
import qualified Data.Maybe as M
import qualified Data.Set as S
import Safe (atDef, atMay, minimumMay, headMay)
@skatenerd
skatenerd / day_ten_2023.hs
Created December 12, 2023 04:59
Day 10 AOC 2023
{-# LANGUAGE OverloadedStrings #-}
module DayTen where
import qualified Data.Text as T
import qualified Data.List as L
import qualified Text.Read as TR
import Debug.Trace (traceShowId, traceShow)
import qualified Data.Maybe as M
import qualified Data.Set as S
import Safe (atDef, atMay, minimumMay, headMay)
@skatenerd
skatenerd / day_eight_2023.hs
Created December 9, 2023 14:58
Day Eight 2023 AOC
{-# LANGUAGE OverloadedStrings #-}
module DayEight (module DayEight) where
import qualified Data.Text as T
import qualified Data.List as L
import qualified Text.Read as TR
import qualified Data.Maybe as M
import qualified Data.Map as DM
import qualified Data.Set as DS
import qualified Safe as S
@skatenerd
skatenerd / day_nine_2023.hs
Last active December 9, 2023 23:44
Day Nine 2023
{-# LANGUAGE OverloadedStrings #-}
module DayNine where
import qualified Data.Text as T
import qualified Text.Read as TR
import qualified Data.List as L
import Safe (atMay, tailMay)
import qualified Data.Maybe as M
import Lib (operateOnFile)
@skatenerd
skatenerd / day_seven_2023.hs
Created December 7, 2023 14:37
AOC 2023 Day 7
{-# LANGUAGE OverloadedStrings #-}
module DaySeven (module DaySeven) where
import qualified Data.Text as T
import qualified Data.List as L
import qualified Text.Read as TR
import qualified Data.Maybe as M
import qualified Data.Set as S
import qualified Control.Monad as CM
import Data.Range((+=+))
@skatenerd
skatenerd / day_five.hs
Last active December 5, 2023 20:32
Day Five
{-# LANGUAGE OverloadedStrings #-}
module DayFive (module DayFive) where
import qualified Data.Text as T
import qualified Text.Read as TR
import qualified Data.Maybe as M
import qualified Data.Set as S
import qualified Control.Monad as CM
import Data.Range((+=+))
import qualified Data.Range as R