aboutsummaryrefslogtreecommitdiff
path: root/challenge-336/roger-bell-west/javascript/ch-2.js
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-336/roger-bell-west/javascript/ch-2.js')
-rwxr-xr-xchallenge-336/roger-bell-west/javascript/ch-2.js54
1 files changed, 54 insertions, 0 deletions
diff --git a/challenge-336/roger-bell-west/javascript/ch-2.js b/challenge-336/roger-bell-west/javascript/ch-2.js
new file mode 100755
index 0000000000..c5b57475ee
--- /dev/null
+++ b/challenge-336/roger-bell-west/javascript/ch-2.js
@@ -0,0 +1,54 @@
+#! /usr/bin/node
+
+"use strict"
+
+function finalscore(a) {
+ let p = [];
+ for (let n of a) {
+ switch (n) {
+ case 'C':
+ p.pop();
+ break;
+ case 'D':
+ p.push(2 * p.at(-1));
+ break;
+ case '+':
+ p.push(p.at(-2) + p.at(-1));
+ break;
+ default:
+ p.push(parseInt(n));
+ }
+ }
+ return p.reduce((x, y) => x + y)
+}
+
+if (finalscore(['5', '2', 'C', 'D', '+']) == 30) {
+ process.stdout.write("Pass");
+} else {
+ process.stdout.write("FAIL");
+}
+process.stdout.write(" ");
+if (finalscore(['5', '-2', '4', 'C', 'D', '9', '+', '+']) == 27) {
+ process.stdout.write("Pass");
+} else {
+ process.stdout.write("FAIL");
+}
+process.stdout.write(" ");
+if (finalscore(['7', 'D', 'D', 'C', '+', '3']) == 45) {
+ process.stdout.write("Pass");
+} else {
+ process.stdout.write("FAIL");
+}
+process.stdout.write(" ");
+if (finalscore(['-5', '-10', '+', 'D', 'C', '+']) == -55) {
+ process.stdout.write("Pass");
+} else {
+ process.stdout.write("FAIL");
+}
+process.stdout.write(" ");
+if (finalscore(['3', '6', '+', 'D', 'C', '8', '+', 'D', '-2', 'C', '+']) == 128) {
+ process.stdout.write("Pass");
+} else {
+ process.stdout.write("FAIL");
+}
+process.stdout.write("\n");