From 485bb2f2106ae8d8b65d016c5a4c090203d5cf8a Mon Sep 17 00:00:00 2001 From: Tim Stallard Date: Thu, 15 Dec 2016 10:39:48 +0000 Subject: [PATCH] More day 11 stuff --- day11/parallel_rewrite.js | 42 +++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/day11/parallel_rewrite.js b/day11/parallel_rewrite.js index 525fafa..d8073d5 100644 --- a/day11/parallel_rewrite.js +++ b/day11/parallel_rewrite.js @@ -101,16 +101,25 @@ function nextSetOfScenarios(scenarios, callback){ return true; }; scenarioSort = (scenario)=>{ - scenario.floors.forEach((a)=>(a.sort())); + scenario.floors = scenario.floors.map((a)=>(a.sort())); return scenario; } - scenarioToJson = (scenario)=>(JSON.stringify(scenario)); - scenarioFromJson = (scenario)=>(JSON.parse(scenario)); - scenarioDuplicate = (scenario, i, scenarios)=>{ - scenario[0] = (scenarios.findIndex((item)=>(item[1] == scenario[1])) == i); - return scenario; + scenarioToJson = (scenario)=>{ + return scenario }; - + scenarioFromJson = (scenario)=>(scenario); + scenarioDuplicate = (scenario, i, scenarios)=>{ + //console.log(scenario[2].findIndex((item)=>(console.log("item", item))), i); + var scenarioStr = JSON.stringify(scenario); + return (scenarios.findIndex((item)=>(JSON.stringify(item) == scenarioStr)) == i); + }; + scenarioPrevious = (scenario)=>{ + //console.log(previous.indexOf(JSON.stringify(scenario))); + return (previous.indexOf(JSON.stringify(scenario)) == -1); + }; + scenarioAddToPrevious = (scenario)=>{ + previous.push(JSON.stringify(scenario)); + } console.log("start", scenarios.length); @@ -127,8 +136,23 @@ function nextSetOfScenarios(scenarios, callback){ console.log("valid", scenarios.length); p.map(scenarios, scenarioSort, (err, scenarios)=>{ console.log("sorted", scenarios.length); + + console.log("to JSON", scenarios.length); + scenarios = scenarios.map((scenario)=>(JSON.stringify(scenario))); + console.log("dedupe", scenarios.length); + scenarios = _.uniq(scenarios, (scenario)=>(JSON.stringify(scenario))); + console.log("removing previous", scenarios.length); + scenarios = _.difference(scenarios, previous); + console.log("adding to previous", scenarios.length); + scenarios.forEach((scenario)=>(previous.push(scenario))); + console.log("from JSON", scenarios.length); + scenarios = scenarios.map((scenario)=>(JSON.parse(scenario))); + callback(scenarios); + + /* p.map(scenarios, scenarioToJson, (err, scenarios)=>{ console.log("inJSON", scenarios.length); + //console.log(scenarios[0]); scenarios = scenarios.map((scenario)=>([false, scenario])); p.map(scenarios, scenarioDuplicate, (err, scenarios)=>{ scenarios = scenarios.filter((scenario)=>(scenario[0])); @@ -140,6 +164,7 @@ function nextSetOfScenarios(scenarios, callback){ }); }); }); + */ }); }); }); @@ -157,7 +182,7 @@ function nextSetOfScenarios(scenarios, callback){ /* for(var scenario of scenarios){ - newScenarios = newScenarios.concat(possibleScenarios(scenario)); + scenarios = newScenarios.concat(possibleScenarios(scenario)); } console.log("removing invalid"); @@ -201,6 +226,7 @@ var i = 0; var callback = (scenarios)=>{ i++; + console.log(i, scenarios.length); if(i < 10){ nextSetOfScenarios(scenarios, callback); }