Как рассчитать XOR со смещением? - PullRequest
2 голосов
/ 11 мая 2011

Я хочу выполнить вычисление XOR с другим смещением для списка в расчете.

Пример:

key = [0, 1, 0]
text = ["0", "1", "0", "1", "0", "1", "0", "1", "1", "1"]

Расчет XOR:

key[0] ^ text[0] ; 
key[1] ^ text[1] ; 
key[2] ^ text[2] ; 
key[0] ^ text[3] ; 
key[1] ^ text[4] ; 
key[2] ^ text[5] ; 
key[0] ^ text[6] ; 
key[1] ^ text[7] ; 
key[2] ^ text[8] ;
key[0] ^ text[9] ;

Как это сделать?

Ответы [ 2 ]

3 голосов
/ 11 мая 2011

Вы можете использовать метод Array#cycle для "циклического" переключения вашего ключа на необходимое количество:

text.zip(key.cycle).map{|t,k| t.to_i ^ k}
# => [0, 0, 0, 1, 1, 1, 0, 0, 1, 1]
2 голосов
/ 11 мая 2011

Ruby 1.9 имеет .cycle:

key = [0, 1, 0]
text = ["0", "1", "0", "1", "0", "1", "0", "1", "1", "1"]
key_looper = key.cycle
p text.map{|el|key_looper.next ^ el.to_i} #=> [0, 0, 0, 1, 1, 1, 0, 0, 1, 1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...