Python: Next bigger number by rearranging the digits of a given number
Python Lambda: Exercise-25 with Solution
Write a Python program to create the next bigger number by rearranging the digits of a given number.
Sample Solution:
Python Code :
# Define a function 'rearrange_bigger' that takes an integer 'n' as input
def rearrange_bigger(n):
# Convert the number 'n' into a list of its digits represented as strings
nums = list(str(n))
# Iterate through the digits from the second-to-last to the first digit
for i in range(len(nums) - 2, -1, -1):
# Check if the current digit is less than the next digit
if nums[i] < nums[i + 1]:
# Slice the list from the current index to the end and store it in 'z'
z = nums[i:]
# Find the smallest digit greater than the current digit
y = min(filter(lambda x: x > z[0], z))
# Remove 'y' from the list 'z'
z.remove(y)
# Sort the remaining elements in 'z'
z.sort()
# Rearrange the digits in 'nums' to form the next bigger number
nums[i:] = [y] + z
# Convert the rearranged list of digits back into an integer and return it
return int("".join(nums))
# If no bigger number can be formed, return False
return False
# Test cases to demonstrate the function's behavior with different input numbers
n = 12
print("Original number:", n)
print("Next bigger number:", rearrange_bigger(n))
n = 10
print("\nOriginal number:", n)
print("Next bigger number:", rearrange_bigger(n))
n = 201
print("\nOriginal number:", n)
print("Next bigger number:", rearrange_bigger(n))
n = 102
print("\nOriginal number:", n)
print("Next bigger number:", rearrange_bigger(n))
n = 445
print("\nOriginal number:", n)
print("Next bigger number:", rearrange_bigger(n))
Sample Output:
Original number: 12 Next bigger number: 21 Original number: 10 Next bigger number: False Original number: 201 Next bigger number: 210 Original number: 102 Next bigger number: 120 Original number: 445 Next bigger number: 454
Python Code Editor:
Have another way to solve this solution? Contribute your code (and comments) through Disqus.
Previous: Write a Python program to find numbers within a given range where every number is divisible by every digit it contains.
Next: Write a Python program to find the list with maximum and minimum length using lambda.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://w3resource.com/python-exercises/lambda/python-lambda-exercise-25.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics