From 114f0386756818897f9fb7f4796b680e590d4d31 Mon Sep 17 00:00:00 2001 From: safonovlg10 Date: Sat, 4 Jan 2025 04:32:01 +0900 Subject: [PATCH 1/4] feat: 6 tasks completed --- src/carbon-dating.js | 10 +++++++--- src/common-character-count.js | 13 ++++++++++--- src/count-cats.js | 13 ++++++++++--- src/delete-digit.js | 11 ++++++++--- src/dns-stats.js | 20 +++++++++++++++++--- src/dream-team.js | 15 ++++++++++++--- 6 files changed, 64 insertions(+), 18 deletions(-) diff --git a/src/carbon-dating.js b/src/carbon-dating.js index 8e5c812a7b..9d72e15834 100644 --- a/src/carbon-dating.js +++ b/src/carbon-dating.js @@ -17,9 +17,13 @@ const HALF_LIFE_PERIOD = 5730; * dateSample('WOOT!') => false * */ -function dateSample(/* sampleActivity */) { - throw new NotImplementedError('Not implemented'); - // remove line with error and write your code here +function dateSample( sampleActivity ) { + if (typeof sampleActivity !== 'string' || sampleActivity === '' || !Number(sampleActivity) || Number(sampleActivity) <= 0 || Number(sampleActivity) > 15){ + return false; + } + const k = Math.LN2 / HALF_LIFE_PERIOD; + const age = Math.log(MODERN_ACTIVITY / Number(sampleActivity)) / k; + return Math.ceil(age); } module.exports = { diff --git a/src/common-character-count.js b/src/common-character-count.js index 47db6c4ebc..6656f191fa 100644 --- a/src/common-character-count.js +++ b/src/common-character-count.js @@ -11,9 +11,16 @@ const { NotImplementedError } = require('../extensions/index.js'); * For s1 = "aabcc" and s2 = "adcaa", the output should be 3 * Strings have 3 common characters - 2 "a"s and 1 "c". */ -function getCommonCharacterCount(/* s1, s2 */) { - throw new NotImplementedError('Not implemented'); - // remove line with error and write your code here +function getCommonCharacterCount( s1, s2 ) { + return s1.split('').reduce((prev, value, i) => { + let index = s2.indexOf(value); + if ( index !== -1 ){ + prev += 1; + s2 = s2.replace(s2[index], ''); + return prev; + } + return prev; + },0) } module.exports = { diff --git a/src/count-cats.js b/src/count-cats.js index 82309de669..b6b7a7fd69 100644 --- a/src/count-cats.js +++ b/src/count-cats.js @@ -14,9 +14,16 @@ const { NotImplementedError } = require('../extensions/index.js'); * ]) => 3` * */ -function countCats(/* matrix */) { - throw new NotImplementedError('Not implemented'); - // remove line with error and write your code here +function countCats( matrix ) { + let count = 0; + for (let i = 0; i < matrix.length; i++) { + for (let j = 0; j < matrix[i].length; j++) { + if (matrix[i][j] === "^^"){ + count += 1; + } + } + } + return count; } module.exports = { diff --git a/src/delete-digit.js b/src/delete-digit.js index 2c3d2adcf2..64eaf9c989 100644 --- a/src/delete-digit.js +++ b/src/delete-digit.js @@ -11,9 +11,14 @@ const { NotImplementedError } = require('../extensions/index.js'); * For n = 152, the output should be 52 * */ -function deleteDigit(/* n */) { - throw new NotImplementedError('Not implemented'); - // remove line with error and write your code here +function deleteDigit( n ) { + let str = n.toString(); + let arrSumm = []; + for (let i = 0; i < str.length; i++) { + let newSumm = Number(str.replace(str[i], '')); + arrSumm.push(newSumm); + } + return Math.max(...arrSumm) } module.exports = { diff --git a/src/dns-stats.js b/src/dns-stats.js index c0b7263880..a5dcf24235 100644 --- a/src/dns-stats.js +++ b/src/dns-stats.js @@ -22,9 +22,23 @@ const { NotImplementedError } = require('../extensions/index.js'); * } * */ -function getDNSStats(/* domains */) { - throw new NotImplementedError('Not implemented'); - // remove line with error and write your code here +function getDNSStats( domains ) { + const objDNS = {}; + for (let i = 0; i < domains.length; i++) { + let reverseArr = domains[i].split('.').reverse(); + let dns = ''; + for (let j = 0; j < reverseArr.length; j++) { + dns += `.${reverseArr[j]}`; + if(objDNS[dns]){ + objDNS[dns]++; + } + else{ + objDNS[dns] = 1; + } + } + + } + return objDNS; } module.exports = { diff --git a/src/dream-team.js b/src/dream-team.js index fbad4d8a5c..3f031be3b4 100644 --- a/src/dream-team.js +++ b/src/dream-team.js @@ -13,9 +13,18 @@ const { NotImplementedError } = require('../extensions/index.js'); * createDreamTeam(['Olivia', 1111, 'Lily', 'Oscar', true, null]) => 'LOO' * */ -function createDreamTeam(/* members */) { - throw new NotImplementedError('Not implemented'); - // remove line with error and write your code here +function createDreamTeam( members ) { + if(!Array.isArray(members)){ + return false; + } + + return members.reduce((prev, value) => { + if(typeof value === 'string'){ + prev.push(value.trim().at(0).toUpperCase()); + return prev; + } + return prev; + }, []).sort().join(''); } module.exports = { From a06d3246ab61bedec53cc6a8e37dd44eb6bdce3f Mon Sep 17 00:00:00 2001 From: safonovlg10 Date: Tue, 7 Jan 2025 08:53:34 +0900 Subject: [PATCH 2/4] feat: add 4 tasks --- src/get-email-domain.js | 4 ++-- src/hanoi-tower.js | 7 ++++--- src/matrix-elements-sum.js | 14 +++++++++++--- src/sum-digits.js | 16 +++++++++++++--- 4 files changed, 30 insertions(+), 11 deletions(-) diff --git a/src/get-email-domain.js b/src/get-email-domain.js index ea37397f6f..295d0f0204 100644 --- a/src/get-email-domain.js +++ b/src/get-email-domain.js @@ -11,8 +11,8 @@ const { NotImplementedError } = require('../extensions/index.js'); * */ function getEmailDomain(/* email */) { - throw new NotImplementedError('Not implemented'); - // remove line with error and write your code here + const index = email.lastIndexOf('@'); + return email.slice(index+1) } module.exports = { diff --git a/src/hanoi-tower.js b/src/hanoi-tower.js index 2363e73e52..918e340dc9 100644 --- a/src/hanoi-tower.js +++ b/src/hanoi-tower.js @@ -14,9 +14,10 @@ const { NotImplementedError } = require('../extensions/index.js'); * calculateHanoi(9, 4308) => { turns: 511, seconds: 427 } * */ -function calculateHanoi(/* disksNumber, turnsSpeed */) { - throw new NotImplementedError('Not implemented'); - // remove line with error and write your code here +function calculateHanoi( disksNumber, turnsSpeed ) { + const turns = Math.pow(2, disksNumber) - 1; + const seconds = Math.floor(turns / turnsSpeed * 3600); + return { turns, seconds }; } module.exports = { diff --git a/src/matrix-elements-sum.js b/src/matrix-elements-sum.js index 08c7440d6e..223f7e0594 100644 --- a/src/matrix-elements-sum.js +++ b/src/matrix-elements-sum.js @@ -16,9 +16,17 @@ const { NotImplementedError } = require('../extensions/index.js'); * * The result should be 9 */ -function getMatrixElementsSum(/* matrix */) { - throw new NotImplementedError('Not implemented'); - // remove line with error and write your code here +function getMatrixElementsSum( matrix ) { + let sum = 0; + + for (let i = 0; i < matrix.length; i++) { + for (let j = 0; j < matrix.length; j++) { + if(i === 0 || matrix[i - 1][j] !== 0){ + sum += matrix[i][j]; + } + } + } + return sum; } module.exports = { diff --git a/src/sum-digits.js b/src/sum-digits.js index 088ecb6fb3..fa2400fba5 100644 --- a/src/sum-digits.js +++ b/src/sum-digits.js @@ -12,9 +12,19 @@ const { NotImplementedError } = require('../extensions/index.js'); * For 91, the result should be 1 (9 + 1 = 10, 1 + 0 = 1) * */ -function getSumOfDigits(/* n */) { - throw new NotImplementedError('Not implemented'); - // remove line with error and write your code here +function getSumOfDigits( n ) { + let str = n.toString(); + let sum = 0; + + for (let i = 0; i < str.length; i++) { + sum += parseInt(str[i]); + } + + if (sum <= 9) { + return sum; + } + + return getSumOfDigits(sum); } module.exports = { From 7db4f72fee83ec2f4af0c91aea4ba3e9101d9fbc Mon Sep 17 00:00:00 2001 From: safonovlg10 Date: Tue, 7 Jan 2025 08:58:50 +0900 Subject: [PATCH 3/4] feat: add 1 tasks --- src/matrix-elements-sum.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/matrix-elements-sum.js b/src/matrix-elements-sum.js index 223f7e0594..577611ea05 100644 --- a/src/matrix-elements-sum.js +++ b/src/matrix-elements-sum.js @@ -20,12 +20,13 @@ function getMatrixElementsSum( matrix ) { let sum = 0; for (let i = 0; i < matrix.length; i++) { - for (let j = 0; j < matrix.length; j++) { - if(i === 0 || matrix[i - 1][j] !== 0){ - sum += matrix[i][j]; - } + for (let j = 0; j < matrix[0].length; j++) { + if (i === 0 || matrix[i - 1][j] !== 0) { + sum += matrix[i][j]; + } } } + return sum; } From 7b74094969d162a4c7ca45bcfa92c495f300b957 Mon Sep 17 00:00:00 2001 From: safonovlg10 Date: Sun, 9 Nov 2025 23:11:45 +0300 Subject: [PATCH 4/4] feat: resolve task 7 task 10 --- src/encode-line.js | 24 +++++++++++++++++++----- src/get-email-domain.js | 4 ++-- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/encode-line.js b/src/encode-line.js index 5006d2945a..968f9fd089 100644 --- a/src/encode-line.js +++ b/src/encode-line.js @@ -1,4 +1,4 @@ -const { NotImplementedError } = require('../extensions/index.js'); +const { NotImplementedError } = require("../extensions/index.js"); /** * Given a string, return its encoding version. @@ -10,11 +10,25 @@ const { NotImplementedError } = require('../extensions/index.js'); * For aabbbc should return 2a3bc * */ -function encodeLine(/* str */) { - throw new NotImplementedError('Not implemented'); - // remove line with error and write your code here +function encodeLine(str) { + if(str.length === 0) return ''; + let result = ""; + let currentChar = str[0]; + let count = 1; + + for (let index = 1; index < str.length; index++) { + if (currentChar === str[index]) { + count++; + } else { + result += (count > 1 ? count : "") + currentChar; + currentChar = str[index]; + count = 1; + } + } + result += (count > 1 ? count : "") + currentChar; + return String(result); } module.exports = { - encodeLine + encodeLine, }; diff --git a/src/get-email-domain.js b/src/get-email-domain.js index 295d0f0204..476754fef9 100644 --- a/src/get-email-domain.js +++ b/src/get-email-domain.js @@ -10,9 +10,9 @@ const { NotImplementedError } = require('../extensions/index.js'); * For the input 'prettyandsimple@example.com', the output should be 'example.com' * */ -function getEmailDomain(/* email */) { +function getEmailDomain( email ) { const index = email.lastIndexOf('@'); - return email.slice(index+1) + return email.slice(index +1 ); } module.exports = {