LINUX.ORG.RU

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


0

1

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

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

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

★★★★★

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

Эмм, а «value % 2 == 0» или Pascal'евское «value mod 2 = 0» чем не вариант? О_о Или я чего-то упускаю?

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

Чистый неразбавленный Ассемблер, на нём ещё никто не писал торрентокачалки :}

Andru ★★★★
()

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

Хочу язык, в котором основа - структура UML, а классы соединяются друг с другом мышкой =) Вот это бы была классная штука для рисования всякой графической фигни.

Sadler ★★★
()

even и odd - стандартные функции определения четности и нечетности в Haskell.

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

Или я чего-то упускаю?

Там немного другая четность имеется в виду, то есть, кол-во единичных битов числа.

— Built-in Function: int __builtin_parity (unsigned int x)

    Returns the parity of x, i.e. the number of 1-bits in x modulo 2. 
provaton ★★★★★
()

Странно, что никто не подумал про parity bit и определение ошибок. А тем более просто не полез в референс.

baverman ★★★
()
Welcome to Racket v5.1.1.
> (even? 5)
#f
SBCL
* (evenp 5)

NIL
o
()

В паскале всегда была Odd()

lyset ★★★
()

Клевый пост. Школьников детектит на раз.

По теме: в питоне нет такой функции, но он идеален для написания плейера и качалки.

baverman ★★★
()

плейер не нужен, пиши морду к xmms2/mpd, торрентокачалка не нужна, пиши морду к transmission/rtorrent/etc

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

Вот странно, что ни в python, ни в Java такой функции я не нашел. Haskell я совсем чуть-чуть знаю, может быть, там такое есть? В data.Bits нету почему-то…

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

> Хочу язык, в котором основа - структура UML, а классы соединяются друг с другом мышкой =) Вот это бы была классная штука для рисования всякой графической фигни.

LabView тебя ждёт.

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

весьма годный клиент

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

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

>Хочется клиента с безумными правилами раскидывания торрентов по папкам. И консольный, обязательно.

bash + aria2c? :)

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

И консольный, обязательно.

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

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

Вот странно, что ни в python, ни в Java такой функции я не нашел.

Думаю, это можно объяснить тем, что данная функция имеет смысл, только при реализации конкретного протокола или формата. Например, в pyserial, она есть.

Почему она есть в Си? Может существуют процессоры, с такой инструкцией, поэтому компиляторы пытаются предоставить абстракцию.

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

bash + aria2c

Когда будет свободное время, обязательно займусь этим вопросом.

baverman ★★★
()
int NumberOfSetBits(int i)
{
    i = i - ((i >> 1) & 0x55555555);
    i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
    return ((i + (i >> 4) & 0xF0F0F0F) * 0x1010101) >> 24;
}
KRoN73 ★★★★★
()
Ответ на: комментарий от Andru

> на нём ещё никто не писал торрентокачалки :}

чорд, надо колибри-девам предложить, у них торрентокачалки до сих пор нет.

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

В Haskell кроме велосипеда ничего в голову не приходит:

myOdd a = func a 0
   where func 0 num = odd num
   	 func x num | testBit x 0 == True = func (shiftR x 1) (num + 1)
	      	    | otherwise = func (shiftR x 1) num
Lorchanko
()
Ответ на: комментарий от Sadler

> Дак они ж жуткие проприетарщики. Где православный OpenSource?

А тебе шашечки или ехать?

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

> Хочется клиента с безумными правилами раскидывания торрентов по папкам. И консольный, обязательно.

rtorrent

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

rtorrent

Не умеет править список трекеров, за полгода пользования так нигде и не нашел, как остановить закачку отдельного торрента.

И правила там безумные в прямом смысле. Так и не понял как пользоваться. Автор явно сидел на тяжелых веществах, придумывая синтаксис конфига.

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

> Не умеет править список трекеров, за полгода пользования так нигде и не нашел, как остановить закачку отдельного торрента.

эээ... ^k ? ^d ?

И правила там безумные в прямом смысле.

4.2

для примера:

schedule = watch_music_directory,5,5,«load_start=/data/torrents/music/*.torrent,d.stop=1,d.set_directory=/data/music/»

schedule = watch_video_directory,5,5,«load_start=/data/torrents/video/*.torrent,d.set_directory=/data/video/»

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

:)

И у меня такая же, где-то на задворках интернета найденная:

// подсчет кол-ва бит в слове i
// http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel
// http://en.wikipedia.org/wiki/Hamming_weight
int count_bits(l_uint32 i){
	i = i - ((i >> 1) & 0x55555555);
	i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
	return ((i + ((i >> 4) & 0xF0F0F0F)) * 0x1010101) >> 24;
}

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

Что значит «конкретному машинному типу»? Архитектуре, что ли? Да ей плевать, какая у вас архитектура - big endian, little endian или что еще: количество битов в числе от порядка следования составляющих его байт не зависит.

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

^k ? ^d ?

^k останавливает, да. Но как потом возобновить? ^d её сносит.

для примера:

Нужно чтоб из *одной* папки раскидывалось по многим. По регуляркам, там, по «сложным» AI алгоритмам.

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

дык, мне достаточно подсчитать четность, а не количество битов. А это можно сделать вроде как и быстрее, и проще.

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

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

> Не совсем то, но Scratch

Я уже пишу свой велосипед на Java2D + JFrame + Javascript

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

> Нужно чтоб из *одной* папки раскидывалось по многим. По регуляркам, там, по «сложным» AI алгоритмам.

ну как ты себе это представляешь?

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

Она ничего не вычисляет же…

Да, libastral меня подвел. В pyserial даже близко такого нет.

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

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

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

^s

Аллилуйя. За это огромное спасибо. Даже и не спрашивай, как я не догадался по ману или не нагуглил. Реально бесило, и никак не мог найти решение.

ну как ты себе это представляешь?

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

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

Кому-то, может, и общеизвестная :) А я даже openmp только на днях для себя открыл, до этого все делал вручную.

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