Tuesday, April 16, 2019

codingdirectional: A Rule of Divisibility by 7

A number m of the form 10x + y is divisible by 7 if and only if x − 2y is divisible by 7. In other words, subtract twice the last digit from the number formed by the remaining digits. Continue to do this until a number known to be divisible or not by 7 is obtained; you can stop when this number has at most 2 digits because you are supposed to know if a number of at most 2 digits is divisible by 7 or not.

The original number is divisible by 7 if and only if the last number obtained using this procedure is divisible by 7.

Examples:

1 – m = 371 -> 37 − (2×1) -> 37 − 2 = 35 ; thus, since 35 is divisible by 7, 371 is divisible by 7.

The number of steps to get the result is 1.

2 – m = 1603 -> 160 - (2 x 3) -> 154 -> 15 - 8 = 7 and 7 is divisible by 7.

3 – m = 372 -> 37 − (2×2) -> 37 − 4 = 33 ; thus, since 33 is not divisible by 7, 372 is not divisible by 7.

The number of steps to get the result is 1.

4 – m = 477557101->47755708->4775554->477547->47740->4774->469->28 and 28 is divisible by 7, so is 477557101.

The number of steps is 7.

#Task: Your task is to return to the function seven(m) (m integer >= 0) an array (or a pair, depending on the language) of numbers, the first being the last number m with at most 2 digits obtained by your function (this last m will be divisible or not by 7), the second one being the number of steps to get the result.

seven(371) should return (35, 1)
seven(1603) should return (7, 2)
seven(477557101) should return (28, 7)

So how are we going to solve the above python problem posted on CodeWars? Below is the solution.

def seven(m):
    number_list = list(str(m))
    new_number = 0
    step = 0

    while(len(number_list) > 2):
        
        last_number = int(number_list.pop(len(number_list)-1))
        remaining = int(''.join(number_list))
        new_number = remaining - 2 * last_number
        number_list = list(str(new_number))
        step += 1
    
    divisible = int(''.join(number_list))
    
    return (divisible, step)

So if we put below large amount into the above method…

print(seven(477557101))

We will get the below outcome.

The smallest number which can be divided by 7 is 28 and that will take 7 steps to accomplish!

If you like this article do help me to share it on the social network, thank you!



from Planet Python
via read more

No comments:

Post a Comment

TestDriven.io: Working with Static and Media Files in Django

This article looks at how to work with static and media files in a Django project, locally and in production. from Planet Python via read...