(library (day23) (export part1 part2) (import (ice-9 rdelim) (ice-9 regex) (pfds sets) (guile) (srfi srfi-69) (srfi srfi-88) (srfi srfi-89))) (define +line-regex+ (make-regexp "^([a-z][a-z])-([a-z][a-z])$")) (define (node? obj) (and (string? obj) (= (string-length obj) 2) (char<=? #\a (string-ref obj 0) #\z) (char<=? #\a (string-ref obj 1) #\z))) (define (node=? . nodes) (apply string=? nodes)) (define (network? obj) ;; Also, the table maps from node? to set? of node? (comparator stringset (map car (hash-table->alist nw)) stringlist clique) string