浏览代码

d20 + gitignore

isundil 3 年之前
父节点
当前提交
f9c92212e6
共有 2 个文件被更改,包括 50 次插入1 次删除
  1. 6 1
      .gitignore
  2. 44 0
      d20/main.js

+ 6 - 1
.gitignore

@@ -1,3 +1,8 @@
-ex
 input
+ex
 ex1
+ex2
+output.svg
+node_modules
+package-lock.json
+package.json

+ 44 - 0
d20/main.js

@@ -0,0 +1,44 @@
+
+Array.prototype.count = function(fnc) {
+    return this.reduce((total, i, index) => fnc(i, index) ? total+1 : total, 0);
+}
+
+Array.prototype.countUnique = function(fnc) {
+    return this.reduce((total, i, index) => (total.indexOf(i) === -1 && fnc(i, index)) ? total.concat(i):total, []).length;
+}
+
+function reOrder(arr, index) {
+    let item = arr.splice(index, 1)[0];
+    let newPos = (item.val + index) % (arr.length);
+    while (newPos <= 0)
+        newPos += arr.length;
+    arr.splice(newPos, 0, item);
+}
+
+(async()=>{
+    let dataP1 = [];
+    let dataP2 = [];
+    let index = 0;
+    for await (let line of require('readline').createInterface({ input: process.stdin })) {
+        dataP1.push({ val: parseInt(line), index: index });
+        dataP2.push({ val: parseInt(line), index: index });
+        ++index;
+    }
+    for (let i =0; i < dataP1.length; ++i) {
+        reOrder(dataP1, dataP1.findIndex(j => j.index === i));
+        dataP2[i].initVal = dataP2[i].val * 811589153;
+        dataP2[i].val *= 811589153;
+    }
+    const pos0 = dataP1.findIndex(i => i.val === 0);
+    console.log("Part 1:", [1000, 2000, 3000].map(i => dataP1[(pos0 +i) % dataP2.length].val).reduce((acc, i) => acc+i, 0));
+
+    for (let _c =0; _c < 10; ++_c)
+        for (let i =0; i < dataP2.length; ++i)
+            reOrder(dataP2, dataP2.findIndex(j => j.index === i));
+    const pos0Part2 = dataP2.findIndex(i => i.val === 0);
+    console.log("Part 2:", [1000, 2000, 3000].map(i => dataP2[(pos0Part2+i) % dataP2.length].initVal).reduce((acc, i) => acc+i, 0));
+})();
+
+
+
+