diff --git a/5kyu/best_travel/solution.rb b/5kyu/best_travel/solution.rb new file mode 100644 index 0000000..48648a8 --- /dev/null +++ b/5kyu/best_travel/solution.rb @@ -0,0 +1,24 @@ +def choose_best_sum(t, k, ls) + def choose_best_sum_rec(max_total_distance, n, distances) + if n == 0 && max_total_distance >= 0 then + return 0 + elsif max_total_distance < 0 || distances.size < 1 then + return nil + end + + found = Array.new(2) + + travelled = distances.pop + including_last = choose_best_sum_rec(max_total_distance - travelled, n - 1, distances) + if including_last != nil then + found[0] = including_last + travelled + end + + found[1] = choose_best_sum_rec(max_total_distance, n, distances) + distances.push(travelled) + + return found.select { |x| x != nil }.max + end + + choose_best_sum_rec(t, k, ls.sort) +end diff --git a/README.md b/README.md index fd9f3ab..aeb4bdf 100644 --- a/README.md +++ b/README.md @@ -113,6 +113,10 @@ - [Esolang Interpreters #2 - Custom Smallfuck Interpreter](https://www.codewars.com/kata/58678d29dbca9a68d80000d7) - [solution](5kyu/esolang_interpreters_ii) +### Ruby + +- [Best travel](https://www.codewars.com/kata/55e7280b40e1c4a06d0000aa) - [solution](5kyu/best_travel) + ## 6 kyu ### Rust