На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (4) « Первая ... 2 3 [4]  все  ( Перейти к последнему сообщению )  
> Язык программирования для представления алгоритмов
    Цитата korvin @
    Общаюсь с Qraizer'ом. Он-то привёл код.
    Чтобы сравнить представленческие возможности разных языков, прозвучало предложение посмотреть на реализацию некоего алгоритма на них, я всего лишь предложил LZW для этого как относительно простой, но и не тривиальный. После поста korvin можно было бы уже ничего и не писать, просто я успел раньше.
      Ну ок, приведу свой код (но только для сжатия) И не по словарю ASCII, а по "ужатому". Относительно того, что присутствует в исходной строке для сжатия.

      ExpandedWrap disabled
        #!/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";

      Вывод:
      ExpandedWrap disabled
        0110101010111001000010110010101001001000


      Проверить раскодирование можно тут (во второй части LZW- распаковка), а в качестве словаря для раскодирования использовать: _abdn
        Цитата D_KEY @
        Ну тогда странной выглядит отсылка к Си, когда речь о С++.

        Человек, хорошо знающий чистый СИ - вполне может худо-бедно ориентироваться в С++, если в читаемом не используется ООП и метапрограммирование. Я только об этом.

        Цитата D_KEY @
        Ты имеешь в виду явную, а не статическую. Статическая может быть неявной (с выводом типов) и ничего не захламлять.

        Я имел ввиду - лучше автоматическую типизацию, чтобы в явном виде типы в коде не светились.

        Цитата D_KEY @
        Конкретно для алгоритмов нужно структурное программирование. А его элементы сейчас есть во всех современных подходах. Процедурный тут ни при чем.

        Структурное программирование - это здорово. Но если его использовать в связке с ООП - это будет оффтопик, ИМНО.
        И второй момент - не всегда структурное прокатывает как того хотелось бы. Я о задачах, которые решаются конечными автоматами.

        Цитата D_KEY @
        Спорно. Почему ты так считаешь?

        Ну если мне нужно использовать какой-нить qsort, или еще какую шляпу - мне и его в представляемом алгоритме "разворачивать"? Не думаю (С) :lol:
          Цитата Majestio @
          Человек, хорошо знающий чистый СИ - вполне может худо-бедно ориентироваться в С++

          Нет.
          Это наоборот еще можно сказать. Что человек, знающий C++, вполне может худо-бедно ориентироваться в Си. И то не совсем. Например, он может не знать о всяких идиомах, принятых в Си.
          А вот знание Си точно не обеспечивают знание C++.

          Цитата
          если в читаемом не используется ООП и метапрограммирование.

          Ага, а еще стандартная библиотека, например. И вывод типов. И атрибуты. И "новый" for. И move семантика. И т.д. и т.п.
          Относись к C и к C++, как к разным языкам.

          Цитата
          Я имел ввиду - лучше автоматическую типизацию, чтобы в явном виде типы в коде не светились.

          Ну т.е. ты хочешь сказать, что для записи алгоритмов лучше иметь неявную типизацию, чем явную. Это устоявшиеся термины просто.
          А статическая и динамическое - это про другое.

          Цитата
          Ну если мне нужно использовать какой-нить qsort, или еще какую шляпу - мне и его в представляемом алгоритме "разворачивать"? Не думаю (С) :lol:

          Это говорит человек, который в своей реализации использует split, sort и пр. :D
          Сообщение отредактировано: D_KEY -
            Цитата D_KEY @
            Это говорит человек, который в своей реализации использует split, sort и пр.

            Ну так я и говорю - это можно юзать, но комментировать нужно, если по-хорошему.
              Цитата Majestio @
              приведу свой код

              Слишком много $. На Госдеп работаешь?
                Цитата korvin @
                Слишком много $. На Госдеп работаешь?

                Не завидуй, что моя программа смотрится по-богатому! :lol:
                  Цитата Majestio @
                  Цитата korvin @
                  Слишком много $. На Госдеп работаешь?

                  Не завидуй, что моя программа смотрится по-богатому! :lol:

                  Еще и % много.
                  Буржуазией несет за версту.
                    Цитата Majestio @
                    моя программа смотрится по-богатому!

                    Ага. Дорого-богато.

                    Прикреплённая картинка
                    Прикреплённая картинка
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0602 ]   [ 17 queries used ]   [ Generated: 19.03.24, 09:25 GMT ]