LINUX.ORG.RU

В каких языках есть стандартная функция, вычисляющая чётность?


0

1

Вот в gcc и компиляторах, поддерживающих его расширения (clang etc), есть встроенная функция __builtin_parity ().

Странно, но я не нашел таких функций в других языках программирования… Интересно, почему это? Казалось бы, наоборот, в языках более высокого уровня найти такую функцию ожидаешь скорее, чем в каком-то C, пусть и с GNU-расширениями…

Какой язык программирования выбрать, чтобы написать плейер и торрентокачалку?

★★★★★
Ответ на: комментарий от provaton

Ну тогда напишите на на С и проимпортите модуль, какие проблемы? Чистый питон не предназначен для написания быстро работающего кода, уже много раз терли.

AIv ★★★★★
()
Ответ на: комментарий от baverman

> По имени файла, определить, что это китайский порномултик и сложить его в соответствующую папку.

несколько простых, типичных имен файлов: [rutracker.org].t702982.torrent, 81A45103F922C445CBD2C8900230B05704D7CE9D.torrent, [NNM-Club.ru]_AICS5_15.0.2_Ru-En.paf.exe.torrent, [rutracker.org].t3203157.torrent

вопрос: что это? разложи по директориям, если тебе не трудно.

Rastafarra ★★★★
()
Ответ на: комментарий от baverman

Мне кажется эта функция должна по-другому называться. Понятие четности уже определено в математике.

o
()
Ответ на: комментарий от AIv

да вот в том-то и дело, казалось бы, функция настолько ходовая, что даже в C есть встроенная. А в python почему-то нужно писать внешний модуль, хотя, казалось бы, вполне могла бы быть такая встроенная функция… parity (). Эффективно реализованная для разных архитектур.

Ужь даже если сишный программист не обязан возиться с битовой арифметикой, а может использовать встроенные функции…

anarquista ★★★★★
() автор топика
Ответ на: комментарий от Rastafarra

несколько простых, типичных имен файлов

Так не по имени же файла торрента! А по *содержимому* торрента. Хочу, чтоб качалка вызывала мою функцию и передавала всю эту метаинформацию.

baverman ★★★
()
Ответ на: комментарий от baverman

Хочу, чтоб качалка вызывала мою функцию и передавала всю эту метаинформацию.

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

baverman ★★★
()
Ответ на: комментарий от anarquista

А зачем в питоне вообще возится с битовой арифметикой? Если Вы хотите контрольную сумму файла то есть hashlib

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

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

AIv ★★★★★
()
Ответ на: комментарий от o

Понятие четности уже определено в математике.

Есть понятие «четность числа», а есть понятие «функция четности». Второе - термин из булевой алгербы, я ссылку на википедию выше кидал.

provaton ★★★★★
()
Ответ на: комментарий от baverman

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

в моем варианте можно, это делается относительно автоматически.

с другой стороны: чем не нравится ^o ?

Rastafarra ★★★★
()
Ответ на: комментарий от o

Я просто сказал, что твой вариант хуже чем цикл, потому что нет хвостовой рекурсии, и следовательно тратится память на стек и время на рекурсивные вызовы. Тут настолько все очевидно, что даже КО в шоке.

provaton ★★★★★
()
Ответ на: комментарий от provaton

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

o
()
Ответ на: комментарий от Eddy_Em

В старых терминальных протоколах повсеместно использовалось. Сейчас некоторые реализации рейда используют проверку четности для обнаружения ошибок.

https://secure.wikimedia.org/wikipedia/en/wiki/Parity_bit

provaton ★★★★★
()
Ответ на: комментарий от anarquista

дык, мне достаточно подсчитать четность, а не количество битов

Блин. Подумал, что GCC с -O3 сможет упростить. Взял младший бит результата, сгенерировал код:

    movl    %eax, %edx
    sarl    %edx
    andl    $1431655765, %edx
    subl    %edx, %eax
    movl    %eax, %edx
    sarl    $2, %eax
    andl    $858993459, %edx
    andl    $858993459, %eax
    addl    %edx, %eax
    movl    %eax, %edx
    sarl    $4, %edx
    leal    (%edx,%eax), %eax
    andl    $252645135, %eax
    imull   $16843009, %eax, %eax
    sarl    $24, %eax
    andl    $1, %eax
    ret

