
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.9.173] |
![]() |
|
Страницы: (4) « Первая ... 2 3 [4] все ( Перейти к последнему сообщению ) |
![]() |
Сообщ.
#46
,
|
|
Чтобы сравнить представленческие возможности разных языков, прозвучало предложение посмотреть на реализацию некоего алгоритма на них, я всего лишь предложил LZW для этого как относительно простой, но и не тривиальный. После поста korvin можно было бы уже ничего и не писать, просто я успел раньше.
|
Сообщ.
#47
,
|
|
|
Ну ок, приведу свой код (но только для сжатия) И не по словарю ASCII, а по "ужатому". Относительно того, что присутствует в исходной строке для сжатия.
![]() ![]() #!/usr/local/bin/perl $String = "banana_bandana"; # начало ######################################################### $Str = ""; %Dic = (); @Wrk = (); # подготавливаем словарь - собираем только уникальные символы из # входной строки в отсортированном порядке map {$Tmp{$_}=''} split ('',$String); map {$Dic{$_}=++$Cnt} sort keys %Tmp; # вычисляем минимальное количество бит по словарю $Max = length(sprintf("%b",scalar(keys %Dic))); # читаем посимвольно входную строку, продолжаем заполнять словарь, # попутно скидывая в рабочий массив части закодированных подстрок foreach $Ch (split '', $String) { if (exists $Dic{$Str.$Ch}) { $Str .= $Ch; } else { push @Wrk, $Dic{$Str}; $Dic{$Str.$Ch} = scalar(keys %Dic) + 1; $Str = $Ch; } } push @Wrk, $Dic{$Str}; # из рабочего массива части закодированных строк формируем # результирующий битовый массив, представленный строкой $Cnt = 0; $Len = $Max; foreach $i (@Wrk) { $Len = $Max + 1 if (++$Cnt > $Max); $Res .= sprintf("%0${Len}b", $i); } $Res .= sprintf("%0${Max}b", 0); # печать результата ############################################## print "\n$Res\n"; Вывод: ![]() ![]() 0110101010111001000010110010101001001000 Проверить раскодирование можно тут (во второй части LZW- распаковка), а в качестве словаря для раскодирования использовать: _abdn |
Сообщ.
#48
,
|
|
|
Человек, хорошо знающий чистый СИ - вполне может худо-бедно ориентироваться в С++, если в читаемом не используется ООП и метапрограммирование. Я только об этом. Цитата D_KEY @ Ты имеешь в виду явную, а не статическую. Статическая может быть неявной (с выводом типов) и ничего не захламлять. Я имел ввиду - лучше автоматическую типизацию, чтобы в явном виде типы в коде не светились. Цитата D_KEY @ Конкретно для алгоритмов нужно структурное программирование. А его элементы сейчас есть во всех современных подходах. Процедурный тут ни при чем. Структурное программирование - это здорово. Но если его использовать в связке с ООП - это будет оффтопик, ИМНО. И второй момент - не всегда структурное прокатывает как того хотелось бы. Я о задачах, которые решаются конечными автоматами. Ну если мне нужно использовать какой-нить qsort, или еще какую шляпу - мне и его в представляемом алгоритме "разворачивать"? Не думаю (С) ![]() |
Сообщ.
#49
,
|
|
|
Цитата Majestio @ Человек, хорошо знающий чистый СИ - вполне может худо-бедно ориентироваться в С++ Нет. Это наоборот еще можно сказать. Что человек, знающий C++, вполне может худо-бедно ориентироваться в Си. И то не совсем. Например, он может не знать о всяких идиомах, принятых в Си. А вот знание Си точно не обеспечивают знание C++. Цитата если в читаемом не используется ООП и метапрограммирование. Ага, а еще стандартная библиотека, например. И вывод типов. И атрибуты. И "новый" for. И move семантика. И т.д. и т.п. Относись к C и к C++, как к разным языкам. Цитата Я имел ввиду - лучше автоматическую типизацию, чтобы в явном виде типы в коде не светились. Ну т.е. ты хочешь сказать, что для записи алгоритмов лучше иметь неявную типизацию, чем явную. Это устоявшиеся термины просто. А статическая и динамическое - это про другое. Цитата Ну если мне нужно использовать какой-нить qsort, или еще какую шляпу - мне и его в представляемом алгоритме "разворачивать"? Не думаю (С) ![]() Это говорит человек, который в своей реализации использует split, sort и пр. ![]() |
Сообщ.
#50
,
|
|
|
Цитата D_KEY @ Это говорит человек, который в своей реализации использует split, sort и пр. Ну так я и говорю - это можно юзать, но комментировать нужно, если по-хорошему. |
![]() |
Сообщ.
#51
,
|
|
Цитата Majestio @ приведу свой код Слишком много $. На Госдеп работаешь? |
Сообщ.
#52
,
|
|
|
Цитата korvin @ Слишком много $. На Госдеп работаешь? Не завидуй, что моя программа смотрится по-богатому! ![]() |
Сообщ.
#53
,
|
|
|
Цитата Majestio @ Цитата korvin @ Слишком много $. На Госдеп работаешь? Не завидуй, что моя программа смотрится по-богатому! ![]() Еще и % много. Буржуазией несет за версту. |
![]() |
Сообщ.
#54
,
|
|