diff options
| author | Simon Green <mail@simon.green> | 2023-06-03 10:33:13 +1000 |
|---|---|---|
| committer | Simon Green <mail@simon.green> | 2023-06-03 10:33:13 +1000 |
| commit | a1e05c248e0f9311e2ee1e70972f3e6852d7cdf5 (patch) | |
| tree | 529b5c28dbc507b756950541e0613e9e5d5cfab6 /challenge-219/sgreen/python | |
| parent | 979144e452a65703e7845a166d7c94ba6f89e37f (diff) | |
| download | perlweeklychallenge-club-a1e05c248e0f9311e2ee1e70972f3e6852d7cdf5.tar.gz perlweeklychallenge-club-a1e05c248e0f9311e2ee1e70972f3e6852d7cdf5.tar.bz2 perlweeklychallenge-club-a1e05c248e0f9311e2ee1e70972f3e6852d7cdf5.zip | |
Simon's solution to challenge 219
Diffstat (limited to 'challenge-219/sgreen/python')
| -rwxr-xr-x | challenge-219/sgreen/python/ch-1.py | 13 | ||||
| -rwxr-xr-x | challenge-219/sgreen/python/ch-2.py | 37 |
2 files changed, 50 insertions, 0 deletions
diff --git a/challenge-219/sgreen/python/ch-1.py b/challenge-219/sgreen/python/ch-1.py new file mode 100755 index 0000000000..f3e6fb57f9 --- /dev/null +++ b/challenge-219/sgreen/python/ch-1.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python + +import sys + + +def main(array): + solution = sorted([x ** 2 for x in array]) + print(*solution, sep=', ') + + +if __name__ == '__main__': + array = [int(n) for n in sys.argv[1:]] + main(array) diff --git a/challenge-219/sgreen/python/ch-2.py b/challenge-219/sgreen/python/ch-2.py new file mode 100755 index 0000000000..a421ef00d9 --- /dev/null +++ b/challenge-219/sgreen/python/ch-2.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python + +import sys + + +def buy_pass(passes, travel_on): + if len(travel_on) == 0: + return 0 + + first_day = travel_on[0] + minimum_spend = None + + for days, cost in passes.items(): + spend = cost + \ + buy_pass(passes, [i for i in travel_on if i >= first_day + days]) + if minimum_spend is None or spend < minimum_spend: + minimum_spend = spend + + return minimum_spend + + +def main(array): + # Take the first three values off + passes = {} + passes[1] = array.pop(0) + passes[7] = array.pop(0) + passes[30] = array.pop(0) + + # Note the days we want to travel on + travel_on = sorted(array) + spent = buy_pass(passes, travel_on) + print(spent) + + +if __name__ == '__main__': + array = [int(n) for n in sys.argv[1:]] + main(array) |
