Конференция "Прочее" » Вот как надо на си шарп писать
 
  • XentaAbsenta (16.04.08 12:51) [20]
    b z   (16.04.08 12:46) [18]
    Этот код вообще не надо писать, т.е. вообще, я привёл его лишь как пример.
  • ferr (16.04.08 12:54) [21]
    нормальный функциональный подход =)
  • brother (16.04.08 12:55) [22]
    Интересно, а почему про системы исчисления не говорят?
    например:
    141 = 8D = 10001101 = 215
    8D это что? как можно сие расценить?) смайл?)))))))

    зы 8D - калькулятор жжеть)))
  • БарЛог © (16.04.08 13:02) [23]
    > Интересно, а почему про системы исчисления не говорят?
    Цифры системы задаются в Replace ("цифра", "").
  • brother (16.04.08 13:10) [24]

    > Цифры системы задаются в Replace ("цифра", "").

    вообще то я о том, как определить что например 8D это число, а не набор символов)
  • БарЛог © (16.04.08 13:19) [25]
    > вообще то я о том, как определить что например 8D это число, а не набор символов)
    $ вначале или h вконце? :)
  • Mystic © (16.04.08 13:39) [26]
    Один человек пошутил, а другие серьезно обсуждают. Аналогично можно написать сортировку путем перебора всех перестановок и последующей проверки на то, приводит ли эта перестановка к отсортированному массиву. И т. д.
  • XentaAbsenta (16.04.08 13:48) [27]
    Mystic ©   (16.04.08 13:39) [26]

    Я реально видел такой код в проекте. И такое действительно пишется к твоему сведенью, эта шутка не зря появилась.

    2.5 года назад народ в краснодаре приторговывал процессорным временем для формирования отчёта для одной очень непопулярной организации. Как ты думаешь, как так получилось?
  • han_malign © (16.04.08 13:54) [28]
    10:00:11:
    var
     Text,Buffer: string;
     BufSize: Integer;
     ch: char;
    begin
     Text:=LowerCase(IntToHex(AIntValue,1));
     BufSize:=(Length(Text) div 2) + (Length(Text) mod 2);
     HexToBin(PAnsiChar(Text),PAnsiChar(Buffer),BufSize);
     ch:=Buffer[Length(Buffer)-1];
     result:=(ch='1');
    end;
     10:00:49: чет не правильно делаю надо 2 бит у Int проверить
  • XentaAbsenta (16.04.08 14:02) [29]
    han_malign ©   (16.04.08 13:54) [28]
    что это?
  • iZEN (16.04.08 21:42) [30]

    > TUser ©   (16.04.08 12:01) [7]
    >
    > Нормальный код. Я тоже иногда StringReplace в качестве параметра
    > StringReplace'у  передаю.


    Это? Нормальный? Код?

    На длинной строке этот код всю память сожрёт, так как строки с C# немутабельны (как и в Java). То есть при каждой замене цифры на пустую "строку" ("") будет создаваться новая строка, которая короче предыдущей на один символ. И так будет делаться каждый раз при каждой замене.
  • antonn © (16.04.08 21:50) [31]

    > tesseract ©   (16.04.08 11:51) [5]
    >
    >
    > > Ega23 ©   (16.04.08 11:47) [4]
    >
    >
    > Мдя... С++ -ую логику не отнимешь. На тебе 1с-вский , от
    > франчей достался:

    три раза просмотрел, плакать хочется :(
    не от функции, от синтаксиса :((
  • XentaAbsenta © (16.04.08 23:37) [32]
    antonn ©   (16.04.08 21:50) [31]
    Clarion тебе в задний проход и электричку навстречу. И если тебе дадут пописать после этого хотябы на 1С будешь самым счастливым человеком на свете.
  • Семеныч (17.04.08 00:19) [33]
    Код в сабже или шутка, или написан пионером. Протому что нормальному программеру такое убожество даже спьяну не приснится.
  • Германн © (17.04.08 00:33) [34]

    > Протому что нормальному программеру

    Критерии нормальности программера в студию!
    :)
  • Семеныч (17.04.08 00:40) [35]
    > Германн ©   (17.04.08 00:33) [34]

    > Критерии нормальности программера в студию!

    Нет проблем. Нормальный программер - это такой программер, который критерии нормальности программера знает и сам.
  • Германн © (17.04.08 01:32) [36]

    > Семеныч   (17.04.08 00:40) [35]
    >
    > > Германн ©   (17.04.08 00:33) [34]
    >
    > > Критерии нормальности программера в студию!
    >
    > Нет проблем. Нормальный программер - это такой программер,
    >  который критерии нормальности программера знает и сам.
    >

    Даже в пьяном угаре?
    Тогда такие есть только в Красной Книге. Если есть?

    P.S. Тут ещё одно. Программер пишет, а юзер пользует!
    Критерии нормальности юзера, тоже в студию.
  • Пробегал2... (17.04.08 02:07) [37]
    tesseract ©   (16.04.08 11:38) [3]
    А чего делает то ?


    Ну ты даешь, код красивейший ;)
  • kaif © (17.04.08 02:54) [38]
    Красивейший только для программиста, живущего в абстрактном пространстве сишника. Любой программист, задумывающийся о реализации подобных алгоритмов, сообразит, например, что последовательная замена цифр на пустой символ требует каждый раз при замене создания нового буфера и перезаписи туда всей строки. Таким образом проверка на "цифровость" строки в 10 символов потребует создания как минимум 10 новых буферов на ходу, то есть 10 новых запросов по аллокированию памяти.
    Вместо этого, ИМХО, нормальный программист, близкий так сказать "к железу" (скажем, дельфист) предпочтет заменить символы цифр на символ пробела (пусть даже он бы воспользовался подобной идеей, находя ее "красивой"), а затем применение однократной функции типа Trim(). Тогда все можно будет реализовать в одном буфере и не аллокировать 10 раз новую память.
    В данном же случае не просто многократно аллокируется память, но и создается столько объектов типа string, сколько символов было в исходной строке. Со всеми накладными расходами и всеми вытекающими...
    Причем никакой оптимизатор-транслятор не сообразит, как это оптимизировать.
    Я лично не вижу никакой красоты в этом алгоритме, прошу меня извинить.
    И, наконец, существуют критерии оптимальности алгоритмов.
    Для того чтобы принять решение IsDigit для строки в 20 символов нужно принять не более 20 решений типа да/нет. Если алгоритм производит больше 20 решений, то он неоптимален. А данный алгоритм производит больше решений. И это легко показать.
    Допустим у нас трока выглядит так:

    s = "123^4567";

    Нормальный алгоритм, например, цикл for, проверяющий один символ за другим, сделает 4 проверки на "диджитность" и покинет цикл на четвертом шаге, разумно полагая, что '^' - не цифра и дальше проверять уже нечего.

    А восхваляемый за "красоту" алгоритм сабжа будет продолжать заменять все цифры, включая 4,5,6,7 и даже пытаться выискать и заменить во всех позициях (просканировав их все всякий раз и приняв в конечном итоге по 8 решений 10 раз) несуществующие здесь 8 и 9 на пустой символ, что есть дурость чистой воды. Данный алгоритм при длине строки в 100 символов примет как минимум 1000 решений по замене/незамене символов на "пустой", даже если там вообще не было цифр, а это был голимый текст, начинающийся с буквы, для которого достаточно было убедиться в том, что первый символ - буква и уже делать Exit.
  • Пробегал2... (17.04.08 04:46) [39]
    kaif ©   (17.04.08 2:54) [38]
    сообразит, например, что последовательная замена цифр на пустой символ требует каждый раз при замене создания нового буфера и перезаписи туда всей строки. Таким образом проверка на "цифровость" строки в 10 символов потребует создания как минимум 10 новых буферов на ходу, то есть 10 новых запросов по аллокированию памяти


    нда... господа, качайте ЧЮ, больше сказать просто НЕ-ЧЕ-ГО ;))

    kaif ©   (17.04.08 2:54) [38]
    Вместо этого, ИМХО, нормальный программист, близкий так сказать "к железу" (скажем, дельфист) предпочтет заменить символы цифр на символ пробела


    нормальный программист как минимум просто пробежится по символам такой строки на проверку. А не 10 раз пробежится (при замене всех цифр)

    kaif ©   (17.04.08 2:54) [38]
    И, наконец, существуют критерии оптимальности алгоритмов


    да что же такое.. Кайф, хватит загоняться, это же явно шутка, индусский код, чего тут обсуждать...
 
Конференция "Прочее" » Вот как надо на си шарп писать
Есть новые Нет новых   [134434   +30][b:0][p:0.001]