Hi.
I'm having a problem with this puzzle. My code passes the asserts but then an error appears from outside my code. The error is -
TypeError: 'generator' object has no attribute 'getitem', min, 5, , 9
"min(abs(i) for i in range(-10, 10))"
This is the third time I've had one of these puzzles fail. The other two were Python 2/3 issues as the asserts were plain strings but the parameters being passed were unicode, which would have been fine in Python 3 but caused errors in Python 2. I'd recommend that the parameters passed to python 2 code be standard strings or, if that doesn't appeal to you, that at a minimum the fact that the parameters are unicode be added to the parameter specification of the description of the puzzle.
Ian Simcock.
From: http://www.checkio.org/mission/min-max/solve/
HTTP_USER_AGENT:
Mozilla/5.0 (Windows NT 6.2; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0
My Code:
def min(*args, **kwargs):
key = kwargs.get("key", None)
sort_source = args if len(args) > 1 else args[0]
min_value = sort_source[0]
if key:
min_key = key(sort_source[0])
for entry in sort_source[1:]:
new_key = key(entry)
if new_key < min_key:
min_value = entry
min_key = new_key
else:
for entry in sort_source[1:]:
if entry < min_value:
min_value = entry
return min_value
def max(*args, **kwargs):
key = kwargs.get("key", None)
sort_source = args if len(args) > 1 else args[0]
max_value = sort_source[0]
if key:
max_key = key(sort_source[0])
for entry in sort_source[1:]:
new_key = key(entry)
if new_key > max_key:
max_value = entry
max_key = new_key
else:
for entry in sort_source[1:]:
if entry > max_value:
max_value = entry
return max_value
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert max(3, 2) == 3, "Simple case max"
assert min(3, 2) == 2, "Simple case min"
assert max([1, 2, 0, 3, 4]) == 4, "From a list"
assert min("hello") == "e", "From string"
assert max(2.2, 5.6, 5.9, key=int) == 5.6, "Two maximal items"
assert min([[1, 2], [3, 4], [9, 0]], key=lambda x: x[1]) == [9, 0], "lambda key"
Created at: 2014/07/16 11:55; Updated at: 2014/09/12 17:34