Advertisement
k1rino

Untitled

Nov 21st, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.97 KB | None | 0 0
  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. import time
  4.  
  5. def norm():
  6.     # количество комбинаций
  7.     kol = 0
  8.     # входная строка
  9.     s = raw_input("stroka: ")
  10.     # длина строки = количество символов
  11.     n = len(s)
  12.     # пустой массив
  13.     l = []
  14.     # заполняем массив цифрами из строки
  15.     for i in range(n):
  16.         l.append(int(s[i]))
  17.  
  18.     # создаем файл для записи результатов
  19.     f = open('C:/Users/dshul.NIITZI/Desktop/1-test.txt', 'w')
  20.  
  21.     # создаем копию массива цифр
  22.     l1 = list(l)
  23.     # сортируем по возростанию
  24.     for i in range(0, n):
  25.        for j in range(i, n):
  26.            if l1[i] > l1[j]:
  27.                tmp = l1[i]
  28.                l1[i] = l1[j]
  29.                l1[j] = tmp
  30.     # конвертим массив в строку
  31.     s1 = ""
  32.     for i in l1:
  33.         s1 = s1 + str(i)
  34.     # конвертим массив в число = ПЕРВАЯ ВОЗМОЖНАЯ КОМБИНАЦИЯ = 12345
  35.     c1 = int(s1)
  36.  
  37.     # копируем исходный массив
  38.     l2 = list(l)
  39.     # сортируем по убыванию
  40.     for i in range(0, n):
  41.         for j in range(i, n):
  42.             if l2[i] < l2[j]:
  43.                 tmp = l2[i]
  44.                 l2[i] = l2[j]
  45.                 l2[j] = tmp
  46.     # конвертим в строку
  47.     s1 = ""
  48.     for i in l2:
  49.         s1 = s1 + str(i)
  50.     # конвертим в число = ПОСЛЕДНЯЯ ВОЗМОЖНАЯ КОМБИНАЦИЯ = 54321
  51.     c2 = int(s1)
  52.  
  53.     # запоминаем время начала выполнения основной проги
  54.     now1 = time.time()
  55.  
  56.     # ОСНОВНОЙ ЦИКЛ (заменен на while)
  57.     # пробегаем все цифры от МИНИМАЛЬНОЙ до МАКСИМАЛЬНОЙ
  58.     for i in range(c1, c2+1):       # от 12345 до 54321
  59.        
  60.         # копируем массив цифр, отсортированных по возростанию   = 12345
  61.         k = list(l1)
  62.  
  63.         # превращаем в массив текущее число И
  64.         a1 = []
  65.         s2 = str(i)
  66.  
  67.         for i2 in range(n):
  68.             a1.append(int(s2[i2]))
  69.  
  70.         # сортируем ТЕКУЩИЙ массив по возростанию
  71.         for j1 in range(0, n-1):
  72.             for j2 in range(j1, n):
  73.                 if a1[j1] > a1[j2]:
  74.                     tmp = a1[j1]
  75.                     a1[j1] = a1[j2]
  76.                     a1[j2] = tmp
  77.  
  78.         # количество цифр, которые есть в исходном массиве
  79.         t = 0
  80.        
  81.         #сравниваем парами цифры из ТЕКУЩЕГО массива с массивом из оригинальных цифр
  82.         for i3 in range(n):
  83.             # если совпала цифра, наращиваем счетчик
  84.             if a1[i3] == k[i3]:             # a1 = [1 2 3 4 6]  k = [1 2 3 4 5]
  85.                 t += 1
  86.             # если не совпала, дальне не проверяем
  87.             else:
  88.                 break
  89.  
  90.         # если совпали все числа, записываем в файл ТЕКУЩЕЕ ЧИСЛО В ВИДЕ СТРОКИ
  91.         if t == n:
  92.             f.write(s2 + '\n')
  93.            
  94.             # наращиваем счетчик найденых комбинаций
  95.             kol += 1
  96.            
  97.     # КОНЕЦ ОСНОВНОГО ЦИКЛА
  98.  
  99.     # смотрим время конца выполнения
  100.     now2 = time.time()
  101.     # находим разницу
  102.     delta = now2 - now1
  103.     # пишем в консоль время и количество
  104.     print delta, " s"
  105.     print
  106.     print "TOTAL:",kol
  107.    
  108.     #закрываем файл
  109.     f.close()
  110.  
  111.  
  112. # вызываем написанный метод
  113. norm()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement