More files
This commit is contained in:
4
janet/Makefile
Normal file
4
janet/Makefile
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
.PHONY: test
|
||||
test:
|
||||
jpm test
|
||||
7
janet/project.janet
Normal file
7
janet/project.janet
Normal 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
34
janet/src/day5.janet
Normal 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
19
janet/test/day5.janet
Normal 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]])))
|
||||
|
||||
Reference in New Issue
Block a user