Алгоритмы→Определение четности числа
Предлагаю публиковать в этом разделе свои алгоритмы определения четности числа представленного в уравновешенном троичном коде. Есть мнение что их количество больше двух (уже известных мне). Если нужна подсказка то она звучит на первый взгляд странно: четным называется число у которого четно количество ненулевых разрядов.
Бармалейкин,
Мнения
001 Простите за то, что немного не по существу. За флуд то есть...
Меня восхитила троичная логика, её некторые свойства. Однако человеку, всю сознательную жизнь имевшему дело с бинарной логикой, трудно это воспринимать. А после прочтения первого поста начал сомневаться в вещах очевидных - четное число, это то, которое без остатка делится на 2? (два - это 1+1)
А вообще непонятно каким местом чувтсвую, будущее именно за этим.002 Да, в десятичной системе четным числом называется число, которое делится на 2 без остатка. В двоичной системе четность определяется одним из двух способов, наиболее часто применяемый из которых - проверка состояния самого младшего разряда (правда, при этом получается некоторая странность - ноль обретает свойство четности).
В троичной системе счисления подобный способ не будет действовать.
003 Не совсем понятно определение "четным называется число у которого четно количество ненулевых разрядов". В такой формулировке оно рекурсивно, поэтому необходимо граничное условие.
Например число -+0+00--0 содержит +-- ненулевых разрядов, которое в свою очередь содержит 0 ненулевых разрядов (и что дальше...)004 Обозначим чётное число знаком +,
нечётное знаком -,
нулевое соотвествено 0.
Изначально считаем что число 0.
Затем поразрядно определяем значение каждого разряда.
После первого разряда отличного от 0 уставливаем результат в -,
а после каждого следующего разряда отличного от 0 инвертируем результат.
Таким образом после обхода всех разрядов получаем значение "-" для нечётного, "+" для чётного и 0 для нулевого числа.005 Отличный вариант!
006 Однако в двоичных системах определение чётности намного проще: достаточно проверить младший разряд, если 0 — чётно, 1 — нечётно.
007 Да, если не обращать внимания на чётный ноль.
008 0 он и есть 0
009 Если для определения четности числа надо просмотреть все символы, то быстрее прямого перебора ничего нет
010 А что такое прямой перебор?
011 Строка="Текст ,который надо зачем-нибудь перебрать"
ДлинаСтроки=Строка.КоличествоСимволов()
Для к=0 по ДлинаСтроки Цикл
//делаем что-нибудь с каждый символом
КонецЦикла
015 При записи троичных чисел цифрами 0, 1 и 2, если сумма всех цифр троичного числа чётна, то и троичное число чётно.
016 Как уже было выше сказано такая формулировка рекурсивна (чтобы определить чётность числа надо определить чётность результата).
Независимо от обозначения (а также симметричная или нет система), в троичной системе счисления определить чётность числа можно по следующему алгоритму:
Обозначим чётное число знаком «+» (2),
нечётное знаком «-» (1),
нулевое соответственно 0.
Изначально считаем, что результат 0 (т.е. число равно 0).
Затем поразрядно определяем значение каждого разряда.
После первого разряда отличного от 0 устанавливаем результат в «-» (1),
а после каждого следующего разряда отличного от 0 инвертируем результат (например был «-» (1), меняем на «+» (2), или наоборот).
Таким образом, после обхода всех разрядов получаем значение «-» (1) для нечётного, «+» (2) для чётного и 0 для нулевого числа.017 Выше утверждение неточно.
Для не симметричной троичной системы алгоритм будет отличаться.
Изначально также считаем что число 0.
Затем поразрядно определяем чётность:
если первый не нулевой разряд = 2, записываем результат 2,
если первый не нулевой разряд = 1, записываем результат 1.
После чего обходим остальные разряды — если разряд = 1 то инвертируем результат (2 на 1, 1 на 2).
В результате получим 2 для чётного, 1 для нечётного, 0 для 0.
018 Первое предложение в блоке 017 - ложное.
019 Утверждение точно?
022 В блоке 017 речь идет о блоке 016.
