Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const fs = require('fs')
- function isSubword(word, subword) {
- let tmpArray = new Array(256)
- for (let i=0;i<256;i++)
- tmpArray[i] = 0
- for (let i in word)
- tmpArray[word.charCodeAt(i)] += 1
- for (let i in subword) {
- tmpArray[subword.charCodeAt(i)] -= 1
- if (tmpArray[subword.charCodeAt(i)] < 0)
- return false
- }
- return true
- }
- function main() {
- const totalTalkText = fs.readFileSync('words.txt').toString()
- const allData = []
- let subwordsArr = []
- const allWords = totalTalkText
- .toLowerCase()
- .split(/[^a-zA-Z]+/g)
- .sort()
- .sort((a, b) => {return a.length - b.length})
- console.log('Sorted\n')
- let wordLength = 0
- let minWordLength = allWords[0].length
- while (wordLength != minWordLength) { //Sets the arrays that have no words
- allData.push([])
- wordLength++
- }
- for (let i in allWords) {
- console.log(i/81488, '%')
- let subwordsObj = {
- word: '',
- subwords: []
- }
- if (allWords[i].length == wordLength) {
- subwordsObj.word = allWords[i]
- subwordsArr.push(subwordsObj)
- }
- else {
- allData.push(subwordsArr)
- subwordsArr = []
- subwordsObj.word = allWords[i]
- subwordsArr.push(subwordsObj)
- wordLength++
- }
- for (let j=0;j<=wordLength;j++) {
- let tmpArray = []
- for (let n in allWords) {
- if ((n != i)&&(isSubword(allWords[i], allWords[n])&&(allWords[n].length == j)))
- tmpArray.push(allWords[n])
- }
- subwordsObj.subwords.push(tmpArray)
- }
- }
- fs.writeFileSync('subwords.json', JSON.stringify([...allData]))
- }
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement