Created
January 2, 2025 17:09
-
-
Save PetukhovArt/0d9990b054da080704da2574dea63339 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// написать функцию банкомат, которая принимает на вход кол-во денег для возврата и лимиты купюр в банкомате | |
// должна вернуть объект с минимальным кол-вом купюр, чтобы разменять данный total | |
// перед возвратом значения, мы должны смутировать limits | |
// чтобы при последующем вызове функции atm, кол-во оставшихся купюр в банкомате изменилось | |
// если банкомат не может выдать сумму, то мутацию limits не делаем и возвращаем строку "cant change" | |
function atm(total, limits) { | |
const bills = Object.keys(limits) | |
.map(Number) | |
.sort((a, b) => b - a); | |
const result = {}; | |
bills.forEach((bill, idx) => { | |
// тут основное это данный Math.min , который позволяет не перевалить за кол-во доступных банкнот | |
const billCount = Math.min(Math.floor(total / bill), limits[bill]); | |
if (billCount > 0) { | |
result[bill] = billCount; | |
} | |
total -= billCount * bill; | |
}); | |
if (total > 0) { | |
return "cant change"; | |
} | |
Object.keys(result).forEach((key) => { | |
limits[key] -= result[key]; | |
}); | |
return result; | |
} | |
const limits = { | |
5000: 5, | |
1000: 5, | |
500: 5, | |
100: 5, | |
23: 13, | |
3: 5, | |
}; | |
console.log(atm(15600, limits)); | |
// return {5000:3,500:1,100:1} | |
// limits = { | |
// 5000: 2, | |
// 1000: 5, | |
// 500: 4, | |
// 100: 4, | |
// 23: 13, | |
// 3: 5, | |
// }; | |
console.log(atm(15600, limits)); | |
// return {5000:2, 1000: 5, 500: 1, 100: 1} | |
// limits = { | |
// 5000: 0, | |
// 1000: 0, | |
// 500: 3, | |
// 100: 3, | |
// 23: 13, | |
// 3: 5, | |
// }; | |
console.log(atm(222222, limits)); | |
//"cant change" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment