aoc 10-16
This commit is contained in:
47
www/statics/aoc/2019/16_solution-1.ts
Normal file
47
www/statics/aoc/2019/16_solution-1.ts
Normal file
@@ -0,0 +1,47 @@
|
||||
namespace AdventOfCode2019_16_1
|
||||
{
|
||||
const DAY = 16;
|
||||
const PROBLEM = 1;
|
||||
|
||||
export async function run()
|
||||
{
|
||||
let input = await AdventOfCode.getInput(DAY);
|
||||
if (input == null) return;
|
||||
|
||||
const message = input.trim().split("").map(p => parseInt(p));
|
||||
|
||||
let step = message;
|
||||
|
||||
for (let i=0; i < 100; i++) step = FFT(step);
|
||||
|
||||
AdventOfCode.output(DAY, PROBLEM, step.slice(0, 8).map(p=>p.toString()).reduce((a,b)=>a+b));
|
||||
}
|
||||
|
||||
function FFT(msg: number[])
|
||||
{
|
||||
let result = [];
|
||||
|
||||
for (let i=0; i < msg.length; i++)
|
||||
{
|
||||
let sum = 0;
|
||||
let str = "";
|
||||
for (let i2=0; i2 < msg.length; i2++)
|
||||
{
|
||||
|
||||
let factor = [0, 1, 0, -1][Math.floor(((i2+1) % ((i+1)*4)) / (i+1))];
|
||||
str += msg[i2]+"*"+factor+" + ";
|
||||
sum += (msg[i2]*factor);
|
||||
}
|
||||
str += " = " + sum;
|
||||
sum = Math.abs(sum) % 10;
|
||||
str += " = " + sum;
|
||||
result.push(sum);
|
||||
|
||||
AdventOfCode.outputConsole(str);
|
||||
}
|
||||
|
||||
AdventOfCode.outputConsole("[" + result.map(p=>p.toString()).reduce((a,b)=>a+","+b)+"]");
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user