diff --git a/reverse-inside-parentheses-inside-parentheses/index.js b/reverse-inside-parentheses-inside-parentheses/index.js new file mode 100644 index 0000000..032d510 --- /dev/null +++ b/reverse-inside-parentheses-inside-parentheses/index.js @@ -0,0 +1,18 @@ +// https://www.codewars.com/kata/reverse-inside-parentheses-inside-parentheses/javascript + +const reverseInParens = str => { + const rb = /[\[\]]/g; + const rm = /\([^\(\)]*\)/; + const mi = {'[':']', ']':'['}; + const mc = {'[':'(', ']':')'}; + let last; + while (last !== str) { + last = str; + str = str.replace(rm, s => { + s = s.substr(1, s.length-2).replace(rb, s => mi[s]); + return [']',...s,'['].reverse().join``; + }); + } + str = str.replace(rb, s => mc[s]); + return str; +};