aboutsummaryrefslogtreecommitdiff
path: root/challenge-260/zapwai/javascript/ch-2.js
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-260/zapwai/javascript/ch-2.js')
-rw-r--r--challenge-260/zapwai/javascript/ch-2.js40
1 files changed, 40 insertions, 0 deletions
diff --git a/challenge-260/zapwai/javascript/ch-2.js b/challenge-260/zapwai/javascript/ch-2.js
new file mode 100644
index 0000000000..c7078f49fa
--- /dev/null
+++ b/challenge-260/zapwai/javascript/ch-2.js
@@ -0,0 +1,40 @@
+function proc(word) {
+ console.log("Input:", word);
+ let h = {};
+ L(word.length, word.split(''), h);
+ let sorted = Object.keys(h).sort();
+ console.log("Output:", 1 + seek_word(word, sorted));
+}
+
+function L(k, list, h) {
+ if (k == 1)
+ h[list.join('')] = 1;
+ else {
+ L(k-1, list, h);
+ for (let i = 0; i < k-1; i++) {
+ if (k % 2 == 0)
+ swap(i, k-1, list);
+ else
+ swap(0, k-1, list);
+ L(k-1, list, h);
+ }
+ }
+}
+
+function swap(i, j, list) {
+ let tmp = list[i];
+ list[i] = list[j];
+ list[j] = tmp;
+}
+
+function seek_word(word, sorted) {
+ for (let i = 0; i < sorted.length; i++)
+ if (sorted[i] == word)
+ return i;
+
+ return -1;
+}
+
+proc("CAT");
+proc("GOGGLE");
+proc("SECRET");