Редактирование: Монотонный код Грея

Перейти к: навигация, поиск

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 77: Строка 77:
 
<code>'''yield'''</code> {{---}} аналог <code>'''return'''</code> только для функций-генераторов. То есть генераторы это тоже итерируемые объекты, но прочитать их можно лишь один раз. Это связано с тем, что они не хранят значения в памяти, а генерируют их на лету.  
 
<code>'''yield'''</code> {{---}} аналог <code>'''return'''</code> только для функций-генераторов. То есть генераторы это тоже итерируемые объекты, но прочитать их можно лишь один раз. Это связано с тем, что они не хранят значения в памяти, а генерируют их на лету.  
  
С конструкциями типа <code>(0,)</code> или <code>(1,)</code> все проще. Используя ее совместно с <code>'''yield'''</code> мы можем изменять наш генерируемый объект. Например, <code>'''yield''' (0,)</code> допишет к генерируемому объекту (в нашем случае кортежу (англ. ''tuple'')) <tex>0</tex> в начало.  
+
С конструкциями типа <code>(0,)</code> или <code>(1,)</code> все проще. Используя ее совместно с <code>'''yield'''</code> мы можем в изменять наш генерируемый объект. Например, <code>'''yield''' (0,)</code> допишет к генерируемому объекту (в нашем случае кортежу (англ. ''tuple'')) <tex>0</tex> в начало.  
 
{| border="0"  
 
{| border="0"  
 
|align="left" colspan="4"|
 
|align="left" colspan="4"|
Строка 100: Строка 100:
 
Принимает <tex>n, j</tex>, а так же дополнительный параметр определяющий надо-ли переворачивать кортеж.
 
Принимает <tex>n, j</tex>, а так же дополнительный параметр определяющий надо-ли переворачивать кортеж.
 
<code>
 
<code>
  '''function''' p('''int''' n, '''int''' j, '''bool''' reverse = ''false''): '''list<int[n]>'''
+
  '''function''' p('''int''' n, '''int''' j, '''bool''' reverse = ''false''):
 
     '''if''' n == 1 and j == 0
 
     '''if''' n == 1 and j == 0
 
         '''if''' '''not''' reverse
 
         '''if''' '''not''' reverse
Строка 116: Строка 116:
 
                 '''yield''' (0,) + x
 
                 '''yield''' (0,) + x
 
         '''else'''
 
         '''else'''
             '''for''' x '''in''' p(n - 1, j, reverse=''true'')
+
             '''for''' x '''in''' p(n - 1, j, reverse=True)
 
                 '''yield''' (0,) + x
 
                 '''yield''' (0,) + x
             '''for''' x '''in''' p(n - 1, j - 1, reverse=''true'')
+
             '''for''' x '''in''' p(n - 1, j - 1, reverse=True)
 
                 '''yield''' (1,) + '''tuple'''(x[k] '''for''' k '''in''' perm)
 
                 '''yield''' (1,) + '''tuple'''(x[k] '''for''' k '''in''' perm)
 
</code>
 
</code>
Генерация монотонного кода Грея при помощи уже написанного генератора <tex>p</tex>.
+
Генерация монотонного кода Грея при помощи уже написанного генератора <code>p</code>.
 
<code>  
 
<code>  
  '''function''' monotonic('''int''' n): '''list<int[n]>'''
+
  '''function''' monotonic('''int''' n):
 
     '''for''' i '''in''' range(n)
 
     '''for''' i '''in''' range(n)
         '''for''' x '''in''' (p(n, i) '''if''' i % 2 == 0 '''else''' p(n, i, reverse=''true''))
+
         '''for''' x '''in''' (p(n, i) '''if''' i % 2 == 0 '''else''' p(n, i, reverse=True))
 
             '''yield''' x
 
             '''yield''' x
 
</code>
 
</code>
Строка 161: Строка 161:
 
[[Категория: Дискретная математика и алгоритмы]]
 
[[Категория: Дискретная математика и алгоритмы]]
 
[[Категория: Комбинаторика]]
 
[[Категория: Комбинаторика]]
[[Категория: Комбинаторные объекты ]]
 

Пожалуйста, учтите, что любой ваш вклад в проект «Викиконспекты» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Викиконспекты:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Чтобы изменить эту страницу, пожалуйста, ответьте на приведённый ниже вопрос (подробнее):

Отменить | Справка по редактированию (в новом окне)

Шаблоны, используемые на этой странице: