sclass ActualThoughtSpace extends AbstractThoughtSpace { new TripleIndex index; int limit; // 0 = no limit L<Triple<S>> blockedPatterns = listWithNotify(r { blocked.clear(); }); Map<TripleWeb, Bool> blocked = newWeakHashMap(); *() {} *(int *limit) {} *(AbstractThoughtSpace parent) { super(parent); } // existence of triple has already been checked public GlobalID postTriple(T3<S> t) { if (limitReached()) fail("Thought space limit reached"); TripleWeb w = tripleWeb(t); index.addTriple(w); ret w.globalID(); } bool limitReached() { ret limit > 0 && size() >= limit; } L<TripleRef<S>> get(S s) { ret ai_triplesToTripleRefs_lazyList(s, getTriples(s)); } L<TripleWeb> getTriples(S s) { L<TripleWeb> l = filterNonBlockedTriples(parent.getTriples(s)); ret combineLists(l, index.getTriples(ai_shortenForIndex(s))); } L<TripleRef<S>> filterNonBlocked(L<TripleRef<S>> l) { if (empty(blockedPatterns)) ret l; L<TripleRef<S>> out = emptyListWithCapacity(l); for (TripleRef<S> ref : l) if (!isBlocked((TripleWeb) ref.triple)) out.add(ref); ret out; } L<TripleWeb> filterNonBlockedTriples(L<TripleWeb> l) { if (empty(blockedPatterns)) ret l; L<TripleWeb> out = emptyListWithCapacity(l); for (TripleWeb w : l) if (!isBlocked(w)) out.add(w); ret out; } bool isBlocked(TripleWeb t) { Bool b = blocked.get(t); if (b != null) ret b; b = false; for (T3<S> pat : blockedPatterns) if (simpleMatchTriple_dollarVars(pat, t) != null) { b = true; break; } blocked.put(t, b); ret b; } int size() { ret index.size(); } }
Began life as a copy of #1012640
download show line numbers debug dex old transpilations
Travelled to 13 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1012676 |
Snippet name: | ActualThoughtSpace with original blocking (very flexible but slow) |
Eternal ID of this version: | #1012676/3 |
Text MD5: | 5922e919b7fb84edc1974256f702b39e |
Author: | stefan |
Category: | javax / a.i. |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2017-12-10 02:53:14 |
Source code size: | 1774 bytes / 64 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 427 / 630 |
Version history: | 2 change(s) |
Referenced in: | [show references] |