diff options
author | Julien Dessaux | 2024-12-07 01:35:34 +0100 |
---|---|---|
committer | Julien Dessaux | 2024-12-07 01:35:34 +0100 |
commit | cdee7f76a018e7313258318047d0becb8b59b974 (patch) | |
tree | b07bd67a1d75aa5f61239d4a6aa08ed393e24412 /2024 | |
parent | 2024-06 in haskell (diff) | |
download | advent-of-code-cdee7f76a018e7313258318047d0becb8b59b974.tar.gz advent-of-code-cdee7f76a018e7313258318047d0becb8b59b974.tar.bz2 advent-of-code-cdee7f76a018e7313258318047d0becb8b59b974.zip |
2024-01 in factor
Diffstat (limited to '2024')
-rw-r--r-- | 2024/01-Historian_Hysteria/01-tests.factor | 7 | ||||
-rw-r--r-- | 2024/01-Historian_Hysteria/01.factor | 33 |
2 files changed, 40 insertions, 0 deletions
diff --git a/2024/01-Historian_Hysteria/01-tests.factor b/2024/01-Historian_Hysteria/01-tests.factor new file mode 100644 index 0000000..48c6cb2 --- /dev/null +++ b/2024/01-Historian_Hysteria/01-tests.factor @@ -0,0 +1,7 @@ +! Copyright (C) 2024 Julien (adyxax) Dessaux. +! See https://git.adyxax.org/adyxax/advent-of-code/tree/LICENSE for EUPL license. +USING: tools.test aoc.2024.01.private ; +IN: aoc.2024.01.tests + +{ 11 } [ "example" part1 ] unit-test +{ 31 } [ "example" part2 ] unit-test diff --git a/2024/01-Historian_Hysteria/01.factor b/2024/01-Historian_Hysteria/01.factor new file mode 100644 index 0000000..a34721e --- /dev/null +++ b/2024/01-Historian_Hysteria/01.factor @@ -0,0 +1,33 @@ +! Copyright (C) 2024 Julien (adyxax) Dessaux. +! See https://git.adyxax.org/adyxax/advent-of-code/tree/LICENSE for EUPL license. +USING: assocs io io.encodings.utf8 io.files kernel math math.parser +math.statistics namespaces prettyprint sequences sorting splitting ; +IN: aoc.2024.01 + +<PRIVATE + +: load_input ( filename -- array array ) + "~/git/adyxax/aoc/2024/01-Historian_Hysteria/" + swap append utf8 file-lines + [ split-words harvest ] map unzip + [ [ string>number ] map ] bi@ ; + +: part1 ( filename -- n ) + load_input + [ sort ] bi@ + [ - abs ] 2map + sum ; + +: part2 ( filename -- n ) + load_input + histogram ! turns an array into a hashtable of { value occurrences } + '[ dup _ at 0 or * ] map + sum ; + +PRIVATE> + +: aoc202401 ( -- ) + "input" part1 pprint nl + "input" part2 pprint nl ; + +MAIN: aoc202401 |