Libraryless. Click here for Pure Java version (5329L/30K).
sclass BreadthFirstPathFinder<A> implements Steppable { // must set IF1<A, Cl<A>> getChildren; // graph representation - filled during exploration new MultiMap<A> links; // node queue (temporary) new LinkedList<A> queue; *() {} *(IF1<A, Cl<A>> *getChildren) {} *(IF1<A, Cl<A>> *getChildren, A startNode) { add(startNode); } void add(A a, A prev default null) { if (!links.containsKey(a)) { links.put(a, prev); queue.add(a); } } public bool step() { ping(); if (empty(queue)) false; A a = popFirst(queue); fOr (A b : getChildren.get(a)) add(b, a); true; } bool nodeReached(A a) { ret links.containsKey(a); } Cl<A> getBackLinks(A a) { ret links.get(a); } L<A> examplePath(A start, A dest) { new L<A> path; A node = dest; path.add(node); do { if (node == null) null; // no path found node = first(getBackLinks(node)); path.add(node); } while (node != start); ret reversed(path); } }
Began life as a copy of #1021566
download show line numbers debug dex old transpilations
Travelled to 4 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, vouqrxazstgt
No comments. add comment
Snippet ID: | #1030913 |
Snippet name: | BreadthFirstPathFinder - breadth-first search along virtual structure, collecting links [OK] |
Eternal ID of this version: | #1030913/15 |
Text MD5: | 31151c97a27f9ce254ca61184aac2a04 |
Transpilation MD5: | 8eb4c2f55213f214e172820f0d3b7c71 |
Author: | stefan |
Category: | javax |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2022-03-21 23:29:32 |
Source code size: | 1086 bytes / 50 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 225 / 482 |
Version history: | 14 change(s) |
Referenced in: | [show references] |