Added day 14
This commit is contained in:
parent
a180c5fbbf
commit
3562208a14
46
day14/part1.js
Normal file
46
day14/part1.js
Normal file
@ -0,0 +1,46 @@
|
||||
var salt = "ihaygndm";
|
||||
|
||||
var hashes = [];
|
||||
var toCheck = [];
|
||||
var checked = [];
|
||||
|
||||
tripleChar = (str)=>(str.match(/(.)\1{2}/) ? (str.match(/(.)\1{2}/)[1]) : false);
|
||||
fiveChar = (str, char)=>(str.indexOf(char.repeat(5)) > -1);
|
||||
md5 = (str)=>{
|
||||
var md5sum = require("crypto").createHash("md5");
|
||||
md5sum.update(str);
|
||||
return md5sum.digest("hex");
|
||||
}
|
||||
|
||||
var i = 0;
|
||||
while(checked.length < 64){
|
||||
var hash = md5(salt + i);
|
||||
hashes.push(hash);
|
||||
if(tripleChar(hash)){
|
||||
toCheck.push({
|
||||
i: i,
|
||||
char: tripleChar(hash),
|
||||
hash: hash
|
||||
});
|
||||
}
|
||||
|
||||
var toCheckNow = toCheck.filter((item)=>((item.i + 999) == i));
|
||||
toCheck = toCheck.filter((item)=>((item.i + 1000) > i));
|
||||
|
||||
for(var item of toCheckNow){
|
||||
var valid = false;
|
||||
for(var x = item.i + 1; x < i; x++){
|
||||
if(fiveChar(hashes[x], item.char)){
|
||||
item.match = x;
|
||||
item.matchHash = hashes[x];
|
||||
valid = true;
|
||||
}
|
||||
}
|
||||
if(valid){
|
||||
console.log(checked.length + 1, item);
|
||||
checked.push(item);
|
||||
}
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
47
day14/part2.js
Normal file
47
day14/part2.js
Normal file
@ -0,0 +1,47 @@
|
||||
var salt = "ihaygndm";
|
||||
|
||||
var hashes = [];
|
||||
var toCheck = [];
|
||||
var checked = [];
|
||||
|
||||
tripleChar = (str)=>(str.match(/(.)\1{2}/) ? (str.match(/(.)\1{2}/)[1]) : false);
|
||||
fiveChar = (str, char)=>(str.indexOf(char.repeat(5)) > -1);
|
||||
md5 = (str)=>{
|
||||
var md5sum = require("crypto").createHash("md5");
|
||||
md5sum.update(str);
|
||||
return md5sum.digest("hex");
|
||||
}
|
||||
md5repeat = (str, times)=>((times==0) ? (str) : (md5(md5repeat(str, times-1))));
|
||||
|
||||
var i = 0;
|
||||
while(checked.length < 64){
|
||||
var hash = md5repeat(salt + i, 2017);
|
||||
hashes.push(hash);
|
||||
if(tripleChar(hash)){
|
||||
toCheck.push({
|
||||
i: i,
|
||||
char: tripleChar(hash),
|
||||
hash: hash
|
||||
});
|
||||
}
|
||||
|
||||
var toCheckNow = toCheck.filter((item)=>((item.i + 999) == i));
|
||||
toCheck = toCheck.filter((item)=>((item.i + 1000) > i));
|
||||
|
||||
for(var item of toCheckNow){
|
||||
var valid = false;
|
||||
for(var x = item.i + 1; x < i; x++){
|
||||
if(fiveChar(hashes[x], item.char)){
|
||||
item.match = x;
|
||||
item.matchHash = hashes[x];
|
||||
valid = true;
|
||||
}
|
||||
}
|
||||
if(valid){
|
||||
console.log(checked.length + 1, item);
|
||||
checked.push(item);
|
||||
}
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user