Advertisement
Guest User

Untitled

a guest
Sep 26th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. function comp(a, b) {
  2. return b - a;
  3. }
  4.  
  5. function atm(total, values) {
  6. values = values.sort(comp);
  7.  
  8. let counts = {};
  9. let success = true;
  10.  
  11. while (total > 0 && success) {
  12. for (let i = 0; i < values.length; i++) {
  13. if (values[i] <= total) {
  14. if (counts.hasOwnProperty(values[i])) {
  15. counts[values[i]] += 1;
  16. } else {
  17. counts[values[i]] = 1;
  18. }
  19.  
  20. total -= values[i];
  21. break;
  22. } else if (i === values.length - 1) {
  23. success = false;
  24. }
  25. }
  26. }
  27.  
  28. if (success) {
  29. return counts;
  30. } else {
  31. return false;
  32. }
  33. }
  34.  
  35. function hardAtm(total, valuesMap) {
  36. let counts = {};
  37. let success = true;
  38.  
  39. let valuesArr = [];
  40. for (value in valuesMap) {
  41. let sameValues = Array(valuesMap[value]).fill(parseInt(value));
  42. valuesArr = valuesArr.concat(sameValues);
  43. }
  44.  
  45. values = valuesArr.sort(comp);
  46.  
  47. while (total > 0 && success) {
  48. for (let i = 0; i < values.length; i++) {
  49. if (values[i] <= total) {
  50. if (counts.hasOwnProperty(values[i])) {
  51. counts[values[i]] += 1;
  52. } else {
  53. counts[values[i]] = 1;
  54. }
  55.  
  56. total -= values[i];
  57. values.splice(i, 1);
  58. break;
  59. } else if (i === values.length - 1) {
  60. success = false;
  61. }
  62. }
  63. }
  64.  
  65. if (success) {
  66. return counts;
  67. } else {
  68. return false;
  69. }
  70. }
  71.  
  72. const total = 5665;
  73.  
  74. const values = [5000, 1000, 500, 100, 50, 10, 5];
  75. const shuffledValues = [5, 10, 5000, 500, 50, 100, 1000];
  76. const valuesMap = {
  77. '5000': 2,
  78. '1000': 1,
  79. '500': 2,
  80. '10': 10,
  81. '5': 5
  82. }
  83.  
  84. console.log(atm(total, shuffledValues));
  85. console.log(hardAtm(total, valuesMap));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement