Advertisement
Guest User

BitBurner - Sanitize Parentheses

a guest
Jan 13th, 2022
1,332
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function sanitizeParentheses(data) {
  2.     var solution = Sanitize(data)
  3.     if (solution == null) { return ('[""]') }
  4.     else { return ("[" + solution.join(",") + "]") }
  5. }
  6.  
  7. function Sanitize_removeOneParth(item) {
  8.     var possibleAnswers = []
  9.     for (let i = 0; i < item.length; i++) {
  10.         if (item[i].toLowerCase().indexOf("(") === -1 && item[i].toLowerCase().indexOf(")") === -1) {
  11.             continue
  12.         }
  13.         let possible = item.substring(0, i) + item.substring(i + 1);
  14.         possibleAnswers.push(possible)
  15.     }
  16.     return possibleAnswers
  17. }
  18.  
  19. function Sanitize_isValid(item) {
  20.     var unclosed = 0
  21.     for (var i = 0; i < item.length; i++) {
  22.         if (item[i] == "(") { unclosed++ }
  23.         else if (item[i] == ")") { unclosed-- }
  24.         if (unclosed < 0) { return false }
  25.     }
  26.     return unclosed == 0
  27. }
  28.  
  29. function Sanitize(data) {
  30.     var currentPossible = [data]
  31.     for (var i = 0; i < currentPossible.length; i++) {
  32.         var newPossible = new Set()
  33.         for (var j = 0; j < currentPossible.length; j++) {
  34.             let newRemovedPossible = Sanitize_removeOneParth(currentPossible[j])
  35.  
  36.             for (let item of newRemovedPossible) {
  37.                 newPossible.add(item)
  38.             }
  39.         }
  40.  
  41.         var validBoolList = []
  42.  
  43.         for (let item of newPossible) {
  44.             validBoolList.push(Sanitize_isValid(item))
  45.         }
  46.         if (validBoolList.includes(true)) {
  47.             var finalList = []
  48.             newPossible = [...newPossible]
  49.  
  50.             for (var j = 0; j < validBoolList.length; j++) {
  51.                 if (validBoolList[j]) {
  52.                     finalList.push(newPossible[j])
  53.                 }
  54.             }
  55.  
  56.             finalList = new Set(finalList)
  57.  
  58.             return [...finalList]
  59.         }
  60.         currentPossible = [...newPossible]
  61.     }
  62.  
  63.     return null
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement