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

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

12 мар 2007, 15:11

Колядин Максим писал(а):но если же быть не слишком правильным, но предельно лаконичным - я.
Твоя "предельно лаконичный" вариант отличается от "чересчур правильного" (но, видимо, по-твоему, "нелаконичного") лишь наличнием ДВУХ "лишних" СИМВОЛОВ (плюс возможный пробел между ними): "- 1". Офигенная экономия!
Аватара пользователя
Колядин Максим
Сообщения: 285
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

12 мар 2007, 15:52

Я просто предложил свой вариант кода, который отличается как раз этими двумя символами. Да и вообще, я не люблю коды с лишними операциями, сколько бы символов они не занимали...
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

12 мар 2007, 16:00

&quot писал(а):Я просто предложил свой вариант кода, который отличается как раз этими двумя символами. Да и вообще, я не люблю коды с лишними операциями, сколько бы символов они не занимали...
Ну если так, то своим кодом ты добавил лишний проход For и подцепил ошибку. Похоже с настоящей оптимизацией ты еще не знаком. Могу предложить код, который при хорошем подходе сокращается в 5 раз, и примерно в столько же быстрее. Посмотри, потренируйся...
It's a long way to the top if you wanna rock'n'roll
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

12 мар 2007, 16:04

Особенно это в программах взлома шифров грубой силой критично.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
Колядин Максим
Сообщения: 285
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

12 мар 2007, 16:10

somewhere писал(а):Ну если так, то своим кодом ты добавил лишний проход For и подцепил ошибку.
Предложишь другой вариант решения этой задачи? Есть другие, более краткие способы? - давай, оптимизатор -);
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

12 мар 2007, 19:41

if (length(s)= 255) then length:= length(s) -1 и все решение задачки

ps вопрос теоритический мне его сей час не проверить- дальше месить ступу не буду..
Yura_ua
Сообщения: 63
Зарегистрирован: 07 дек 2006, 17:52

12 мар 2007, 22:47

Уважаемые сеньоры девелоперы! Может мой вопрос покажется идиотским, но я ещё только учусь :-) А паскаль включает в длину строки символы ln, eof или как они там называются?
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

12 мар 2007, 23:23

Поконкретней.. eof возвращает конец файла к примеру - это функция..
Здесь уже писал кто-то записывается строка и ее длинна все..
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

13 мар 2007, 11:34

&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 раз/сек
It's a long way to the top if you wanna rock'n'roll
Аватара пользователя
Игорь Акопян
Сообщения: 1419
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

14 мар 2007, 09:11

Колядин Максим, единственное дополнение - предлагая решение, обрати внимание читающего, что есть нюанс ;)
Изображение
Ответить