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)))
$ python3.8 permut.py
Входное число: 1020
Часть 1: 1200
Часть 2: 1200
Время выполнения первой части кода: 5.14984130859375e-05
Время выполнения второй части кода: 0.00011038780212402344
$ python3.8 permut.py
Входное число: 100000020100000
Часть 1: 100000021000000
Часть 2: 100000021000000
Время выполнения первой части кода: 0.010196208953857422
Время выполнения второй части кода: 0.00019025802612304688
import numpy as np
np.random.seed(1)
speed_train = 0.5
arr = []
for d in open("data.txt",'r'):
arr.append(d[:-1].split('\t'))
#выбираем данные (1 и 2 столбцы)
train_data = np.array(np.array(arr)[:,:2],dtype=float)
#Добавляем нейрон смещения
train_bias = np.array([[1] * len(arr)],dtype=float).T
#Наши итоговые обучающие данные
train = np.hstack((train_data,train_bias))
#результат, который хотим получить
res = np.array([np.array(arr)[:,2]],dtype=int).T
def sigmoid(z):
return 1 / (1 + np.exp(-z))
def diffsigmoid(z):
return (1 - z) * z
def normal(z,nbias):
return np.round(z-nbias)
weights = np.random.random((3,1))
print("начальные веса: ")
print(weights)
output = sigmoid(np.dot(train, weights))
print("результат: ")
print(output)
err = res - output
print("ошибка: ")
print(err)
adweights = np.dot(train.T, err * diffsigmoid(output))
print("Как нужно изменить веса: ")
print(adweights)
weights += adweights
print("Измененные веса: ")
print(weights)
for i in range(10000):
output = sigmoid(np.dot(train, weights))
err = res - output
adweights = np.dot(train.T, speed_train * err * diffsigmoid(output))
weights += adweights
print(err.sum())
print("weights: ", weights)
print(normal(sigmoid(np.dot(train,weights)),0))