The challenge
You are given a string of space-separated numbers and have to return the highest and lowest number.
Example:
high_and_low("1 2 3 4 5") # return "5 1"
high_and_low("1 2 -3 4 5") # return "5 -3"
high_and_low("1 9 3 4 -5") # return "9 -5"
Notes:
- All numbers are valid
Int32
, no need to validate them. - There will always be at least one number in the input string.
- Output string must be two numbers separated by a single space, and highest number is first.
The solution in Python code
Option 1:
def high_and_low(numbers):
nums = sorted([int(x) for x in numbers.split(" ")], reverse=True)
return str(nums[0])+" "+str(nums[-1])
Option 2:
def high_and_low(numbers):
n = map(int, numbers.split(' '))
return str(max(n)) + ' ' + str(min(n))
Option 3:
def high_and_low(numbers):
nums = sorted(numbers.split(), key=int)
return '{} {}'.format(nums[-1], nums[0])
Test cases to validate our solution
import test
from solution import high_and_low
@test.describe("Fixed Tests")
def fixed_tests():
@test.it('Basic Test Cases')
def basic_test_cases():
test.assert_equals(high_and_low("4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"), "542 -214");
test.assert_equals(high_and_low("1 -1"), "1 -1");
test.assert_equals(high_and_low("1 1"), "1 1");
test.assert_equals(high_and_low("-1 -1"), "-1 -1");
test.assert_equals(high_and_low("1 -1 0"), "1 -1");
test.assert_equals(high_and_low("1 1 0"), "1 0");
test.assert_equals(high_and_low("-1 -1 0"), "0 -1");
test.assert_equals(high_and_low("42"), "42 42");