import itertools
import time
import numpy as np
number = 1020
print("Входное число: ",number)
t1 = time.time()
def next_bigger(n):
nlst = list(str(n))
for i in range(len(nlst) - 1, -1, -1):
tempLst1 = nlst[:i]
tempLst2 = nlst[i:]
vs = list(itertools.permutations(tempLst2, len(tempLst2)))
temp = [int("".join(tempLst1 + list(x))) for x in vs if int("".join(tempLst1 + list(x))) > n]
if len(temp) >= 1:
return min(temp)
print("Часть 1: %s"%str(next_bigger(number)))
t2 = time.time()
def nb(n):
numlist = np.array(list(str(n)),dtype=int)
i = -1
while i > -len(numlist) and numlist[i-1] >= numlist[i]:
i -= 1
if -len(numlist) == i:
return None
nextnum = i
for j in range(i,0,1):
if numlist[i-1] <numlist[j] and numlist[nextnum] > numlist[j]:
nextnum = j
numlist[i-1],numlist[nextnum] = numlist[nextnum],numlist[i-1]
tail = np.array(numlist[i:])
tail.sort()
return ''.join(np.array(numlist[:i],dtype=str)) + ''.join(np.array(tail,dtype=str))
print("Часть 2: %s"%str(nb(number)))
t3 = time.time()
print("Время выполнения первой части кода: %s\nВремя выполнения второй части кода: %s"%(str(t2-t1),str(t3-t2)))