-
Notifications
You must be signed in to change notification settings - Fork 15
/
RecursivelyGenerateSentences.js
48 lines (45 loc) · 1.33 KB
/
RecursivelyGenerateSentences.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/**
* @author Anirudh Sharma
*
* Given a list of word lists, print all sentences possible taking one word from a list at a time via recursion
*/
const generateSentences = (words) => {
// List to store the result
const sentences = Array(words.length);
// Consider all words for first row as starting
// point and generate all sentences
for (let i = 0; i < words[0].length; i++) {
if (words[0][i] !== "") {
generateSentencesHelper(words, 0, i, sentences);
}
}
};
const generateSentencesHelper = (words, i, j, sentences) => {
// Add current word to the sentences list
sentences[i] = words[i][j];
// If this is the last word of the current output
// sequence, then print it
if (i === words.length - 1) {
const sentence = [];
for (let k = 0; k < words.length; k++) {
sentence.push(sentences[k] + " ");
}
console.log(sentence.join(''));
console.log();
return;
}
// Recur for next row
for (let k = 0; k < words[0].length; k++) {
if (words[i + 1][k] !== "") {
generateSentencesHelper(words, i + 1, k, sentences);
}
}
};
const main = () => {
const words = [["you", "we", ""],
["have", "are", ""],
["sleep", "eat", "drink"]
];
generateSentences(words);
};
main();