(import :gerbil/gambit/ports) (import :std/iter) (import :std/pregexp) (import :std/srfi/1) (import :std/sort) (export main) (def (no-incoming? edges m) (not (member m (map cadr edges)))) (def (find-no-incoming edges) (sort (filter (lambda (m) (no-incoming? edges m)) (delete-duplicates (apply append edges))) charlist s))) (cdr (pregexp-match "Step (.) must be finished before step (.) can begin." e)))) (call-with-input-file "input.txt" (lambda (p) (read-all p read-line))))) (displayln (list->string (topological-sort edges))))