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