More files

This commit is contained in:
2025-10-29 20:42:01 -04:00
parent 3449bfb935
commit a9ff5724c9
4 changed files with 64 additions and 0 deletions

4
janet/Makefile Normal file
View File

@@ -0,0 +1,4 @@
.PHONY: test
test:
jpm test

7
janet/project.janet Normal file
View File

@@ -0,0 +1,7 @@
(declare-project
:name "2024-advent-of-code"
:description "Advent of Code 2024"
:dependencies [])
(declare-source :source ["src/"])

34
janet/src/day5.janet Normal file
View File

@@ -0,0 +1,34 @@
(def peg-dep
(peg/compile
~{:main (sequence (capture :d+) "|" (capture :d+)) }))
(defn parse-dep [line]
(match (peg/match peg-dep (string/trim line))
[src dst] (tuple (scan-number src) (scan-number dst))
_ nil))
(defn parse-deps [lines]
(map parse-dep lines))
(defn parse-deps-file [filename]
(def stream (file/open filename))
(if stream
(defer (file/close stream))
(break nil))
(parse-deps (file/read stream :lines)))
(defn sources [deps]
(map |($ 0) deps))
(defn sinks [deps]
(map |($ 1) deps))
(defn roots [deps]
(def sinks_ (sinks deps))
(defn is-sink? [value]
(not (= nil (in sinks_ value))))
())
(defn main [prog & rest]
(print "Hello world!"))

19
janet/test/day5.janet Normal file
View File

@@ -0,0 +1,19 @@
(import /src/day5 :prefix "")
(assert (deep=
[1 2]
(parse-dep "1|2")))
(assert (deep=
@[[1 2] [3 4] [5 6]]
(parse-deps ["1|2" "3|4" "5|6"])))
(assert (deep=
[1 3 5]
(sources [[1 2] [3 4] [5 6]])))
(assert (deep=
[2 4 6]
(sinks [[1 2] [3 4] [5 6]])))