Перечислите целые числа по весу Хэмминга, сдвиг по модулю - PullRequest
0 голосов
/ 20 сентября 2018

Мне нужно выбрать целые числа из упорядоченного массива, описанного ниже.

Пусть k будет положительным целым числом.

  • Все записи являются неотрицательными целыми числами в [0,2^k)

  • Списокначинается с 0

  • Все (увеличивающиеся) целые числа с весом Хэмминга 1 сдвигаются по модулю (т.е. умножение на 2).
  • Все (увеличивающиеся) целые числа с весом Хэмминга2 по сдвигу по модулю, следование и т. Д.

Массив для k=5 выглядит следующим образом:

        0 ( weight 0 )
        1 ( weight 1 )
       11 ( weight 2 )
      101
     1001
    10001
      111 ( weight 3 )
     1011
     1101
    10011
    10101
    11001 

В частности, учитывая запись в списке, яхотел бы вывести следующую запись алгоритмически.

Я знаю, что это можно сделать несколькими способами (см., например, этот вопрос ).Для полноты картины вот как выглядят эти другие массивы, в отличие от приведенного выше:

        0 ( weight 0 )
        1 ( weight 1 )
       10
      100
     1000
    10000 
       11 ( weight 2 )
      101
      110
  ... etc

1 Ответ

0 голосов
/ 21 сентября 2018

Я разобрался с ответом на этот вопрос, на случай, если это кому-нибудь понадобится.

Для данной записи добавьте второй младший бит и продолжите.Если это уменьшает вес Хэмминга, поместите необходимое количество единиц, начиная со второй наименее значимой позиции.

...