|
6 / 6 / 0
Регистрация: 05.11.2010
Сообщений: 60
|
|
Функция реверса строки05.11.2010, 04:43. Показов 46612. Ответов 85
Метки нет (Все метки)
На собеседовании в одну компанию меня попросили на бумажке написать функцию реверса строки.
Буквально парой дней раньше я услышал о том что на собеседованиях частенько просят решить именно эту задачу. Ее простота насторожила меня и заставила искать наиболее красивое/оптимизированное/необычное решение. И я его таки нашел и малость перестарался. Как я узнал позже интервьюер решил что я дал неверный ответ. Так какое же у этой простой задачки может быть оригинальное решение?
0
|
|
| 05.11.2010, 04:43 | |
|
Ответы с готовыми решениями:
85
ф-ция реверса строки
|
|
|
|
| 05.11.2010, 13:34 | |
|
Genius Ignat, возможно мы говорим немного о разных вещах. Я по поводу ваших слов "XOR не всегда быстрая операция", не понимаю как так "не всегда". Это быстрая операция, но это не значит, что она самая быстрая из команд процессора x86 и ею нужно заменять все подряд. Если reverse из STL написан не через XOR, значит на то есть причины) Снимки, которые я выложил - это справочник по ассемблеру (правда для 16 бит), там видно, что XOR и MOV выполняются за абсолютно равное время, так что реализации реверса через XOR и через Temp (теоретически, смотря какой код сгенерирует компилятор) абсолютно равны по скорости! Использовать XOR или Temp - это дело автора кода.
Добавлено через 1 минуту А вот про какую еще оптимизацию говорит ТС, я прям не знаю.
0
|
|
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
|
| 05.11.2010, 13:56 | |
|
Kastaneda:
Вот и не будем, спорить, тем более, тема не особа интересна. По поводу, обменов, могу предложить использовать массив указателей, моя идея в сторону оптимизации, Правда, для символов не какой оптимизации не будет, а для больших объектов такая оптимизация существенна. Добавлено через 17 минут Извиняюсь, по поводу STL ступил, потому как reverse из STL обобщенная реализация для любых типов, а XOR работает только со стандартными.
0
|
|
|
6 / 6 / 0
Регистрация: 05.11.2010
Сообщений: 60
|
|
| 05.11.2010, 14:01 [ТС] | |
|
Не массив указателей.
0
|
|
|
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
|
||||||
| 05.11.2010, 14:41 | ||||||
|
Так что ле обменивать переменные надо:
0
|
||||||
|
6 / 6 / 0
Регистрация: 05.11.2010
Сообщений: 60
|
|
| 05.11.2010, 14:44 [ТС] | |
|
Кажется да.
Собственно так я это решение и нашел. Мы с другом соревновались кто за меньшее количество строчек это напишет.
0
|
|
|
|
|||||||||||||||||
| 05.11.2010, 15:17 | |||||||||||||||||
|
slice, оптимизации здесь нет (я ж такой же код написал)
Не по теме: к вечеру окажется, что ТС имел ввиду какую-нибудь фигню, не имеющую к оптимизации ни какого отношения))) Добавлено через 41 секунду Добавлено через 11 минут Не по теме: Хочется вставить свои 5 копеек)))
Нужно понимать, что есть оптимизация. Не по теме: Добавлено через 18 минут
0
|
|||||||||||||||||
|
6 / 6 / 0
Регистрация: 05.11.2010
Сообщений: 60
|
|
| 05.11.2010, 15:26 [ТС] | |
|
Kastaneda все верно. Это 2 формы одного и того же.
Это не та 2-я оптимизация. За оптимизацию по скорости не волнуйтесь, она там есть. А ксоры, как я уже говорил, просто фишка. Добавлено через 3 минуты По поводу строк. Речь шла о строках С++. И хоть 3 ксора компилер развернет, но в одной строчке свап смотрится немного дико, что не может не внушать оптимизма . А 3 приравнивания в одну строку не впихнешь(запетые не в счет).
0
|
|
|
6 / 6 / 0
Регистрация: 05.11.2010
Сообщений: 60
|
|
| 05.11.2010, 15:46 [ТС] | |
|
Ок, досмотрю фильм и налабаю. Может кто-то за полтора часа и придумает.
А вы если подобные задачки знаете - выкладывайте, не стесняйтесь
0
|
|
|
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
|
|
| 05.11.2010, 16:01 | |
|
0
|
|
|
|
||
| 05.11.2010, 16:20 | ||
|
0
|
||
|
6 / 6 / 0
Регистрация: 05.11.2010
Сообщений: 60
|
||||||
| 05.11.2010, 18:12 [ТС] | ||||||
|
Только что досмотрел "V значит вендетта". Ух-ты! Вот какой фильм. Год вокруг него ходил, сморя на постер, решил что это отстой. Оказалось нет.
Минут через 10 выложу решение. Добавлено через 10 минут Вот полное решение:
0
|
||||||
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
|
| 05.11.2010, 18:17 | |
|
Zilon:
В чем прикол, использование арифметики указателей?? или что??.
0
|
|
|
6 / 6 / 0
Регистрация: 05.11.2010
Сообщений: 60
|
|||||||||||
| 05.11.2010, 18:33 [ТС] | |||||||||||
|
По пунктам.
1. ушел i--; +1 операция 2. пришло left++ и right-- -1 операция Что такое arr[i]? Согласно стандарту arr[i] = *(arr + i); В этом вареанте
3. Итого если сравневать с самым быстрым из выложенных (Genius Ignat) имеем выиграш 4 суммирования. Учитывая что количество операций невелико (помоему меньше 15) то теперь имеем 11. Позже могу посмотреть асм. код. А ведь исходный вариант имел еще больше сумирований:
0
|
|||||||||||
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
|
| 05.11.2010, 18:44 | |
|
Zilon:
Ну и чем хотел меня удивить, надо было мне в начале, с арифметикой сделать, и вопрос был бы решен.
0
|
|
|
6 / 6 / 0
Регистрация: 05.11.2010
Сообщений: 60
|
||||||||||||||||
| 05.11.2010, 18:45 [ТС] | ||||||||||||||||
|
Вот во что Visual Studia превратила вариант с указателями:
0
|
||||||||||||||||
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
|
| 05.11.2010, 18:45 | |
|
Zilon:
Ну и чему тут можно удивиться, надо было мне в начале, с арифметикой сделать, и вопрос был бы решен.
0
|
|
|
6 / 6 / 0
Регистрация: 05.11.2010
Сообщений: 60
|
|
| 05.11.2010, 18:48 [ТС] | |
|
0
|
|
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
|
| 05.11.2010, 18:51 | |
|
Zilon:
То, что переделывать было уже нечего, разве что XOR припаять.
0
|
|
|
6 / 6 / 0
Регистрация: 05.11.2010
Сообщений: 60
|
|
| 05.11.2010, 18:54 [ТС] | |
|
Удивляться или нет - это личное дело каждого.
Мы говорили о варианте более оптимизированном по скорости чем те что были выложены. Вот он. Обоснование я уже выложил, но по моему это и так видно. А как я писал ранее - оптимизация будет не столько алгоритмическая сколько на уровне реализации. Хотя работая с такими атомарными вещами они алгоритм сливается с реализацией.
0
|
|
| 05.11.2010, 18:54 | |
|
Есть ли функция реверса одномерного массива? Защита от реверса проекта Реализация реверса массива Защита от реверса ( md5 ) Полумост для реверса мотора Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата)
Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в. . .
|
|
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса
Калибровка параметров симбиотической модели: технический обзор
Содержание:
Введение
Постановка проблемы
Технические аспекты реализации
Процесс внедрения изменений
|
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0»
https:/ / ibb. co/ NnkGpfMd
Представленная интегрированная схема описывает непрерывную нелинейную. . .
|
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы
### Аннотация
Представлено исследование по разработке агентной модели микоризной. . .
|
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики
Контекст
Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
|