Твоя "предельно лаконичный" вариант отличается от "чересчур правильного" (но, видимо, по-твоему, "нелаконичного") лишь наличнием ДВУХ "лишних" СИМВОЛОВ (плюс возможный пробел между ними): "- 1". Офигенная экономия!Колядин Максим писал(а):но если же быть не слишком правильным, но предельно лаконичным - я.
Выход за пределы стринга
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
- Колядин Максим
- Сообщения: 297
- Зарегистрирован: 16 ноя 2006, 19:09
- Откуда: Seattle, WA
- Контактная информация:
Я просто предложил свой вариант кода, который отличается как раз этими двумя символами. Да и вообще, я не люблю коды с лишними операциями, сколько бы символов они не занимали...
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Ну если так, то своим кодом ты добавил лишний проход For и подцепил ошибку. Похоже с настоящей оптимизацией ты еще не знаком. Могу предложить код, который при хорошем подходе сокращается в 5 раз, и примерно в столько же быстрее. Посмотри, потренируйся..." писал(а):Я просто предложил свой вариант кода, который отличается как раз этими двумя символами. Да и вообще, я не люблю коды с лишними операциями, сколько бы символов они не занимали...
It's a long way to the top if you wanna rock'n'roll
Особенно это в программах взлома шифров грубой силой критично.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
- Колядин Максим
- Сообщения: 297
- Зарегистрирован: 16 ноя 2006, 19:09
- Откуда: Seattle, WA
- Контактная информация:
Предложишь другой вариант решения этой задачи? Есть другие, более краткие способы? - давай, оптимизатор -);somewhere писал(а):Ну если так, то своим кодом ты добавил лишний проход For и подцепил ошибку.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
if (length(s)= 255) then length:= length(s) -1 и все решение задачки
ps вопрос теоритический мне его сей час не проверить- дальше месить ступу не буду..
ps вопрос теоритический мне его сей час не проверить- дальше месить ступу не буду..
Уважаемые сеньоры девелоперы! Может мой вопрос покажется идиотским, но я ещё только учусь :-) А паскаль включает в длину строки символы ln, eof или как они там называются?
Поконкретней.. eof возвращает конец файла к примеру - это функция..
Здесь уже писал кто-то записывается строка и ее длинна все..
Здесь уже писал кто-то записывается строка и ее длинна все..
Что ж, по многочисленным просьбам телезрителей, :-), меняем метод работы. Будем не удалять, а собирать." писал(а):Предложишь другой вариант решения этой задачи? Есть другие, более краткие способы? - давай, оптимизатор -);
Код: Выделить всё
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
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
Колядин Максим, единственное дополнение - предлагая решение, обрати внимание читающего, что есть нюанс 

