Advertisement
kstoyanov

06. System Components

Sep 21st, 2020
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function systemComponents(input) {
  2.   const systems = new Map();
  3.  
  4.   const sortSystems = (s1, s2) => {
  5.     if (systems.get(s1).size != systems.get(s2).size) {
  6.       return systems.get(s2).size - systems.get(s1).size;
  7.     }
  8.     return s1.toLowerCase().localeCompare(s2.toLowerCase());
  9.   };
  10.  
  11.   const sortComponents = (system, c1, c2) => systems.get(system).get(c2).length - systems.get(system).get(c1).length;
  12.  
  13.  
  14.   input.forEach((line) => {
  15.     const tokens = line.split(/\s*\|\s*/);
  16.  
  17.     const [system, component, subcomponent] = tokens;
  18.  
  19.     if (!systems.get(system)) {
  20.       systems.set(system, new Map());
  21.     }
  22.     if (!systems.get(system).get(component)) {
  23.       systems.get(system).set(component, []);
  24.     }
  25.     systems.get(system).get(component).push(subcomponent);
  26.   });
  27.  
  28.   const systemsSorted = Array.from(systems.keys()).sort((s1, s2) => sortSystems(s1, s2));
  29.  
  30.   systemsSorted.forEach((system) => {
  31.     console.log(system);
  32.     const componentsSorted = Array.from(systems.get(system).keys()).sort((c1, c2) => sortComponents(system, c1, c2));
  33.  
  34.     componentsSorted.forEach((component) => {
  35.       console.log(`|||${component}`);
  36.       systems.get(system).get(component).forEach((sc) => console.log(`||||||${sc}`));
  37.     });
  38.   });
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement