[erlang] - хеши
От: DemAS http://demas.me
Дата: 13.02.09 20:43
Оценка:
Не нашел в Erlang соответствующего типа данных. Как лучше выйти из
положения?

Задача примерно такая: на вход подается текст, на выходе надо получить
сколько раз каждый символ встречался в тексте.

То есть, условный код (как я его вижу):

while(s = get_next_char() != eof) {
  if (my_hash.exists(s)) {
      value = my_hash.lookup(s);
      my_hash.insert(s, value + 1);
  }
  else
     my_hash.insert(s, 1);
}


Какую структуру данных использовать в Erlang? Можно конечно создать
список, где каждым нечетным элементом будет ключ, а четным значение — но уж
больно громоздким будет решение.

Еще можно создать два списка — ключей и значений, но открытым остается
вопрос о производительности такого решения. Ведь для каждого символа в
тексте я практически перестраиваю весь список.
Posted via RSDN NNTP Server 2.1 beta
Re: [erlang] - хеши
От: Курилка Россия http://kirya.narod.ru/
Дата: 13.02.09 21:01
Оценка: 4 (1)
Здравствуйте, DemAS, Вы писали:


DAS>Не нашел в Erlang соответствующего типа данных. Как лучше выйти из

DAS>положения?

По-русски это ассоциативные массивы будут вроде как (а хэшем называют результат вычисления хэш-функции).
В эрланге есть dictionary() (ну и ordered_dictionary() иногда требуется), вполне вроде широко употребимый.
Re[2]: [erlang] - хеши
От: DemAS http://demas.me
Дата: 13.02.09 21:28
Оценка:
"Курилка" <1546@users.rsdn.ru> writes:

> По-русски это ассоциативные массивы будут вроде как (а хэшем называют

> результат вычисления хэш-функции).

Их как только не называют
В Perl их, кстати, называют хэшами —
http://www.google.ru/url?sa=t&amp;source=web&amp;ct=res&amp;cd=1&amp;url=http%3A%2F%2Fwww.codenet.ru%2Fwebmast%2Fperl%2Fhash-howto.php&amp;ei=hOSVSZvLDoeG0AWS1dChCg&amp;usg=AFQjCNGs_EsFjlmfql-9oUdWl5yUsT_Nbw&amp;sig2=XTugpiNBzdWlse_Ff-Q6oQ.

Еще встречал название мепы (Maps). Хотя согласен, что ассоциативные
массивы звучит лучше.

> В эрланге есть dictionary() (ну и ordered_dictionary() иногда требуется), вполне вроде широко употребимый.


Спасибо. Посмотрю.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: [erlang] - хеши
От: Mamut Швеция http://dmitriid.com
Дата: 13.02.09 21:29
Оценка: 4 (1)
DAS>>Не нашел в Erlang соответствующего типа данных. Как лучше выйти из
DAS>>положения?

К>По-русски это ассоциативные массивы будут вроде как (а хэшем называют результат вычисления хэш-функции).

К>В эрланге есть dictionary() (ну и ordered_dictionary() иногда требуется), вполне вроде широко употребимый.

Плюс еще proplists, которые используются еще чаще, по-моему


dmitriid.comGitHubLinkedIn
Re[3]: [erlang] - хеши
От: Курилка Россия http://kirya.narod.ru/
Дата: 13.02.09 21:46
Оценка:
Здравствуйте, DemAS, Вы писали:

DAS>Еще встречал название мепы (Maps). Хотя согласен, что ассоциативные

DAS>массивы звучит лучше.

Map это из математики (из теории множеств), по-русски соотвествие (оно же бинарное отношение).
Re[4]: [erlang] - хеши
От: DemAS http://demas.me
Дата: 13.02.09 22:13
Оценка:
"Курилка" <1546@users.rsdn.ru> writes:

> Map это из математики (из теории множеств), по-русски соотвествие (оно же

> бинарное отношение).

А еще это название ассоциативных массивов в языке программирования X++.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: [erlang] - хеши
От: Курилка Россия http://kirya.narod.ru/
Дата: 13.02.09 22:15
Оценка:
Здравствуйте, DemAS, Вы писали:

DAS>"Курилка" <1546@users.rsdn.ru> writes:


>> Map это из математики (из теории множеств), по-русски соотвествие (оно же

>> бинарное отношение).

DAS>А еще это название ассоциативных массивов в языке программирования X++.


Именно соответствие
Re[6]: [erlang] - хеши
От: DemAS http://demas.me
Дата: 14.02.09 05:43
Оценка:
"Курилка" <1546@users.rsdn.ru> writes:


> DAS>А еще это название ассоциативных массивов в языке программирования X++.

> Именно соответствие

Извини, не понял.
Если я могу написать так:

Map     map = new Map(Types::String, Types::Integer);
;
map.insert('a', 1);
map.insert('b', 2);
map.insert('c', 3);

if(map.exists('b'))
        print map.lookup('b');


Это ассоциативный массив ?
Posted via RSDN NNTP Server 2.1 beta
Re[7]: [erlang] - хеши
От: Курилка Россия http://kirya.narod.ru/
Дата: 14.02.09 05:52
Оценка:
Здравствуйте, DemAS, Вы писали:

DAS>"Курилка" <1546@users.rsdn.ru> writes:



>> DAS>А еще это название ассоциативных массивов в языке программирования X++.

>> Именно соответствие

DAS>Извини, не понял.


Знак вопроса почему-то не поставил
Просто была "претензия" к слову "мепы", которое для русскоязычного человека никакой смысловой нагрузки не несёт (в отличии от тех же хэшей).
Кстати хэш-массивы — это лишь 1 вариант реализации ассоциативных массивов (но об этом ты, я думаю, в курсе).

DAS>Если я могу написать так:


[cut]

DAS>Это ассоциативный массив ?


А ты сомневаешься чтоль?
Re[8]: [erlang] - хеши
От: DemAS http://demas.me
Дата: 14.02.09 06:13
Оценка:
"Курилка" <1546@users.rsdn.ru> writes:

> Кстати хэш-массивы — это лишь 1 вариант реализации ассоциативных массивов (но об этом ты, я думаю, в курсе).


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

> А ты сомневаешься чтоль?


Ну, после твоего предыдущего сообщения даже засомневался.
Posted via RSDN NNTP Server 2.1 beta
Re[9]: [erlang] - хеши
От: Курилка Россия http://kirya.narod.ru/
Дата: 14.02.09 06:29
Оценка:
Здравствуйте, DemAS, Вы писали:

DAS>"Курилка" <1546@users.rsdn.ru> writes:


>> Кстати хэш-массивы — это лишь 1 вариант реализации ассоциативных массивов (но об этом ты, я думаю, в курсе).


DAS>Наверное.

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

Ммм, наверное?
Простой пример — явовский AbstractMap, среди наследников (если откинуть лишнее) есть 2 разных варианта: HashMap и TreeMap.
Re[10]: [erlang] - хеши
От: DemAS http://demas.me
Дата: 14.02.09 06:58
Оценка:
> Ммм, наверное?

Ну, чтобы утверждать что-то без доли сомнения мне пока не хватает опыта.
Posted via RSDN NNTP Server 2.1 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.