The problem
Full the tactic which accepts an array of integers, and returns one of many following:
"sure, ascending"
– if the numbers within the array are sorted in an ascending order"sure, descending"
– if the numbers within the array are sorted in a descending order"no"
– in any other case
You’ll be able to assume the array will at all times be legitimate, and there’ll at all times be one appropriate reply.
Full the tactic which accepts an array of integers, and returns one of many following:
"sure, ascending"
– if the numbers within the array are sorted in an ascending order"sure, descending"
– if the numbers within the array are sorted in a descending order"no"
– in any other case
You’ll be able to assume the array will at all times be legitimate, and there’ll at all times be one appropriate reply.
The answer in Python code
Choice 1:
def is_sorted_and_how(arr):
asc = sorted(arr)
desc = sorted(arr, reverse=True)
if arr==asc:
return "sure, ascending"
elif arr==desc:
return "sure, descending"
else:
return "no"
Choice 2:
def is_descending(arr):
for i in vary(len(arr) - 1):
if arr[i + 1] > arr[i]: return False
return True
def is_ascending(arr):
for i in vary(len(arr) - 1):
if arr[i + 1] < arr[i]: return False
return True
def is_sorted_and_how(arr):
if is_ascending(arr): return 'sure, ascending'
if is_descending(arr): return 'sure, descending'
return 'no'
Choice 3:
is_sorted_and_how = lambda a: ['no','yes, ascending','yes, descending'][(sorted(a)==a)+(sorted(a)[::-1]==a)*2]
Take a look at instances to validate our resolution
check.it("[1, 2]")
check.assert_equals(is_sorted_and_how([1, 2]), 'sure, ascending')
check.it("[15, 7, 3, -8]")
check.assert_equals(is_sorted_and_how([15, 7, 3, -8]), 'sure, descending')
check.it("[4, 2, 30]")
check.assert_equals(is_sorted_and_how([4, 2, 30]), 'no')