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