Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
2 / 2 / 1
Регистрация: 30.01.2016
Сообщений: 66
1

XOR для N переменных

04.01.2017, 00:47. Показов 1784. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Собственно сабж.

Сделал так:
Bash
1
2
3
4
5
6
7
8
9
10
function XORN()
{
    a=0
    for n in $(seq $#); do
        (( a = a + ! ! ${1} ))
        shift
    done
    (( a = a % 2 ))
    echo $a
}
Работает, но интуитивно чувствую, что можно изящнее.

Как?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.01.2017, 00:47
Ответы с готовыми решениями:

Обмен переменных через XOR - тонкости
main() { int a=5, b=10; a^=b; b^=a; a^=b; printf("%d %d", a, b); } main() {

Исключающее ИЛИ (XOR). Нужен пример операции побайтного XOR
Может кто-нибудь привести пример операции побайтного XOR?что-то вроде: есть данные,считанные из...

XOR для UnicodeString
Доброго! Пробую ввести Юникод в хор через байты. Вроде все нормально, пока в пароле не...

функция xor для чисел
Всем доброго времени суток!Скажите пожалуйста, может где-нибудь есть наглядный пример работы...

6
Эксперт NIX
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
04.01.2017, 07:16 2
Вы делаете итерацию и одновременно сдвигаете параметры.
Вполне можно обойтись циклом
while (($#))
0
2 / 2 / 1
Регистрация: 30.01.2016
Сообщений: 66
04.01.2017, 07:31  [ТС] 3
nezabudka, Спасибо!
0
Эксперт NIX
2795 / 2038 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
04.01.2017, 13:45 4
Цитата Сообщение от cave-canem Посмотреть сообщение
(( a = a % 2 ))
* * echo $a
Bash
1
echo $((a%=2))
0
2 / 2 / 1
Регистрация: 30.01.2016
Сообщений: 66
05.01.2017, 03:40  [ТС] 5
nezabudka, можно ещё проще:
Bash
1
2
3
4
5
    a=0
    for n; do
        (( a = a + ! ! $n ))
    done
    echo $(( a = a % 2 )
Или вот ещё так посоветовали:
Bash
1
2
3
4
5
    a=0
    for n; do
        (( a = ! ( ! $n - a ) ))
    done
    echo $a
Добавлено через 9 часов 34 минуты
Наилучший вариант (подсказали):
Bash
1
2
3
4
5
6
7
8
function XORN()
{
    a=1
    for n; do
        (( a = ! $n ^ a ))
    done
    echo $a
}
1
Эксперт NIX
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
05.01.2017, 06:35 6
cave-canem, Извиняюсь, а для чего это можно применить? Есть реальная задача
или пока ради спортивного интереса?

Добавлено через 3 минуты
Вообще то наверное можно применить в качестве функции оределяющей парное или не четное
количество числовых параметров в каком нибудь калькуляторе
0
2 / 2 / 1
Регистрация: 30.01.2016
Сообщений: 66
05.01.2017, 19:02  [ТС] 7
nezabudka,
Цитата Сообщение от nezabudka Посмотреть сообщение
Извиняюсь, а для чего это можно применить? Есть реальная задача
или пока ради спортивного интереса?
Ну в Bash'е есть & и &&, | и ||, ~ и !, а вот пары для ^ (^^) нет... Так вот хотя бы так...

И конечно же обучение...
0
05.01.2017, 19:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.01.2017, 19:02
Помогаю со студенческими работами здесь

Xor для текстовых строк
Всем привет. Нуждаюсь в помощи :) Задача похожа на разделение секрета Шамира. Нужно ввести...

XOR шифрование для double
Здравствуйте, есть задание при помощи xor зашифровать и расшифровать массив double однобайтным...

Оператор для xor шифрования
Разматриваю пример шифрования, возник детский вопрос ^ что делает этот оператор?

Правильное соотношение для операции XOR
Подскажите пожалуйста, какие будут правильные ответы. Я знаю что в таблице истинности это будет А...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru