From 964c6dc602e9821dfa33d73379bced241ab762be Mon Sep 17 00:00:00 2001 From: John Date: Mon, 7 Aug 2023 23:52:08 +0100 Subject: [PATCH 1/4] my solution to the mini challenges --- src/brackets/index.js | 33 ++++++++++++++++++++++++++++++++- src/roman-numerals/index.js | 34 +++++++++++++++++++++++++++++++++- src/transpose/index.js | 5 +++-- 3 files changed, 68 insertions(+), 4 deletions(-) diff --git a/src/brackets/index.js b/src/brackets/index.js index 96b6766..ac3567e 100644 --- a/src/brackets/index.js +++ b/src/brackets/index.js @@ -4,6 +4,37 @@ * @param {string} str The string of brackets. * @returns {"valid" | "invalid"} Whether or not the string is valid. */ -function isValid(str) {} +function isValid(str) { + + let stack = []; + + for (let i = 0; i < str.length; i++) { + let x = str[i]; + + if ( x == '[' || x == '{' || x == '(') { + stack.push(x); + continue; + } + + if (stack.length === 0 ) + return "invalid" + + const poppedELEMENT = stack.pop(); + if (x == ']' && poppedELEMENT != '['){ + return "invalid" + } + if (x == '}' && poppedELEMENT != '{') { + return "invalid" + } + if (x == ')' && poppedELEMENT != '(') { + return "invalid" + } + + + } + + return stack.length === 0 ? "valid" : "invalid" +}; + module.exports = isValid; diff --git a/src/roman-numerals/index.js b/src/roman-numerals/index.js index 38afb19..c4bbe91 100644 --- a/src/roman-numerals/index.js +++ b/src/roman-numerals/index.js @@ -4,6 +4,38 @@ * @param {string} roman The all-caps Roman numeral between 1 and 3999 (inclusive). * @returns {number} The decimal equivalent. */ -function romanToDecimal(roman) {} + + +function romanToDecimal(roman) { + + let numeral = { + I: 1, + V: 5, + X: 10, + L: 50, + C: 100, + D: 500, + M: 1000, + }; + let result = 0 + for(let i = 0; i < roman.length; i++) { + let curSym = numeral[roman[i]] + let nextSym = numeral[roman[i + 1]] + + if(nextSym && nextSym > curSym){ + result += nextSym - curSym + i++ + } else { + result += curSym + } + }; + return result +} module.exports = romanToDecimal; + + + + + + diff --git a/src/transpose/index.js b/src/transpose/index.js index adec201..40a0ac8 100644 --- a/src/transpose/index.js +++ b/src/transpose/index.js @@ -4,6 +4,7 @@ * @param {number[]} array The array to transpose * @returns {number[]} The transposed array */ -function transpose(array) {} - +function transpose(array) { + return array[0].map((item, index) => array.map((cur) => cur[index])) +} module.exports = transpose; From 6b6621d8cc12800863482ef88485cfd9bbd49225 Mon Sep 17 00:00:00 2001 From: John Date: Tue, 8 Aug 2023 14:38:10 +0100 Subject: [PATCH 2/4] my first javascript commit --- src/roman-numerals/index.js | 4 ++-- src/transpose/index.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/roman-numerals/index.js b/src/roman-numerals/index.js index c4bbe91..a5ffc19 100644 --- a/src/roman-numerals/index.js +++ b/src/roman-numerals/index.js @@ -27,10 +27,10 @@ function romanToDecimal(roman) { i++ } else { result += curSym - } + }; }; return result -} +}; module.exports = romanToDecimal; diff --git a/src/transpose/index.js b/src/transpose/index.js index 40a0ac8..84ef6d4 100644 --- a/src/transpose/index.js +++ b/src/transpose/index.js @@ -6,5 +6,5 @@ */ function transpose(array) { return array[0].map((item, index) => array.map((cur) => cur[index])) -} +}; module.exports = transpose; From 05286f4d0c75cb132d6bd8826151d3b8425eb9b4 Mon Sep 17 00:00:00 2001 From: John Date: Tue, 8 Aug 2023 14:45:54 +0100 Subject: [PATCH 3/4] re-commited --- src/brackets/index.js | 6 +++--- src/roman-numerals/index.js | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/brackets/index.js b/src/brackets/index.js index ac3567e..85ce5b1 100644 --- a/src/brackets/index.js +++ b/src/brackets/index.js @@ -17,7 +17,7 @@ function isValid(str) { } if (stack.length === 0 ) - return "invalid" + return "invalid" const poppedELEMENT = stack.pop(); if (x == ']' && poppedELEMENT != '['){ @@ -28,10 +28,10 @@ function isValid(str) { } if (x == ')' && poppedELEMENT != '(') { return "invalid" - } + }; - } + }; return stack.length === 0 ? "valid" : "invalid" }; diff --git a/src/roman-numerals/index.js b/src/roman-numerals/index.js index a5ffc19..97cd92d 100644 --- a/src/roman-numerals/index.js +++ b/src/roman-numerals/index.js @@ -17,8 +17,8 @@ function romanToDecimal(roman) { D: 500, M: 1000, }; - let result = 0 - for(let i = 0; i < roman.length; i++) { + let result = 0; + for(let i = 0; i < roman.length; i++) { let curSym = numeral[roman[i]] let nextSym = numeral[roman[i + 1]] @@ -27,10 +27,10 @@ function romanToDecimal(roman) { i++ } else { result += curSym - }; + }; }; return result -}; +} module.exports = romanToDecimal; From f1068e288e0af6071a8e39c2030ff895908840d4 Mon Sep 17 00:00:00 2001 From: John Date: Tue, 8 Aug 2023 14:55:20 +0100 Subject: [PATCH 4/4] my fisrt 3 mini challenge in javascript --- src/brackets/index.js | 10 +++++----- src/roman-numerals/index.js | 9 +++++---- src/transpose/index.js | 4 +++- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/brackets/index.js b/src/brackets/index.js index 85ce5b1..471e7c0 100644 --- a/src/brackets/index.js +++ b/src/brackets/index.js @@ -13,7 +13,7 @@ function isValid(str) { if ( x == '[' || x == '{' || x == '(') { stack.push(x); - continue; + continue; } if (stack.length === 0 ) @@ -21,13 +21,13 @@ function isValid(str) { const poppedELEMENT = stack.pop(); if (x == ']' && poppedELEMENT != '['){ - return "invalid" + return "invalid" } if (x == '}' && poppedELEMENT != '{') { - return "invalid" - } + return "invalid" + }; if (x == ')' && poppedELEMENT != '(') { - return "invalid" + return "invalid" }; diff --git a/src/roman-numerals/index.js b/src/roman-numerals/index.js index 97cd92d..e4510b6 100644 --- a/src/roman-numerals/index.js +++ b/src/roman-numerals/index.js @@ -24,13 +24,14 @@ function romanToDecimal(roman) { if(nextSym && nextSym > curSym){ result += nextSym - curSym - i++ - } else { + i++ + } + else { result += curSym }; }; - return result -} + return result +}; module.exports = romanToDecimal; diff --git a/src/transpose/index.js b/src/transpose/index.js index 84ef6d4..c5fa12b 100644 --- a/src/transpose/index.js +++ b/src/transpose/index.js @@ -5,6 +5,8 @@ * @returns {number[]} The transposed array */ function transpose(array) { - return array[0].map((item, index) => array.map((cur) => cur[index])) + return array[0].map((item, index) => array.map((cur) => cur[index])) + }; + module.exports = transpose;