Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
Угу( Но так уже мне не нравится, не так красиво как раньше. Пока не додумался как обойтись без этой доп проверки, и подглядывать не хочу. Вечером ещё подумаю Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2014, 10:19 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
Не нашёл что-то "go to disassembly" . В контекстном меню при отладке смотрел. Видимо так смотрел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2014, 10:27 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
Во время выполнения, когда на брейкпоинте остановится - правая кнопка на коде ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2014, 10:33 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
Допустим алфавит состоит из 23 символов. Берём словарь по 4 байта, получаем 23^4 записей. В словаре будет два атрибута, значение и реверс. Делаем классический реверс но уже используя этот словарь. Допустим реверс идёт для текста длиной n. Как мне рассчитать n, для которой данный алгоритм будет давать прирост по времени хотя бы в два раза по сравнению с классическим алгоритмом ? Если я создам словарь для 2 байт, как мне считывать по два байта ? Создать свой тип данных ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2014, 11:17 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
Dima_TВо время выполнения, когда на брейкпоинте остановится - правая кнопка на коде Окей, понял :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2014, 11:18 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
Чтобы сделать реверс из n символов нужно сделать n операций. Саш. Мир полон замечательных и интересных алгоритмов. Тебе не хочется обсудить что нибудь другое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2014, 11:34 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
maytonЧтобы сделать реверс из n символов нужно сделать n операций. Саш. Мир полон замечательных и интересных алгоритмов. Тебе не хочется обсудить что нибудь другое? Да, парень явно завис, зациклился видимо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2014, 12:01 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryДопустим алфавит состоит из 23 символов. Берём словарь по 4 байта, получаем 23^4 записей. В словаре будет два атрибута, значение и реверс. Делаем классический реверс но уже используя этот словарь. Допустим реверс идёт для текста длиной n. Как мне рассчитать n, для которой данный алгоритм будет давать прирост по времени хотя бы в два раза по сравнению с классическим алгоритмом ? Если я создам словарь для 2 байт, как мне считывать по два байта ? Создать свой тип данных ? Про словарь это шутка была. Со словарем всегда будет медленнее. Общий размер строки никак не повлияет на скорость, т.к. меняется только алгоритм реверса одного слова. Разбор на слова у тебя остается в обоих случаях. Поиск в словаре тоже требует некоторых вычислений. Этот алгоритм самый эффективный, есть только один способ попытаться ускорить: реализовать этот код на ассемблере, т.е. в командах процессора. Вполне возможно компилятор создал не самый идеальный код. Но тут надо сначала хорошенько ассемблер поизучать. Оно тебе надо? maytonСаш. Мир полон замечательных и интересных алгоритмов. +100500 SashaMercury, поищи себе задачку посложнее. Только эту допили чтоб reverse_each_word() покомпактнее была. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2014, 12:01 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
Dima TЭтот алгоритм самый эффективный, есть только один способ попытаться ускорить: реализовать этот код на ассемблере, т.е. в командах процессора. Вполне возможно компилятор создал не самый идеальный код. Но тут надо сначала хорошенько ассемблер поизучать. Это ты глубоко заблуждаешься. Почему-то все думают, что ассемблер-- такой волшебный язык, на котором всё сразу автоматом начинает работать быстрее. Даже если этот алгоритм записать в виде одной машинной комманды, его стоимость не изменится -- O(n) как было, так и будет. Потому что для ревёрса слова in-place надо переместить n символов слова, для ревёрса слова с копированием в другой буфер, надо скопировать те же n символов слова. Стоимости алгоритмов всегда считаются относительно кол-ва выполнения одной базовой операции. Операция выбирается в зависимости от сущности алгоритма и цели оптимизации. Стоимость данного алгоритма неизменна независимо от того, сколько машинных комманд ушло на программирование этого алгоритма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2014, 21:20 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
MasterZivDima TЭтот алгоритм самый эффективный, есть только один способ попытаться ускорить: реализовать этот код на ассемблере, т.е. в командах процессора. Вполне возможно компилятор создал не самый идеальный код. Но тут надо сначала хорошенько ассемблер поизучать. Это ты грубоко ошибаешся. Почему-то все думают, что ассемблер-- такой волшебный язык, на котором всё сразу автоматом начинает работать быстрее. Даже если этот алгоритм записать в виде одной машинной комманды, его стоимость не изменится -- O(n) как было, так и будет. Не надо к словам придираться. 1. Стоимость алгоритма величина условная, предназначенная для сравнения эффективности различных алгоритмов (не реализаций). Поэтому в данном случае стоимость алгоритма не изменится: O(n) как было, так и будет. 2. Код (реализация алгоритма) возможно будет работать быстрее созданного компилятором если написать на асме. PS Ассемблер я немного знаю и не утверждал что всё сразу автоматом ускорится. Современные компиляторы достаточно эффективны и надо постараться написать так чтоб быстрее работало. Если заметил - я написал "возможно". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2014, 06:54 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
Dima T, Если написать на ассемблере, операций не станет меньше, и они не станут быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2014, 10:46 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
Ладно, я предлагаю уже прикрыть тему... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2014, 10:49 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Dima_TТолько эту допили чтоб reverse_each_word() покомпактнее была. К сожалению приходится заниматься порой всякой фигней, вместо того чтобы заниматься программированием ( Как же я хочу заниматься только программированием и математикой, и не заниматься на учебе/работе другой фигней. Потому не всегда получается быстро отвечать. Пять минут назад(снова в душе, что за душ у меня такой ) я подумал об этой задаче буквально 5 секунд и понял как ее допилить. Компилятора сейчас нет (на этой машине), но мне кажется что код ниже будет работать C: Причём до этого я ни секунды не думал со вчерашнего дня именно о том как её допилить, думал про рекурсию, но не про это. Удивляюсь, правильная мысль пришла буквально сразу. Такой код вероятно: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. mayton, MasterZiv, Dima_T нет не завис. Мне кажется что это фундаментальная задача, и такое долгое понимание того что необходимо n операций для реверса n байт даёт мне более глубокое понимание работы основной массы архитектур машин. Я каждый день ставил под сомнение этот алгоритм, и я не нашёл как по другому. Наверное нужна другая логика работы системы, например добавить градиент(к архитектуре машины) который будет показывать в какую сторону читать память. В любом случае, все ваши комментарии и мои размышления за это время дали результат в виде того что фундамент на котором я стою теперь более устойчив. Спасибо. Вы правы, не нужно зацикливаться, нужно двигаться дальше, но я ни капли не жалею часов потраченных на размышления по данному алгоритму. Главный вывод:Хотеть не вредно, необходимо искать оптимальные решения для каждой задачи исходя из архитектуры машины, и ставить под сомнения каждый алгоритм. Нужно искать оптимальное решение всегда. Побочный/повторный вывод: указатели чудо C: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2014, 10:57 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryПобочный/повторный вывод: указатели чудо C:добро пожаловать в семью :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2014, 11:36 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
SashaMercury...Такой код вероятно: Так уже хорошо. До компилятора доберешься, маленькую ошибку исправь и завязывай с этой задачей. Ищи следующую :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2014, 11:37 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
SashaMercury, зачем ты переписал мой идеальный reverse? :D зачем ты переписал reverse_each_word, если предложенная мной реализация гибче (пробелы, табуляторы и другие вайтспейсы могут разделять слова в неограниченном количестве стоять перед и после)? хороший совет на будущее, ищи идеал, но используй для этого качественные критерии. ты переписал реверс даже не уточнив критерии, которые ты хочешь улучшить в своей реализации, а это, извини, ребячество. но у тебя все впереди. еще учти, что полуоткрытые диапазоны это основа стандартных алгоритмов стандартной библиотеки алгоритмов. с ними ты будешь сталкиваться на каждом углу. удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2014, 12:30 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
SashaMercury ... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. Гениально. (я без сарказма). Давно бы так. SashaMercurymayton, MasterZiv, Dima_T нет не завис. Мне кажется что это фундаментальная задача, Есть задачи и гораздо более фундаментальные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2014, 16:05 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Dima_Tмаленькую ошибку исправь Вчера про это кстати подумал, и даже сначала так написал, а потом решил что можно оставить как раньше. Должно быть так Код: plaintext 1. egorych, спасибо C: Как-будто бы в мафиозный клан попал :D (я такую фразу слышал в фильмах про итальянских мафиози вроде :DDD) Анатолий Широков, мне просто хотелось сделать это самому ;) Ваш код и код Дмитрия с рекурсией я разберу более детально позднее. Сегодня хочу разобрать следующую главу K&R. MasterZivЕсть задачи и гораздо более фундаментальные. Надеюсь доберусь и до них :) Всем спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2014, 01:56 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
Анатолий Широковеще учти, что полуоткрытые диапазоны это основа стандартных алгоритмов стандартной библиотеки алгоритмов Почему именно полуоткрытые ? Закрытый интервал более читаем, так наверное. Неужели из-за индексации массивов с нуля ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2014, 09:57 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
SashaMercury, потому, что это позволяет естественно использовать открытый конец как специальное сигнальное значение. Это позволяет использовать лаконичные интерфейсы, и облегчает реализацию циклов. В возникших вопросах "А можно пример? Можно разъяснить подробнее?" советую разобраться самому (попробовать реализовать некоторые алгоритмы из stl на отрезках, например), это может дать более твердое понимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2014, 11:57 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
SashaMercury, вообще многие вопросы которые вы задаете, стоило бы обсуждать лет 7-10 назад. Сегодня в них лучше разбираться самому, все это уже везде разжевано, расписано, рассказано. С каждым годом кол-во усваиваемой студентами информации возрастает (было время когда в "ВУЗе" учили умножать). Вы же идете против этого процесса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2014, 12:02 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
Дайте ссылку где это обсосано. Обоснование от вас не услышал. Студенты тупеют духовно, и потому умнеть в плане мат/прог не могут по дефолту. Основная часть. Актуальность вопросов 7-10 лет ? Я рад что вы такого высокого мнение о вопросах ;) Спасибо за комментарий ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2014, 13:26 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryДайте ссылку где это обсосано. Обоснование от вас не услышал. Студенты тупеют духовно, и потому умнеть в плане мат/прог не могут по дефолту. Основная часть. Актуальность вопросов 7-10 лет ? Я рад что вы такого высокого мнение о вопросах ;) Спасибо за комментарий ;) Ссылку ищите сами. Не надо плохо думать о студентах. Те которых я знаю, вполне достойные трудолюбивые люди. Пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2014, 13:33 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
Хорошо, поищу. Может быть вы правы и я ошибаюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2014, 13:51 |
|
||
|
Ошибки в функции реверса каждого слова строки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryПочему именно полуоткрытые ? Закрытый интервал более читаем, так наверное. Неужели из-за индексации массивов с нуля ? На закрытом диапазоне нельзя без костылей выразить пустой диапазон. А на полуоткрытом - элементарно, указав два одинаковых индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2014, 14:27 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38575262&tid=2019647]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
73ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 16ms |
| total: | 199ms |

| 0 / 0 |
