From 39a659320560f138820c0ecbcbeaf5762f32decd Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Sat, 18 Nov 2023 11:40:09 +0100 Subject: Pass TestCurrencyOptimization --- src/act4e_solutions/currency_ex.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'src/act4e_solutions') diff --git a/src/act4e_solutions/currency_ex.py b/src/act4e_solutions/currency_ex.py index c0b6b1b..fbb9775 100644 --- a/src/act4e_solutions/currency_ex.py +++ b/src/act4e_solutions/currency_ex.py @@ -9,4 +9,22 @@ class SolCurrencyOptimization(I.CurrencyOptimization): amount: float, target: str, ) -> I.OptimalSolution: - pass + source, target = available.get_object(source), available.get_object(target) + + results = {} + for l in range(available.objects().size() + 1): + paths = available.hom(source, target, l) + for p in paths.elements(): + # Allow to go through exchanges only once + names = p.label.split(";") + if any([names.count(n) > 1 for n in names]): + continue + + rate, commission = p.mordata.rate, p.mordata.commission + res = amount * rate - commission + results[res] = p + + final = max(results.keys()) + path = results[final].label.split(";") + return I.OptimalSolution(path, final) + -- cgit v1.2.1