Переписал его на Си. Получил:

int parity2(int n)
{
    n = n - ((n>>1) & 0x55555555);
    n = ((n>>2) & 0x33333333) + (n & 0x33333333);
    return (((n + (n >> 4)) & 0xF0F0F0F) * 0x1010101 >> 24) & 1;
}

Те же уши, вид сбоку :D

KRoN73 ★★★★★
()
Ответ на: комментарий от Eddy_Em

Почему? Контрольная сумма не обязательно должна обладать свойствами хеш-функции.

provaton ★★★★★
()
Ответ на: комментарий от baverman

Разве «the number of 1-bits in x modulo 2» не означает «количество установленных битов в результате выражения (x % 2)»?

urxvt ★★★★★
()
Ответ на: комментарий от urxvt

>Разве «the number of 1-bits in x modulo 2» не означает «количество установленных битов

Оно означает нечётность числа установленных бит

количество установленных битов в результате выражения (x % 2)


В результате выражения x%2 мы получим младший бит числа

KRoN73 ★★★★★
()
Ответ на: комментарий от urxvt

Тут левая ассоциативность и одинаковый приоритет :)

provaton ★★★★★
()
Ответ на: комментарий от provaton

> deluge

Может и годный, но это не дело, когда торрент-клиент тянет зависимостей на десятки мегабайт. Вендовый µTorrent весит 600 кб и таки обгоняет его по фичам.

pevzi ★★★★★
()
Ответ на: комментарий от anarquista

Haskell я совсем чуть-чуть знаю, может быть, там такое есть? В data.Bits нету почему-то

вот тут была экспортированная реализация

jtootf ★★★★★
()
Ответ на: комментарий от Rastafarra

с другой стороны: чем не нравится ^o

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

baverman ★★★
()
Ответ на: комментарий от KRoN73

Быдлокод. Содержит неявное предположение о количестве битов в int. Кроме того, умножение на 0x1010101 чревато signed integer overflow, что по стандарту - undefined behavior.

Manhunt ★★★★★
()
Ответ на: комментарий от anarquista

На самом деле, всего лишь вайн (: но лично мне он не нужен, ибо есть трансмиссия.

pevzi ★★★★★
()
Ответ на: комментарий от baverman

> куда надо

А как она узнает, куда надо качать то или другое?

pevzi ★★★★★
()
Ответ на: комментарий от Manhunt

>Быдлокод. Содержит неявное предположение о количестве битов в int.

Можно подумать, в Си есть бестиповые или выводимые переменные :)

KRoN73 ★★★★★
()
Ответ на: комментарий от Andru

>или Pascal'евское «value mod 2 = 0» чем не вариант?

Тем, что в Pascal'e есть стандартные Odd() и Even()

Led ★★★☆☆
()
Ответ на: комментарий от Manhunt

>Вместо int нужно использовать uint32_t.

Я это и имел в виду.

KRoN73 ★★★★★
()
Ответ на: комментарий от baverman

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

у меня замонтировано несколько директорий (apps, video, music, books) с домашнего серванта на машину, в них я складываю торент-файло соответственно, с той стороны rtorrent на это дело смотрит и льет соответственно в рызные места. егойный шедулер днем скорость режет, ночером выставляет полную.

ничего сложного я в этом не вижу.

Rastafarra ★★★★
()
Ответ на: комментарий от baverman

ну да, еще оно мне шлет жабером сообщения о том, что что-то слилось.

Rastafarra ★★★★
()
Ответ на: комментарий от baverman

> А какие сложности? По имени файла, определить, что это китайский порномултик и сложить его в соответствующую папку. Или видим, что в торренте только музыка, поэтому двигаем его куда надо. Вообще проблем не вижу.

Ну так будь мужиком же! ))

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

Ну так будь мужиком же!

Сперва редактор, файл менеджер, wm, браузер, а только потом качалка. Порядок пока такой.

baverman ★★★
()
Ответ на: комментарий от LamerOk

китайские порномультики от обычных?

А мне и не надо. Если нашлась дира под xxxмультик, то перемещаем. В противном случае качается в папку по-умолчанию. Автоматическое создание каталогов попахивает содомией.

Я все продумал, времени было много.

baverman ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.