Solutions for day 3
This commit is contained in:
		
							
								
								
									
										59
									
								
								03/code.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								03/code.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,59 @@
 | 
				
			|||||||
 | 
					const fs = require('fs');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const inputArray = fs.readFileSync('input.txt').toString().split("\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Part One
 | 
				
			||||||
 | 
					let totalPriority = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for (i in inputArray) {
 | 
				
			||||||
 | 
					  const contents = (inputArray[i]);
 | 
				
			||||||
 | 
					  const intersection = getIntersection(contents);
 | 
				
			||||||
 | 
					  const priority = getPriority(intersection);
 | 
				
			||||||
 | 
					  totalPriority += priority;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					console.log(totalPriority);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Part Two
 | 
				
			||||||
 | 
					totalPriority = 0;
 | 
				
			||||||
 | 
					let group = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for (i in inputArray) {
 | 
				
			||||||
 | 
					  const contents = (inputArray[i]);
 | 
				
			||||||
 | 
					  group.push(contents.split(""));
 | 
				
			||||||
 | 
					  if (group.length === 3) {
 | 
				
			||||||
 | 
					    const badge = getBadge(group);
 | 
				
			||||||
 | 
					    const priority = getPriority(badge);
 | 
				
			||||||
 | 
					    totalPriority += priority;
 | 
				
			||||||
 | 
					    group = [];
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					console.log(totalPriority);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// functions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function getBadge(arrs) {
 | 
				
			||||||
 | 
					  let badge = arrs[0];
 | 
				
			||||||
 | 
					  for(let i = 1; i < arrs.length; i++){
 | 
				
			||||||
 | 
					    badge = intersection(badge, arrs[i]);
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					  return badge[0];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function getIntersection(contents) {
 | 
				
			||||||
 | 
					  const length = contents.length;
 | 
				
			||||||
 | 
					  const first = contents.substring(0, length / 2).split("");
 | 
				
			||||||
 | 
					  const second = contents.substring(length / 2).split("");
 | 
				
			||||||
 | 
					  return intersection(first, second)[0];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function getPriority(char) {
 | 
				
			||||||
 | 
					  const characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
 | 
				
			||||||
 | 
					  return characters.indexOf(char) + 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function intersection(first, second) {
 | 
				
			||||||
 | 
					  return first.filter(x => second.includes(x));
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
		Reference in New Issue
	
	Block a user