From faf426bb40a256950cf01e5d499d7b3e9d4eb17b Mon Sep 17 00:00:00 2001
From: Pyi Theim Kyaw <36285777+ptkpyitheim@users.noreply.github.com>
Date: Mon, 31 Aug 2020 15:31:30 -0500
Subject: [PATCH] PR ready fix(learn) (#39208)
---
.../rosetta-code/24-game.english.md | 41 +++++++++++++++++--
1 file changed, 37 insertions(+), 4 deletions(-)
diff --git a/curriculum/challenges/english/10-coding-interview-prep/rosetta-code/24-game.english.md b/curriculum/challenges/english/10-coding-interview-prep/rosetta-code/24-game.english.md
index a0aabe5e1c..34500588ce 100644
--- a/curriculum/challenges/english/10-coding-interview-prep/rosetta-code/24-game.english.md
+++ b/curriculum/challenges/english/10-coding-interview-prep/rosetta-code/24-game.english.md
@@ -40,13 +40,13 @@ tests:
- text: solve24
should be a function.
testString: assert(typeof solve24 === 'function');
- text: solve24("4878")
should return (7-8/8)*4
or 4*(7-8/8)
- testString: assert(include(answers[0], solve24(testCases[0])));
+ testString: assert(include(answers[0], removeParentheses(solve24(testCases[0]))));
- text: solve24("1234")
should return any arrangement of 1*2*3*4
- testString: assert(include(answers[1], solve24(testCases[1])));
+ testString: assert(include(answers[1], removeParentheses(solve24(testCases[1]))));
- text: solve24("6789")
should return (6*8)/(9-7)
or (8*6)/(9-7)
- testString: assert(include(answers[2], solve24(testCases[2])));
+ testString: assert(include(answers[2], removeParentheses(solve24(testCases[2]))));
- text: solve24("1127")
should return a permutation of (1+7)*(1+2)
- testString: assert(include(answers[3], solve24(testCases[3])));
+ testString: assert(include(answers[3], removeParentheses(solve24(testCases[3]))));
```
@@ -89,6 +89,39 @@ function include(ansArr, res) {
const index = ansArr.indexOf(res);
return index >= 0;
}
+
+//The main method for detecting single parentheses
+function removeParentheses(ans) {
+ for (let i = 0; i < ans.length; i++) {
+ if (!isNaN(ans[i])) {
+ ans = removeParenthesesHelper(ans, i);
+ }
+ }
+ return ans;
+}
+
+//Helper to remove left and right parantheses
+function removeParenthesesHelper(ans, i) {
+ while (i > 0 && i < ans.length - 1) {
+ if (ans[i - 1] === '(' && ans[i + 1] === ')') {
+ //Paranthesis detected. Remove them.
+ ans = replaceChar(ans, '', i - 1);
+ ans = replaceChar(ans, '', i);
+ i--;
+ } else {
+ return ans;
+ }
+ }
+ return ans;
+}
+
+//Replace a character at a given index for the provided character
+function replaceChar(origString, replaceChar, index) {
+ let firstPart = origString.substr(0, index);
+ let lastPart = origString.substr(index + 1);
+ let newString = firstPart + replaceChar + lastPart;
+ return newString;
+}
```