Страница 2 из 3
Re: Выход за пределы стринга
Добавлено: 12 мар 2007, 15:11
BBB
Колядин Максим писал(а):но если же быть не слишком правильным, но предельно лаконичным - я.
Твоя "предельно лаконичный" вариант отличается от "чересчур правильного" (но, видимо, по-твоему, "нелаконичного") лишь наличнием ДВУХ "лишних" СИМВОЛОВ (плюс возможный пробел между ними): "- 1". Офигенная экономия!
Re: Выход за пределы стринга
Добавлено: 12 мар 2007, 15:52
Колядин Максим
Я просто предложил свой вариант кода, который отличается как раз этими двумя символами. Да и вообще, я не люблю коды с лишними операциями, сколько бы символов они не занимали...
Re: Выход за пределы стринга
Добавлено: 12 мар 2007, 16:00
somewhere
" писал(а):Я просто предложил свой вариант кода, который отличается как раз этими двумя символами. Да и вообще, я не люблю коды с лишними операциями, сколько бы символов они не занимали...
Ну если так, то своим кодом ты добавил лишний проход 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
" писал(а):Предложишь другой вариант решения этой задачи? Есть другие, более краткие способы? - давай, оптимизатор -);
Что ж, по многочисленным просьбам телезрителей, :-), меняем метод работы. Будем не удалять, а собирать.
Код: Выделить всё
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
Игорь Акопян
Колядин Максим, единственное дополнение - предлагая решение, обрати внимание читающего, что есть нюанс
