{"ScriptPreparationCode":null,"TestCases":[{"Name":"Kyle","Code":"function solution(A, D) {\r\n // combine arrays (removing day for grouping by YYYY-MM)\r\n const combined = A.map((num, i) =\u003E ({ num, date: D[i].substring(0, 7) })) \r\n const groupedByDate = combined.reduce((r, a) =\u003E {\r\n r[a.date] = r[a.date] || [];\r\n r[a.date].push(a);\r\n return r;\r\n }, Object.create(null));\r\n let total = 0;\r\n let monthsVoid = 0;\r\n Object.keys(groupedByDate).forEach(date =\u003E {\r\n const arr = groupedByDate[date];\r\n const expenditures = arr.filter(d =\u003E d.num \u003C 0);\r\n const expendituresTotal = expenditures.reduce((p, c) =\u003E p \u002B c.num, 0);\r\n const incomings = arr.filter(d =\u003E d.num \u003E= 0);\r\n const incomingsTotal = incomings.reduce((p, c) =\u003E p \u002B c.num, 0);\r\n if (expenditures.length \u003E= 3 \u0026\u0026 expendituresTotal \u003C= -100) {\r\n monthsVoid \u002B= 1;\r\n }\r\n total \u002B= expendituresTotal \u002B incomingsTotal;\r\n });\r\n\r\n const result = total - ((12 - monthsVoid) * 5);\r\n return result;\r\n}","IsDeferred":false},{"Name":"Alicia","Code":"function solution(A, D) {\r\n const balanceBeforeFees = A.reduce((acc, val) =\u003E {\r\n return acc\u002Bval;\r\n }, 0);\r\n \r\n const transactions = A.map((ammount, i) =\u003E ({ ammount, date: D[i].split(\u0027-\u0027)[1] })) \r\n const transactionPerDate = transactions.reduce((acc, val) =\u003E {\r\n acc[val.date] = acc[val.date] || [];\r\n acc[val.date].push(val);\r\n \r\n return acc;\r\n }, {});\r\n let fees = (12 - Object.keys(transactionPerDate).length) * 5;\r\n \r\n \r\n Object.keys(transactionPerDate).forEach(date =\u003E {\r\n const arr = transactionPerDate[date];\r\n \r\n const payments = arr.filter(el =\u003E el.ammount \u003C 0);\r\n const paymentsTotal = payments.reduce((acc, val) =\u003E acc \u002B val.ammount, 0);\r\n \r\n \r\n if ((payments.length \u003C 3 || paymentsTotal \u003E -100) || (payments.length \u003C 3 \u0026\u0026 paymentsTotal \u003E -100) ) {\r\n fees \u002B= 5\r\n }\r\n \r\n });\r\n \r\n return balanceBeforeFees - fees;\r\n}","IsDeferred":false},{"Name":"James A","Code":"function solution(A, D) {\r\n const txsPerMonth = {\r\n 01: [],\r\n 02: [],\r\n 03: [],\r\n 04: [],\r\n 05: [],\r\n 06: [],\r\n 07: [],\r\n 08: [],\r\n 09: [],\r\n 10: [],\r\n 11: [],\r\n 12: [],\r\n };\r\n\r\n D.forEach((date, idx) =\u003E {\r\n txsPerMonth[parseInt(date.split(\u0027-\u0027)[1], 10)].push(A[idx]);\r\n })\r\n\r\n let finalTotal = 0;\r\n\r\n Object.values(txsPerMonth).forEach((arr) =\u003E {\r\n let totalTxsOut = 0;\r\n let totalValueOut = 0;\r\n\r\n let total = arr.reduce((acc, curr) =\u003E {\r\n if (curr \u003C 0) {\r\n totalTxsOut\u002B\u002B;\r\n totalValueOut -= curr;\r\n }\r\n\r\n\r\n return acc \u002B curr;\r\n }, 0);\r\n\r\n if (totalTxsOut \u003C 3 || totalValueOut \u003C 100) {\r\n total -= 5;\r\n }\r\n\r\n finalTotal \u002B= total;\r\n });\r\n\r\n return finalTotal;\r\n}","IsDeferred":false},{"Name":"Yichao","Code":"function solution(A, D) {\r\n // A is array of transaction amounts, D is array of transaction date.\r\n // calculate sum of elements in A\r\n const sum = A.reduce((a, b) =\u003E a \u002B b, 0);\r\n // calculate how many months there are in D\r\n const DateArray = D.map(date =\u003E date.split(\u0027-\u0027));\r\n let monthArray = [];\r\n for (let i = 0; i \u003C DateArray.length; i\u002B\u002B) {\r\n monthArray.push(DateArray[i][1]);\r\n }\r\n const negTransac = A.filter(amount =\u003E amount \u003C 0);\r\n let condition2;\r\n if ( negTransac.length \u003E= 3) {\r\n abValue = negTransac.reduce((a, b) =\u003E a \u002B b) * -1;\r\n if (abValue \u003E= 100) {\r\n condition2 = true;\r\n } else {\r\n condition2 = false;\r\n }\r\n }\r\n\r\n let monthFinal = (monthArray.includes(\u002201\u0022)) || (condition2) ? 11 : 12;\r\n\r\n const totalSum = sum - (5 * monthFinal);\r\n return totalSum;\r\n}\r\n","IsDeferred":false},{"Name":"Keanu","Code":"function solution(A, D) {\r\n // Implement your solution here\r\n let total = 0;\r\n let months = new Array(12);\r\n for(let i = 0; i \u003C 12; i \u002B\u002B) {\r\n months[i] = new Array();\r\n }\r\n\r\n for(let i = 0; i \u003C A.length; i \u002B\u002B) {\r\n let month = D[i].substring(5,7);\r\n month = parseInt(month);\r\n months[month -1].push(A[i]);\r\n }\r\n\r\n for(let i = 0; i \u003C 12; i \u002B\u002B) {\r\n let noPaidTrasnactions = 0;\r\n let monthlyTotal = 0;\r\n let transactions = months[i];\r\n for(let j = 0; j \u003C transactions.length; j \u002B\u002B) {\r\n let transaction = transactions[j];\r\n if(transaction \u003C 0) {\r\n noPaidTrasnactions \u002B\u002B;\r\n monthlyTotal \u002B= (transaction * -1)\r\n }\r\n \r\n total \u002B= transaction;\r\n }\r\n if(noPaidTrasnactions \u003C 3 || monthlyTotal \u003C 100) {\r\n total -= 5\r\n }\r\n }\r\n return total;\r\n}","IsDeferred":false}]}