From 07e3ce3302bd4241417177a6a9e324bcaf908ee8 Mon Sep 17 00:00:00 2001 From: Grzegorz Kucmierz Date: Wed, 1 Jan 2020 12:30:59 +0100 Subject: [PATCH] Reverse Inside Parentheses (Inside Parentheses) --- .../index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 reverse-inside-parentheses-inside-parentheses/index.js 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; +};