summaryrefslogtreecommitdiffstats
path: root/day12/day12-2.js
diff options
context:
space:
mode:
Diffstat (limited to 'day12/day12-2.js')
-rw-r--r--day12/day12-2.js42
1 files changed, 42 insertions, 0 deletions
diff --git a/day12/day12-2.js b/day12/day12-2.js
new file mode 100644
index 0000000..51cc8a1
--- /dev/null
+++ b/day12/day12-2.js
@@ -0,0 +1,42 @@
+const data = require('./data')
+let pos = {x: 0, y: 0}
+let vp = {x: 10, y: 1}
+
+const move = (dir => {
+ const dir1 = dir.substring(0, 1)
+ const dir2 = parseInt(dir.substring(1, dir.length))
+
+ switch(dir1) {
+ case 'N': vp.y += dir2; break;
+ case 'S': vp.y -= dir2; break;
+ case 'E': vp.x += dir2; break;
+ case 'W': vp.x -= dir2; break;
+ case 'L':
+ switch(dir2%360) {
+ case 0: break
+ case 90: [vp.x, vp.y] = [-vp.y, vp.x]; break
+ case 180: [vp.x, vp.y] = [-vp.x, -vp.y]; break
+ case 270: [vp.x, vp.y] = [vp.y, -vp.x]; break
+ default: console.log('unknown value turning left', dir2);
+ }
+ break;
+ case 'R':
+ switch(dir2%360) {
+ case 0: break
+ case 90: [vp.x, vp.y] = [vp.y, -vp.x]; break
+ case 180: [vp.x, vp.y] = [-vp.x, -vp.y]; break
+ case 270: [vp.x, vp.y] = [-vp.y, vp.x]; break
+ default: console.log('unknown value turning right', dir2);
+ }
+ break;
+ case 'F':
+ pos.x += vp.x * dir2
+ pos.y += vp.y * dir2
+ break;
+ default:
+ console.log(`unknown value`);
+ }
+})
+
+data.split(/\n/g).filter(e => e).forEach(e => move(e))
+console.log(Math.abs(pos.x) + Math.abs(pos.y))