Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- # -*- coding: UTF-8 -*-
- import time
- def norm():
- # количество комбинаций
- kol = 0
- # входная строка
- s = raw_input("stroka: ")
- # длина строки = количество символов
- n = len(s)
- # пустой массив
- l = []
- # заполняем массив цифрами из строки
- for i in range(n):
- l.append(int(s[i]))
- # создаем файл для записи результатов
- f = open('C:/Users/dshul.NIITZI/Desktop/1-test.txt', 'w')
- # создаем копию массива цифр
- l1 = list(l)
- # сортируем по возростанию
- for i in range(0, n):
- for j in range(i, n):
- if l1[i] > l1[j]:
- tmp = l1[i]
- l1[i] = l1[j]
- l1[j] = tmp
- # конвертим массив в строку
- s1 = ""
- for i in l1:
- s1 = s1 + str(i)
- # конвертим массив в число = ПЕРВАЯ ВОЗМОЖНАЯ КОМБИНАЦИЯ = 12345
- c1 = int(s1)
- # копируем исходный массив
- l2 = list(l)
- # сортируем по убыванию
- for i in range(0, n):
- for j in range(i, n):
- if l2[i] < l2[j]:
- tmp = l2[i]
- l2[i] = l2[j]
- l2[j] = tmp
- # конвертим в строку
- s1 = ""
- for i in l2:
- s1 = s1 + str(i)
- # конвертим в число = ПОСЛЕДНЯЯ ВОЗМОЖНАЯ КОМБИНАЦИЯ = 54321
- c2 = int(s1)
- # запоминаем время начала выполнения основной проги
- now1 = time.time()
- # ОСНОВНОЙ ЦИКЛ (заменен на while)
- # пробегаем все цифры от МИНИМАЛЬНОЙ до МАКСИМАЛЬНОЙ
- for i in range(c1, c2+1): # от 12345 до 54321
- # копируем массив цифр, отсортированных по возростанию = 12345
- k = list(l1)
- # превращаем в массив текущее число И
- a1 = []
- s2 = str(i)
- for i2 in range(n):
- a1.append(int(s2[i2]))
- # сортируем ТЕКУЩИЙ массив по возростанию
- for j1 in range(0, n-1):
- for j2 in range(j1, n):
- if a1[j1] > a1[j2]:
- tmp = a1[j1]
- a1[j1] = a1[j2]
- a1[j2] = tmp
- # количество цифр, которые есть в исходном массиве
- t = 0
- #сравниваем парами цифры из ТЕКУЩЕГО массива с массивом из оригинальных цифр
- for i3 in range(n):
- # если совпала цифра, наращиваем счетчик
- if a1[i3] == k[i3]: # a1 = [1 2 3 4 6] k = [1 2 3 4 5]
- t += 1
- # если не совпала, дальне не проверяем
- else:
- break
- # если совпали все числа, записываем в файл ТЕКУЩЕЕ ЧИСЛО В ВИДЕ СТРОКИ
- if t == n:
- f.write(s2 + '\n')
- # наращиваем счетчик найденых комбинаций
- kol += 1
- # КОНЕЦ ОСНОВНОГО ЦИКЛА
- # смотрим время конца выполнения
- now2 = time.time()
- # находим разницу
- delta = now2 - now1
- # пишем в консоль время и количество
- print delta, " s"
- print
- print "TOTAL:",kol
- #закрываем файл
- f.close()
- # вызываем написанный метод
- norm()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement