<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link rel="stylesheet" href="../../coverage.css"/> <title> the_great_game/world/routes.clj </title> </head> <body> <span class="covered" title="1 out of 1 forms covered"> 001 (ns the-great-game.world.routes </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 002 "Conceptual (plan level) routes, represented as tuples of location ids." </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 003 (:require [the-great-game.utils :refer [cyclic?]])) </span><br/> <span class="blank" title="0 out of 0 forms covered"> 004 </span><br/> <span class="covered" title="1 out of 1 forms covered"> 005 (defn find-routes </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 006 "Find routes from among these `routes` from `from`; if `to` is supplied, </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 007 to `to`, by breadth-first search." </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 008 ([routes from] </span><br/> <span class="covered" title="2 out of 2 forms covered"> 009 (map </span><br/> <span class="covered" title="5 out of 5 forms covered"> 010 (fn [to] (cons from to)) </span><br/> <span class="covered" title="2 out of 2 forms covered"> 011 (remove </span><br/> <span class="covered" title="1 out of 1 forms covered"> 012 empty? </span><br/> <span class="covered" title="2 out of 2 forms covered"> 013 (map </span><br/> <span class="covered" title="1 out of 1 forms covered"> 014 (fn [route] </span><br/> <span class="covered" title="3 out of 3 forms covered"> 015 (remove </span><br/> <span class="covered" title="4 out of 4 forms covered"> 016 #(= from %) </span><br/> <span class="covered" title="10 out of 10 forms covered"> 017 (if (some #(= % from) route) route))) </span><br/> <span class="covered" title="1 out of 1 forms covered"> 018 routes)))) </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 019 ([routes from to] </span><br/> <span class="covered" title="5 out of 5 forms covered"> 020 (let [steps (find-routes routes from) </span><br/> <span class="covered" title="2 out of 2 forms covered"> 021 found (filter </span><br/> <span class="covered" title="11 out of 11 forms covered"> 022 (fn [step] (if (some #(= to %) step) step)) </span><br/> <span class="covered" title="1 out of 1 forms covered"> 023 steps)] </span><br/> <span class="covered" title="1 out of 1 forms covered"> 024 (if </span><br/> <span class="covered" title="3 out of 3 forms covered"> 025 (empty? found) </span><br/> <span class="covered" title="6 out of 6 forms covered"> 026 (find-routes routes from to steps) </span><br/> <span class="covered" title="1 out of 1 forms covered"> 027 found))) </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 028 ([routes from to steps] </span><br/> <span class="covered" title="1 out of 1 forms covered"> 029 (if </span><br/> <span class="covered" title="5 out of 5 forms covered"> 030 (not (empty? steps)) </span><br/> <span class="covered" title="3 out of 3 forms covered"> 031 (let [paths (remove </span><br/> <span class="covered" title="1 out of 1 forms covered"> 032 cyclic? </span><br/> <span class="covered" title="2 out of 2 forms covered"> 033 (mapcat </span><br/> <span class="covered" title="1 out of 1 forms covered"> 034 (fn [path] </span><br/> <span class="covered" title="2 out of 2 forms covered"> 035 (map </span><br/> <span class="covered" title="7 out of 7 forms covered"> 036 (fn [x] (concat path (rest x))) </span><br/> <span class="covered" title="6 out of 6 forms covered"> 037 (find-routes routes (last path)))) </span><br/> <span class="covered" title="1 out of 1 forms covered"> 038 steps)) </span><br/> <span class="covered" title="3 out of 3 forms covered"> 039 found (filter </span><br/> <span class="covered" title="7 out of 7 forms covered"> 040 #(= (last %) to) paths)] </span><br/> <span class="covered" title="1 out of 1 forms covered"> 041 (if </span><br/> <span class="covered" title="3 out of 3 forms covered"> 042 (empty? found) </span><br/> <span class="covered" title="6 out of 6 forms covered"> 043 (find-routes routes from to paths) </span><br/> <span class="covered" title="1 out of 1 forms covered"> 044 found))))) </span><br/> <span class="blank" title="0 out of 0 forms covered"> 045 </span><br/> <span class="covered" title="1 out of 1 forms covered"> 046 (defn find-route </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 047 "Find a single route from `from` to `to` in this `world-or-routes`, which </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 048 may be either a world as defined in [[the-great-game.world.world]] or else </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 049 a sequence of tuples of keywords." </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 050 [world-or-routes from to] </span><br/> <span class="covered" title="2 out of 2 forms covered"> 051 (first </span><br/> <span class="covered" title="2 out of 2 forms covered"> 052 (find-routes </span><br/> <span class="partial" title="7 out of 8 forms covered"> 053 (or (:routes world-or-routes) world-or-routes) </span><br/> <span class="covered" title="1 out of 1 forms covered"> 054 from </span><br/> <span class="covered" title="1 out of 1 forms covered"> 055 to))) </span><br/> </body> </html>