Skip to content

Instantly share code, notes, and snippets.

@skatenerd
skatenerd / day_four_2023.hs
Created December 4, 2023 06:25
AOC 2023 Day Four
{-# LANGUAGE OverloadedStrings #-}
module DayFour (module DayFour) 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
extractNumbers :: T.Text -> [Int]
@skatenerd
skatenerd / day_three_2023.hs
Last active December 3, 2023 18:49
2023 Day 3 Advent of Code
module DayThree (module DayThree) where
import qualified Data.Text as T
import qualified Text.Read as TR
import qualified Data.Foldable as DF
import qualified Data.Maybe as M
import qualified Data.List.Safe as LS
import qualified Data.Set as S
import qualified Data.List as L
import qualified Data.Text.IO as TI
@skatenerd
skatenerd / day_two_2023.hs
Created December 2, 2023 18:31
2023 Day Two
{-# LANGUAGE OverloadedStrings #-}
module DayTwo
( partOne, greenCount, legalDraw, legalGame, partOneCheckRow, gameId, power, partTwo
) where
import qualified Data.Text as T
import qualified Data.List.Safe as LS
import qualified Data.Text.IO as TI
@skatenerd
skatenerd / day_one_2023.hs
Created December 1, 2023 18:30
AOC 2023 Day 1
module DayOne
( partOne, decodeLine, substringIndices, Digit (..), operateOnString, toLower, allDigits, firstDigit, lastDigit, scoreDigit, scoreLine, partTwo
) where
import qualified Data.Text as T
import qualified Data.Text.IO as TI
import qualified Data.Maybe as M
import qualified Data.List as L
import qualified Data.List.Safe as LS
@skatenerd
skatenerd / sudoku.py
Last active November 14, 2023 22:29
Sudoku solver
import itertools
import functools
class Subgrid:
def __init__(self, row, column):
self.row = row
self.column = column
def indices(self):
return [
@skatenerd
skatenerd / embolden.rb
Last active October 24, 2023 14:23
embolden substrings
def indices(s,t)
# indices('abcHellodefHello', 'Hello')
# => [3,11]
found = s.index(t)
if found
offset = 1 + found
return [found] + indices(s[offset..], t).map {|e| e + offset}
else
return []
end
@skatenerd
skatenerd / rotate.py
Last active August 1, 2023 12:20
Clockwise matrix rotation
def cycles(size, depth=0):
# we use (x,y) notation
if size < 2:
return iter([])
not_aware_of_depth = (cycle(offset, size) for offset in range(0, size - 1))
cycles_at_current_depth = (
(go_right(go_down(p, depth), depth) for p in cycle)
for cycle in not_aware_of_depth
)
@skatenerd
skatenerd / DayFifteen.hs
Created December 15, 2022 21:27
day fifteen
{-# LANGUAGE OverloadedStrings #-}
module DayFifteen
( main
) where
import qualified Data.Maybe as M
import qualified Data.Ord as O
import qualified Data.Text as T
import qualified Data.Text.IO as TI
import qualified Data.List as L
import qualified Data.List.Split as LS
@skatenerd
skatenerd / DayFourteen.hs
Created December 14, 2022 15:31
Day Fourteen
module DayFourteen
( main
) where
import qualified Data.Maybe as M
import qualified Data.Ord as O
import qualified Data.Text as T
import qualified Data.Text.IO as TI
import qualified Data.List as L
import qualified Data.List.Split as LS
import qualified Data.Set as S
@skatenerd
skatenerd / DayThirteen.hs
Last active December 13, 2022 18:29
Day 13
module DayThirteen
( main
) where
import qualified Data.Maybe as M
import qualified Data.Ord as O
import qualified Data.Text as T
import qualified Data.Text.IO as TI
import qualified Data.List as L
import qualified Data.List.Split as LS
import qualified Data.Function as F