Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function solve(input){
- class SimpleObject{
- constructor(component){
- this.component = component;
- this.subcomponents = [];
- }
- addSubComponents(value){
- this.subcomponents.push(value);
- }
- }
- let arr = input.slice(0);
- let helper = arr.map(item=>{
- return item.split(' | ');
- });
- helper.sort((a,b)=>{
- if(a[0] === b[0]){
- return a[1].localeCompare(b[1]);
- }
- return b[0].localeCompare(a[0]);
- });
- arr = helper.map(item=>{
- return item.join(' | ');
- })
- //arr.sort((a,b) =>a.localeCompare(b));
- let systemObject = {};
- let objArr = [];
- for (const line of arr) {
- let [system, component, subcomponent] = line.split(' | ');
- if(!systemObject.hasOwnProperty('system')){
- systemObject.system = system;
- systemObject.components = [];
- let componentObject = new SimpleObject(component);
- componentObject.addSubComponents(subcomponent);
- systemObject.components.push(componentObject);
- }else{
- if(systemObject.system === system){
- if(systemObject.components[systemObject.components.length-1].component === component){
- systemObject.components[systemObject.components.length-1].subcomponents.push(subcomponent);
- }else{
- let compObj = new SimpleObject(component);
- compObj.addSubComponents(subcomponent);
- systemObject.components.push(compObj);
- }
- }else{
- objArr.push(systemObject);
- systemObject = new Object;
- systemObject.system = system;
- systemObject.components = [];
- let smallObject = new SimpleObject(component);
- smallObject.addSubComponents(subcomponent);
- systemObject.components.push(smallObject);
- }
- }
- }
- objArr.push(systemObject);
- objArr.sort((a,b)=>{
- if(b.components.length === a.components.length){
- return a.system.localeCompare(b.system);
- }
- return b.components.length - a.components.length;
- });
- for (const object of objArr) {
- object.components.sort((a,b)=>{
- return b.subcomponents.length - a.subcomponents.length;
- })
- console.log(`${object.system}`);
- object.components.map(item=>{
- console.log(`|||${item.component}`);
- item.subcomponents.map(el=>{
- console.log(`||||||${el}`);
- });
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment