Most Digits from Checklist in Python

[ad_1]

The problem

Discover the quantity with probably 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]

Take a look at circumstances to validate our resolution

import take a look at
from resolution import find_longest

@take a look at.describe("Fastened Checks")
def fixed_tests():
    @take a look at.it('Primary Take a look at Circumstances')
    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)

[ad_2]

Leave a Reply