aboutsummaryrefslogtreecommitdiff
path: root/challenge-348/roger-bell-west/javascript
diff options
context:
space:
mode:
authorRoger Bell_West <roger@firedrake.org>2025-11-18 12:47:57 +0000
committerRoger Bell_West <roger@firedrake.org>2025-11-18 12:47:57 +0000
commit26432e1851dfcd8faf8b2b3f5b2d48ee5460302b (patch)
treea5951c99a91ff5cc634b696e539a14ec8ac5f905 /challenge-348/roger-bell-west/javascript
parent25572447da12014ff4f20d22dcc3260e8a906f99 (diff)
downloadperlweeklychallenge-club-26432e1851dfcd8faf8b2b3f5b2d48ee5460302b.tar.gz
perlweeklychallenge-club-26432e1851dfcd8faf8b2b3f5b2d48ee5460302b.tar.bz2
perlweeklychallenge-club-26432e1851dfcd8faf8b2b3f5b2d48ee5460302b.zip
RogerBW solutions for challenge no. 348
Diffstat (limited to 'challenge-348/roger-bell-west/javascript')
-rwxr-xr-xchallenge-348/roger-bell-west/javascript/ch-1.js53
-rwxr-xr-xchallenge-348/roger-bell-west/javascript/ch-2.js54
2 files changed, 107 insertions, 0 deletions
diff --git a/challenge-348/roger-bell-west/javascript/ch-1.js b/challenge-348/roger-bell-west/javascript/ch-1.js
new file mode 100755
index 0000000000..3a4f6ce6cd
--- /dev/null
+++ b/challenge-348/roger-bell-west/javascript/ch-1.js
@@ -0,0 +1,53 @@
+#! /usr/bin/node
+
+"use strict"
+
+function stringalike(a) {
+ if (a.length % 2 == 1) {
+ return false;
+ }
+ let vt = 0;
+ let mode = 1;
+ let av = false;
+ a.toLowerCase().split("").forEach((c, i) => {
+ if (i * 2 == a.length) {
+ mode = -1;
+ }
+ if (c.match(/[aeiou]/)) {
+ av = true;
+ vt += mode;
+ }
+ });
+ return av && (vt == 0);
+}
+
+if (!stringalike('textbook')) {
+ process.stdout.write("Pass");
+} else {
+ process.stdout.write("FAIL");
+}
+process.stdout.write(" ");
+if (stringalike('book')) {
+ process.stdout.write("Pass");
+} else {
+ process.stdout.write("FAIL");
+}
+process.stdout.write(" ");
+if (stringalike('AbCdEfGh')) {
+ process.stdout.write("Pass");
+} else {
+ process.stdout.write("FAIL");
+}
+process.stdout.write(" ");
+if (!stringalike('rhythmmyth')) {
+ process.stdout.write("Pass");
+} else {
+ process.stdout.write("FAIL");
+}
+process.stdout.write(" ");
+if (!stringalike('UmpireeAudio')) {
+ process.stdout.write("Pass");
+} else {
+ process.stdout.write("FAIL");
+}
+process.stdout.write("\n");
diff --git a/challenge-348/roger-bell-west/javascript/ch-2.js b/challenge-348/roger-bell-west/javascript/ch-2.js
new file mode 100755
index 0000000000..22d55a17c9
--- /dev/null
+++ b/challenge-348/roger-bell-west/javascript/ch-2.js
@@ -0,0 +1,54 @@
+#! /usr/bin/node
+
+"use strict"
+
+function hm2m(a) {
+ const p = a.match(/(\d+):(\d+)/);
+ return parseInt(p[1]) * 60 + parseInt(p[2]);
+}
+
+function converttime(ssrc, ttgt) {
+ const src = hm2m(ssrc);
+ let tgt = hm2m(ttgt);
+ if (tgt < src) {
+ tgt += 24 * 60;
+ }
+ let delta = tgt - src;
+ let oc = 0;
+ for (let op of [60, 15, 5, 1]) {
+ oc += Math.floor(delta / op);
+ delta %= op;
+ }
+ return oc;
+}
+
+if (converttime('02:30', '02:45') == 1) {
+ process.stdout.write("Pass");
+} else {
+ process.stdout.write("FAIL");
+}
+process.stdout.write(" ");
+if (converttime('11:55', '12:15') == 2) {
+ process.stdout.write("Pass");
+} else {
+ process.stdout.write("FAIL");
+}
+process.stdout.write(" ");
+if (converttime('09:00', '13:00') == 4) {
+ process.stdout.write("Pass");
+} else {
+ process.stdout.write("FAIL");
+}
+process.stdout.write(" ");
+if (converttime('23:45', '00:30') == 3) {
+ process.stdout.write("Pass");
+} else {
+ process.stdout.write("FAIL");
+}
+process.stdout.write(" ");
+if (converttime('14:20', '15:25') == 2) {
+ process.stdout.write("Pass");
+} else {
+ process.stdout.write("FAIL");
+}
+process.stdout.write("\n");