sclass ActualThoughtSpace extends AbstractThoughtSpace implements AutoCloseable { new TripleIndex index; int limit; // 0 = no limit Map<TripleWeb, Bool> blocked = newWeakHashMap(); Set<Symbol> blockedA, blockedB; *() {} *(int *limit) {} *(AbstractThoughtSpace parent) { super(parent); } public GlobalID postTriple(T3<Symbol> t, bool verified) { print("Posting: " + t + " / " + verified); if (limitReached()) fail("Thought space limit reached"); TripleWeb w = tripleWeb(t); w.verified(verified); index.addTriple(w); ret w.globalID(); } // existence of triple has already been checked public GlobalID postTriple(T3<Symbol> 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; } /*public bool hasTriple(Symbol a, Symbol b, Symbol c) { ret index.getExact(a, b, c) != null; }*/ L<TripleRef<Symbol>> get(Symbol s) { ret ai_triplesToTripleRefs_lazyList(s, getTriples(s)); } L<TripleRef<Symbol>> get(Symbol s, int position) { ret ai_triplesToTripleRefs_lazyList(s, getTriples(s, position)); } L<TripleWeb> getTriples(Symbol s) { L<TripleWeb> l = parent == null ? null : filterNonBlockedTriples_lazy(parent.getTriples(s)); ret combineLists(l, index.getTriples(ai_shortenForIndex(s))); } L<TripleWeb> getTriples(Symbol s, int position) { L<TripleWeb> l = parent == null ? null : filterNonBlockedTriples_lazy(parent.getTriples(s, position)); ret combineLists(l, index.getTriples(ai_shortenForIndex(s), position)); } L<TripleWeb> getOneTwo(Symbol a, Symbol b) { ret index.getOneTwo(a, b); } L<TripleWeb> filterNonBlockedTriples_lazy(final L<TripleWeb> l) { class FilterList extends LazyList<TripleWeb> { final int n = l(l); public int size() { ret n; } public TripleWeb get(int i) { TripleWeb w = syncGet(l, i); if (w != null && isBlocked(w)) null; ret w; } } ret new FilterList; } L<TripleWeb> filterNonBlockedTriples(L<TripleWeb> l) { if (empty(blockedA) && empty(blockedB)) ret l; L<TripleWeb> out = emptyListWithCapacity(l); for (TripleWeb w : l) if (!isBlocked(w)) out.add(w); ret out; } bool isBlocked(TripleWeb t) { ret contains(blockedA, t.a) || contains(blockedB, t.b); } int size() { ret index.size(); } public void close() { thoughtSpaceDone(this); } Collection<TripleWeb> allTriples() { ret index.allTriples(); } void setBlockedA(Collection<? extends CharSequence> l) { blockedA = asSymbolSet(allToSymbol(l)); } }
Began life as a copy of #1012051
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: | #1012640 |
Snippet name: | ActualThoughtSpace [LIVE] |
Eternal ID of this version: | #1012640/42 |
Text MD5: | 5e3033968fdab463f6684128c8d26f02 |
Author: | stefan |
Category: | javax / a.i. |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2018-01-13 21:13:29 |
Source code size: | 2847 bytes / 95 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 523 / 1096 |
Version history: | 41 change(s) |
Referenced in: | #1012642 - AbstractThoughtSpace #1012643 - GlobalThoughtSpace #1012676 - ActualThoughtSpace with original blocking (very flexible but slow) #1034167 - Standard Classes + Interfaces (LIVE, continuation of #1003674) #3000475 - Smart Bot's answer to: !fresh recentlyChangedSnippets() |