Страница 2 из 3

Re: Выход за пределы стринга

Добавлено: 12 мар 2007, 15:11
BBB
Колядин Максим писал(а):но если же быть не слишком правильным, но предельно лаконичным - я.
Твоя "предельно лаконичный" вариант отличается от "чересчур правильного" (но, видимо, по-твоему, "нелаконичного") лишь наличнием ДВУХ "лишних" СИМВОЛОВ (плюс возможный пробел между ними): "- 1". Офигенная экономия!

Re: Выход за пределы стринга

Добавлено: 12 мар 2007, 15:52
Колядин Максим
Я просто предложил свой вариант кода, который отличается как раз этими двумя символами. Да и вообще, я не люблю коды с лишними операциями, сколько бы символов они не занимали...

Re: Выход за пределы стринга

Добавлено: 12 мар 2007, 16:00
somewhere
&quot писал(а):Я просто предложил свой вариант кода, который отличается как раз этими двумя символами. Да и вообще, я не люблю коды с лишними операциями, сколько бы символов они не занимали...
Ну если так, то своим кодом ты добавил лишний проход For и подцепил ошибку. Похоже с настоящей оптимизацией ты еще не знаком. Могу предложить код, который при хорошем подходе сокращается в 5 раз, и примерно в столько же быстрее. Посмотри, потренируйся...

Re: Выход за пределы стринга

Добавлено: 12 мар 2007, 16:04
Хыиуду
Особенно это в программах взлома шифров грубой силой критично.

Re: Выход за пределы стринга

Добавлено: 12 мар 2007, 16:10
Колядин Максим
somewhere писал(а):Ну если так, то своим кодом ты добавил лишний проход For и подцепил ошибку.
Предложишь другой вариант решения этой задачи? Есть другие, более краткие способы? - давай, оптимизатор -);

Re: Выход за пределы стринга

Добавлено: 12 мар 2007, 19:41
Duncon
if (length(s)= 255) then length:= length(s) -1 и все решение задачки

ps вопрос теоритический мне его сей час не проверить- дальше месить ступу не буду..

Re: Выход за пределы стринга

Добавлено: 12 мар 2007, 22:47
Yura_ua
Уважаемые сеньоры девелоперы! Может мой вопрос покажется идиотским, но я ещё только учусь :-) А паскаль включает в длину строки символы ln, eof или как они там называются?

Re: Выход за пределы стринга

Добавлено: 12 мар 2007, 23:23
Duncon
Поконкретней.. eof возвращает конец файла к примеру - это функция..
Здесь уже писал кто-то записывается строка и ее длинна все..

Re: Выход за пределы стринга

Добавлено: 13 мар 2007, 11:34
somewhere
&quot писал(а):Предложишь другой вариант решения этой задачи? Есть другие, более краткие способы? - давай, оптимизатор -);
Что ж, по многочисленным просьбам телезрителей, :-), меняем метод работы. Будем не удалять, а собирать.

Код: Выделить всё

i := 1;
For x := 2 to length(s) do
    if s[x]<>s[i] then
       begin
       inc(i);
       s[i] := s[x];
       end;
s[0] := chr(i);
Подлинее, но ...
Тесты скорости, использовалась строка 'Hells Bells', время замера - 100 тактов DOS таймера (~5.5 сек)
Код №1 - вариант Максима
Код №2 - вариант мой.
----------------------------
Код №1 - 3 645 365 раз/сек
Код №2 - 18 825 449 раз/сек
----------------------------
Строка 'Thanks for choosing Google Earth, now click finish to complete setup'
Код №1 - 2 402 021 раз/сек
Код №2 - 5 606 163 раз/сек
----------------------------
Строка 'Deleeeeete thissssssss pleassssseeeeee'
Код №1 - 501 818 раз/сек
Код №2 - 10 029 670 раз/сек

Re: Выход за пределы стринга

Добавлено: 14 мар 2007, 09:11
Игорь Акопян
Колядин Максим, единственное дополнение - предлагая решение, обрати внимание читающего, что есть нюанс ;)