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");