From fc905134c97516274e13ec5c71c525ec006d4072 Mon Sep 17 00:00:00 2001 From: Tim Stallard Date: Tue, 13 Dec 2016 23:49:17 +0000 Subject: [PATCH] Added deduplication --- day11/parallel_rewrite.js | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/day11/parallel_rewrite.js b/day11/parallel_rewrite.js index ec1fffc..0acd67e 100644 --- a/day11/parallel_rewrite.js +++ b/day11/parallel_rewrite.js @@ -100,11 +100,15 @@ function nextSetOfScenarios(scenarios, callback){ } return true; }; - scenarioSort = (scenario)=>{ scenario.floors.forEach((a)=>(a.sort())); return scenario; } + scenarioToJson = (scenario)=>(JSON.stringify(scenario)); + scenarioFromJson = (scenario)=>(JSON.parse(scenario)); + scenarioDuplicate = (scenario, i, scenarios)=>{ + return [scenarios.indexOf(scenario) == i, scenario]; + }; @@ -122,10 +126,29 @@ function nextSetOfScenarios(scenarios, callback){ console.log("valid", scenarios.length); p.map(scenarios, scenarioSort, (err, scenarios)=>{ console.log("sorted", scenarios.length); - callback(scenarios); + p.map(scenarios, scenarioToJson, (err, scenarios)=>{ + console.log("inJSON", scenarios.length); + p.map(scenarios, scenarioDuplicate, (err, scenarios)=>{ + scenarios = scenarios.filter((scenario)=>(scenario[0])); + scenarios = scenarios.map((scenario)=>(scenario[1])); + console.log("deduped", scenarios.length); + p.map(scenarios, scenarioFromJson, (err, scenarios)=>{ + console.log("fromJSON", scenarios.length); + callback(scenarios); + }); + }); + }); }); }); - }) + }); + + /* + Standard code to copy + p.map(scenarios, scenarioSort, (err, scenarios)=>{ + callback(scenarios); + }); + + */ //p.map(possibleScenarios).reduce(merge).spawn(forceMerge).then(callback); @@ -180,7 +203,7 @@ var callback = (scenarios)=>{ nextSetOfScenarios(scenarios, callback); } else{ - console.log(possibilities); + console.log(scenarios); p.destroy(); } }