Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

30
LINES

< > BotCompany Repo | #1025019 // transitiveHullOfFunction_multipleInputs

JavaX fragment (include) [tags: use-pretranspiled]

Libraryless. Click here for Pure Java version (2234L/14K).

// f : A -> Collection<A>
// trace_out collects what the function returns
static <A> Set<A> mapLike transitiveHullOfFunction_multipleInputs(O f, Cl<A> inputs, O... _) {
  final HashSet<A> seen = asHashSet(inputs);
  final Int max = cast optPar max(_);
  Map trace_out = cast optPar trace_out(_);
  
  // Make pool of iterators
  final new LinkedList<Iterator<A>> pool;
  fOr (A input : inputs)
    pool.add(iterator((Iterable<A>) callF(f, input)));
  int n = 0;
    
  while ping (!empty(pool) && (max == null || n < max)) {
    Iterator<A> it = first(pool);
    if (!it.hasNext()) continue with removeFirst(pool);
    
    // Get entry and check if seen already
    A entry = it.next();
    if (!seen.add(entry)) continue;

    // found new entry - return and schedule for further analysis
    Collection<A> newStuff = cast callF(f, entry);
    mapPut(trace_out, entry, newStuff);
    if (nempty(newStuff))
      pool.add(iterator(newStuff));
    ++n;
  }
  ret seen;
}

Author comment

Began life as a copy of #1022458

download  show line numbers  debug dex  old transpilations   

Travelled to 6 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt

No comments. add comment

Snippet ID: #1025019
Snippet name: transitiveHullOfFunction_multipleInputs
Eternal ID of this version: #1025019/3
Text MD5: 7af36670d4aa483864259eecf39a4419
Transpilation MD5: ce8e34251e0779fc46a2ee6ca49518cc
Author: stefan
Category: javax / a.i.
Type: JavaX fragment (include)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2019-09-01 13:16:43
Source code size: 999 bytes / 30 lines
Pitched / IR pitched: No / No
Views / Downloads: 244 / 343
Version history: 2 change(s)
Referenced in: #1006654 - Standard functions list 2 (LIVE, continuation of #761)