1. Complete the sockMerchant function below
function sockMerchant(n, ar) {
var gObj = {};
var count = 0;
if (n > = 1 && n < = 100) {
for (var i = 0; i < ar.length; i++){
var key = ar[i];
if (! gObj.hasOwnProperty(key)) {
gObj[key] = 1;
} else {
gObj[key] = gObj[key] + 1;
}
}
for (var num in gObj) {
count+= Math.floor(gObj[num] / 2);
}
return count;
}
}
2. Complete the pageCount function below
function pageCount(n, p) {
if (n > = 1 && n < = 100000) {
var gArr = [];
gArr[0] = [1];
var temp = 1;
for (var i = 1; i < = n / 2; i++) {
var elm1 = temp + 1;
var elm2 = elm1 + 1;
temp = elm2;
if (elm1 < = n & elm2 < = n) {
gArr[i] = [elm1, elm2];
} else if (elm1 < = n & elm2 > = n) {
gArr[i] = [elm1];
}
}
if (p > n / 2) {
gArr.reverse ();
}
for (var num in gArr) {
var arr = gArr[num];
if (arr.indexOf(p) ! = -1) {
return num;
}
}
}
}
3. Complete the countingValleys function below
function countingValleys(n, s) {
let seaLevel = 1;
let up_down = 1;
let totalVally =0;
var gArr = Array.from(s); // convert string to array
gArr.forEach(function (x) {
if (x == ' U' ) {
up_down = up_down + 1;
} else {
up_down = up_down - 1;
}
if (x==' U' && up_down == seaLevel) {
totalVally = totalVally + 1;
}
});
return totalVally;
}
4. Complete the jumpingOnClouds function below
function jumpingOnClouds(c) {
let totalJump = c.length;
let jump = 0;
let gArr = [];
while (jump < totalJump) {
if (c[jump + 2] == 0 && jump < totalJump) {
jump = jump + 2;
gArr.push(jump);
} else if (c[jump + 1] == 0 && jump < totalJump) {
jump++;
gArr.push(jump);
} else {
break ;
}
}
return gArr.length;
}
5. Complete the repeatedString function below
function repeatedString(s, n) {
// better way, passed in all cases
s = Array.from(s);
let strLen = s.length;
let s1Count = 0;
let s2Count = 0;
let s1 = Math.floor(n / strLen);
let s2 = n % strLen;
s.map(function (value, key) {
if (value == ' a' ) {
s1Count++;
}
});
s.map(function (value, key) {
if (value == ' a' && key< s2) {
s2Count++;
}
});
return (s1Count * s1) + s2Count;
// bad way failed in some cases e.g: s = a and n = 1000000000000
/* let gArr = [];
let count = 0;
let i = 0;
while (i < n) {
for (let j = 0; j < s.length; j++) {
if (gArr.length < n) {
gArr.push(s[j]);
} else {
break ;
}
i++;
}
}
gArr.map(function (e) {
if (e == ' a' ) {
count++;
}
});
return count; * /
}
6. Complete the birthdayCakeCandles function below
function birthdayCakeCandles(ar) {
if (ar.length > = 1 && ar.length < = 1000000) {
const max = Math.max(...ar);
return ar.filter(x => x === max).length;
// failed in some case
/*ar.sort ();
let talestCandel = ar[ar.length - 1];
let count = 0;
ar.map(( value, key) => {
if (value == talestCandel) {
count++;
}
});
return count;*/
}
}
7. Complete the alternatingCharacters function below
function alternatingCharacters(s) {
let s1 = [];
for (let i = 0; i < s.length; i++) {
if (s[i] == s[i + 1]) {
s1.push(s[i]);
}
}
return s1.length;
}
8. Complete the libraryFine function below
function libraryFine(d1, m1, y1, d2, m2, y2) {
let fine = 0;
if (d1 < = d2 && m1==m2 && y1==y2) {
fine = 0;
}
else if (d1 > d2 && m1 == m2 && y1 ==y2) {
fine = 15 * (d1-d2);
}
else if (m1 > m2 && y1 == y2) {
fine = 500 * (m1 - m2);
}
else if (y1 > y2) {
fine = 10000;
}
return fine;
}
9. Complete the countApplesAndOranges function below
function countApplesAndOranges(s, t, a, b, apples, oranges) {
let appleCount = 0;
let orangeCount = 0;
let applesArr = apples.map(key => a + key);
let orangesArr = oranges.map(key => b + key);
applesArr.forEach(key => {
if (key > = s && key < = t) {
appleCount = appleCount + 1;
}
});
orangesArr.forEach(key => {
if (key > = s && key < = t) {
orangeCount = orangeCount + 1;
}
});
console.log(appleCount);
console.log(orangeCount);
}
10. Complete the simpleArraySum function below
function simpleArraySum(ar) {
let sum = 0;
for (let i = 0; i < ar.length; i++){
sum = sum + ar[i];
}
return sum;
}
11. Complete the 'diagonalDifference' function below
function diagonalDifference(n, arr) {
let sumLeft = 0;
let sumRight = 0;
for (let i = 0; i < n; i++){
sumLeft = sumLeft + arr[i][i];
}
for (let i = 0; i < n; i++) {
sumRight = sumRight + arr[i][n-1-i];
}
return Math.abs(sumLeft - sumRight);
}
12. Complete the getMoneySpent function below
function getMoneySpent(keyboards, drives, b) {
let totalCost = [];
keyboards.forEach(keyboard => drives.forEach(drive => {
totalCost.push(keyboard + drive)
}));
let cost = totalCost.filter(c => c < = b);
return (Math.max(...cost) == ' -Infinity' ) ? " -1" : Math.max(...cost);
}
13. Complete the compareTriplets function below
function compareTriplets(a, b) {
let alice_count = 0;
let bob_count = 0;
for (let i = 0; i < a.length; i++){
if (a[i] > b[i]) {
alice_count = alice_count + 1;
} else if (a[i] < b[i]) {
bob_count = bob_count + 1;
} else if (a[i] == b[i]) {
}
}
return [alice_count, bob_count];
}
14. Complete the aVeryBigSum function below
function aVeryBigSum(ar) {
return ar.reduce(( accumulator, currentValue) => accumulator + currentValue);
}
15. Complete the plusMinus function below
function plusMinus(arr) {
let total = arr.length;
let positive = 0;
let negative = 0;
let zeros = 0;
for (let i = 0; i < arr.length; i++){
if (arr[i] == 0) {
zeros = zeros + 1;
}
if (arr[i] > 0) {
positive = positive + 1;
}
if (arr[i] < 0) {
negative = negative + 1;
}
}
console.log(positive / total);
console.log(negative / total);
console.log(zeros / total);
}
summation formula:
1+2+3+......20 = n(n+1)/2
1* 2 + 2* 2 + 3* 2 + ........ n* 2 = {n(n+1)(2n+1)}/6
1* 3 + 2* 3 + 3* 3 + ........ n* 3 = (n(n+1)/2)* 2
tn = a + (n - 1)d;
sn = [2a+ (n-1)d]n/2
function main() {
var BigNumber = require(' bignumber.js' ); // add this library
var t = parseInt(readLine ()); // given
for (var a0 = 0; a0 < t; a0++) { // given
var n = new BigNumber(readLine ()); //given, just add new BigNumber instead of parseInt
const a = n.minus(1).dividedBy(3).floor ();
const b = n.minus(1).dividedBy(5).floor ();
const c = n.minus(1).dividedBy(15).floor ();
const sum3 = a.times(3).times(a.plus(1)).dividedBy(2);
const sum5 = b.times(5).times(b.plus(1)).dividedBy(2)
const sum15 = c.times(15).times(c.plus(1)).dividedBy(2)
const sum = sum3.plus(sum5).minus(sum15);
console.log(sum.toString ());
// failed in some cases
/* let arr = [];
for (let i = 0; i < n; i++) {
if (i % 3 == 0 || i % 5 == 0) {
arr.push(i);
}
}
let uniArr = [...new Set(arr)].reduce(( x, y) => x + y);
console.log(uniArr);*/
}
}
17. Complete the bonAppetit function below
function bonAppetit(bill, k, b) {
let bActual = (bill.filter(( value, index, arr) => index!= k)) .reduce(( x, y) => x+ y)/ 2 ;
if (b== bActual) {
console.log("Bon Appetit");
}
if (b > bActual) {
console.log(b - bActual);
}
}