{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# amount to change\n", "amount = 12.35\n", "\n", "# available coins in the cash register (do not take into account the number of coins available)\n", "available_coins = [5,0.5,0.1,2,1,0.2,0.05,0.02,0.01]\n", "\n", "# Greedy : function to make change with unsorted coins\n", "def make_change_unsorted(amount, coins):\n", " i = 0\n", " change = []\n", " while amount > 0 and len(coins) > i:\n", " # print(str(round(amount//coins[i])) + \" Coins of \" + str(coins[i]) + \"€\")\n", " for j in range(round(amount//coins[i])):\n", " change.append(coins[i])\n", " amount = round(amount%coins[i],2)\n", " i = i+1\n", " \n", " return change\n", "\n", "# Greedy : function to make change with sorted coins\n", "def make_change_sorted(amount, coins):\n", " coins.sort(reverse=True)\n", " i = 0\n", " change = []\n", "\n", " while amount > 0 and len(coins) > i:\n", " # print(str(round(amount//coins[i])) + \" Coins of \" + str(coins[i]) + \"€\")\n", " for j in range(round(amount//coins[i])):\n", " change.append(coins[i])\n", " amount = round(amount%coins[i], 2)\n", " i = i+1\n", " if amount > 0:\n", " print(f\"Cannot make exact change for {amount:.2f}€\")\n", " return change\n", "\n" ] } ], "metadata": { "language_info": { "name": "python" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }