The problem
Discover the quantity with essentially the most digits.
If two numbers within the argument array have the identical variety of digits, return the primary one within the array.
The answer in Python code
Choice 1:
def find_longest(xs):
return max(xs, key=lambda x: len(str(x)))
Choice 2:
def find_longest(arr):
arr.type(reverse=True)
return arr[0]
Choice 3:
def find_longest(arr):
max_lenght = 0
max_index = 0
for cur_num in arr:
lenght = len(str(cur_num))
if lenght > max_lenght:
max_lenght = lenght
max_index = arr.index(cur_num)
return arr[max_index]
Check circumstances to validate our resolution
import take a look at
from resolution import find_longest
@take a look at.describe("Mounted Exams")
def fixed_tests():
@take a look at.it('Primary Check Instances')
def basic_test_cases():
take a look at.assert_equals(find_longest([1, 10, 100]), 100)
take a look at.assert_equals(find_longest([9000, 8, 800]), 9000)
take a look at.assert_equals(find_longest([8, 900, 500]), 900)
take a look at.assert_equals(find_longest([3, 40000, 100]), 40000)
take a look at.assert_equals(find_longest([1, 200, 100000]), 100000)
@take a look at.describe("Random exams")
def random_tests():
from random import randint
from functools import cut back
sol=lambda arr: cut back(lambda a,b: b if len(str(a))<len(str(b)) else a,arr)
for _ in vary(40):
arr=[randint(1,10**randint(1,20)) for q in range(randint(1,50))]
anticipated = sol(arr)
@take a look at.it(f"Testing for find_longest({arr})")
def _():
take a look at.assert_equals(find_longest(arr[:]),anticipated)