Guest User

Untitled

a guest
Dec 14th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. const input = require("fs").readFileSync("day12-input.txt", "UTF-8");
  2.  
  3. pairs = {};
  4. input.split("\n").forEach(row => {
  5. split = row.split(" <-> ");
  6. split[1] = split[1].split(", ");
  7. pairs[split[0]] = split[1];
  8. });
  9.  
  10. count = 0;
  11. seen = [];
  12. program = {};
  13. match = 0;
  14. Object.keys(pairs).forEach(key => (program[key] = 0));
  15.  
  16. function group() {
  17. Object.keys(pairs).forEach(key => {
  18. if (key === match) {
  19. program[key] = 1;
  20. seen.push(key);
  21. }
  22. seen = [];
  23. if (find(pairs[key]) > 0) {
  24. program[key] = 1;
  25. }
  26. });
  27. }
  28.  
  29. function find(childern) {
  30. c = 0;
  31. childern.forEach(child => {
  32. if (child == match) {
  33. c++;
  34. }
  35. if (seen.indexOf(child) === -1) {
  36. seen.push(child);
  37. c += find(pairs[child]);
  38. }
  39. });
  40. return c;
  41. }
  42.  
  43. function reduceHash() {
  44. matched = Object.keys(program).filter(key => program[key] === 1);
  45. matched.forEach(id => {
  46. delete pairs[id];
  47. delete program[id];
  48. });
  49. }
  50.  
  51. group();
  52. groups = 1;
  53. reduceHash();
  54.  
  55. console.log("Part 1:", matched.length);
  56.  
  57. while (Object.keys(program).length) {
  58. match = Object.keys(program).filter(key => program[key] === 0)[0];
  59. group();
  60. groups++;
  61. reduceHash();
  62. }
  63.  
  64. console.log("Part 2:", groups);
Add Comment
Please, Sign In to add comment