Re[7]: Зачем просят перевернуть строку на интервью?
От: Lexey Россия  
Дата: 11.10.18 22:31
Оценка: 4 (1)
Здравствуйте, VVV, Вы писали:

VVV>Там не код, а псевдокод. Но всё же, где там ошибка?


У тебя там, по факту, сдвиг на m влево, а не вправо.
"Будь достоин победы" (c) 8th Wizard's rule.
Re[8]: Зачем просят перевернуть строку на интервью?
От: VVV Россия  
Дата: 11.10.18 22:45
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Здравствуйте, VVV, Вы писали:


VVV>>>>Знаю как не рекурсивно (и очень элегантно) : http://rsdn.org/forum/other/124244.1
Автор: VVV
Дата: 01.11.02

Тё>>>Там в коде ошибка.
VVV>>Там не код, а псевдокод. Но всё же, где там ошибка?
Тё>В индексах.

Покажи где в индексах? https://ideone.com/ckJDhV

VVV>>Речь всё ещё о циклическом сдвиге строки?

Тё>«псевдокод» использует reverse строки. Речь об имплементации reverse без for-loop.

В этой подветке речь идёт о _циклическом_сдвиге_строки. Начато ЛаптевымВВ:

LVV>>И приводится удивительно элегантное рекурсивное решение.
Тё>Зачем там рекурсия?
Прошу пардону.
Там реверс строки используется для реализации циклического сдвига строки на n позиций за О(n).

К сожалению, я понял так, что всё же речь идёт про рекурсивный алгоритм сдвига строки, а т.к. я про него много раз слышал, но ни разу не видел (и сам не пытался, т.к. знаю нерекурсивный), то и спросил показать. Сейчас уже понял, что идёт речь как раз о том алгоритме, что я и привёл. Как-то так.
Re[8]: Зачем просят перевернуть строку на интервью?
От: VVV Россия  
Дата: 11.10.18 23:09
Оценка:
Здравствуйте, Lexey, Вы писали:

L>Здравствуйте, VVV, Вы писали:


VVV>>Там не код, а псевдокод. Но всё же, где там ошибка?


L>У тебя там, по факту, сдвиг на m влево, а не вправо.


Это ж был ответ на:

Там реверс строки используется для реализации циклического сдвига строки на n позиций за О(n).

и тут не оговаривалось в какую сторону.. (хотя, спасибо за прочтение исходного сообщения и внимательность!)

а если брать исходное сообщение 2002, то там был _псевдокод_, который только демонстрировал _идею_, не реализацию. Ну и при _циклическом_ сдвиге можно двигать хоть вправо, хоть влево.
Re[9]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 12.10.18 00:14
Оценка:
Здравствуйте, Lexey, Вы писали:

Тё>>Ну разве про swap без временной переменной


L>Што?


Тё>>и вообще без индексов.


L>Што?

L>Маразм крепчал?

Мало того, что у тебя ограниченный кругозор что даже сишные фишки не знаешь (не говоря про математику), — ты ещё и гордишься этим.
А потом приходят такие "с опытом" и впадают в meltdown на школьной задачке.
Re[9]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 12.10.18 00:19
Оценка:
Здравствуйте, VVV, Вы писали:

VVV>>>>>Знаю как не рекурсивно (и очень элегантно) : http://rsdn.org/forum/other/124244.1
Автор: VVV
Дата: 01.11.02

Тё>>>>Там в коде ошибка.
VVV>>>Там не код, а псевдокод. Но всё же, где там ошибка?
Тё>>В индексах.

VVV>Покажи где в индексах? https://ideone.com/ckJDhV


IK>Для массива 1 2 3 4 5 6 7 при сдвиге на 3 позиции должно получиться
IK>5 6 7 1 2 3 4.

У тебя получится 4 5 6 7 1 2 3.
Re[8]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 12.10.18 04:58
Оценка: +3
Здравствуйте, Тёмчик, Вы писали:

Тё>Ну разве про swap без временной переменной

А нафига? Это прикольный трюк но какой либо значимой практической пользы не несёт.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[9]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 12.10.18 05:33
Оценка: :))
Здравствуйте, CreatorCray, Вы писали:

Тё>>Ну разве про swap без временной переменной

CC>А нафига? Это прикольный трюк но какой либо значимой практической пользы не несёт.

Это тест на понимание битовых операций. Если у чела опыт C или C++ — должен понимать. Ибо говнокодеры нам не нужны.
Re[10]: Зачем просят перевернуть строку на интервью?
От: Stanislav V. Zudin Россия  
Дата: 12.10.18 06:19
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Это тест на понимание битовых операций. Если у чела опыт C или C++ — должен понимать. Ибо говнокодеры нам не нужны.


Не, Тёма, это не на понимание, а на проверку, читал ли "Hacker's Delight" (в нашем переводе "Алгоритмические трюки").
Т.е. очков кандидату может добавить, но определяющим не является.
_____________________
С уважением,
Stanislav V. Zudin
Re[3]: Зачем просят перевернуть строку на интервью?
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 12.10.18 06:31
Оценка:
Здравствуйте, Michael7, Вы писали:

M>Здравствуйте, RussianFellow, Вы писали:


RF>>Так, что ли?


M>Все бы ничего, но на utf-8 и даже на utf-16 в общем случае этот алгоритм сработает неправильно из-за переменной длины символов.


А как правильно тогда будет?
1613 г. = 2024 г.
Re[10]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 12.10.18 06:49
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

Тё>Это тест на понимание битовых операций.

На понимание битовых есть другие, нормальные тесты, которые именно на понимание что как и почему.
Этот же просто бесполезный трик.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[4]: Зачем просят перевернуть строку на интервью?
От: Stanislav V. Zudin Россия  
Дата: 12.10.18 06:53
Оценка:
Здравствуйте, RussianFellow, Вы писали:

M>>Все бы ничего, но на utf-8 и даже на utf-16 в общем случае этот алгоритм сработает неправильно из-за переменной длины символов.


RF>А как правильно тогда будет?


Правильно будет уточнять условие задачи до начала решения. Может и не потребуется решать замороченный вариант. И произведешь хорошее впечатление на интервьюера.
_____________________
С уважением,
Stanislav V. Zudin
Re[18]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 12.10.18 07:03
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, 0xCAFEDEAD, Вы писали:


CAF>>Я не очень понимаю, о чем ты.

CC>Это не тебе.
CC>Тут есть анонимная кукушка, которая ходит и подкладывает своё "ценное мнение" приватными мессагами от анонима.
А что пишет то?
Re[19]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 12.10.18 07:45
Оценка:
Здравствуйте, 0xCAFEDEAD, Вы писали:

CC>>Тут есть анонимная кукушка, которая ходит и подкладывает своё "ценное мнение" приватными мессагами от анонима.

CAF>А что пишет то?
Я давно уже их не читаю, удаляю сразу как вижу что от анонима с rsdn.
Некоторые тут постили, им тоже приходило.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[19]: Зачем просят перевернуть строку на интервью?
От: Stanislav V. Zudin Россия  
Дата: 12.10.18 07:55
Оценка:
Здравствуйте, 0xCAFEDEAD, Вы писали:

CC>>Тут есть анонимная кукушка, которая ходит и подкладывает своё "ценное мнение" приватными мессагами от анонима.

CAF>А что пишет то?

Иногда скромно присылает свое решение

Как раз сегодня прочитал данную тему и написал на своем персональном форуме соответствующее решение. за 15 минут

Правда, я не заморачивался кодировкой и использовал базовую кодировку.

Смотрите "Как выполнить инверсию отдельных слов в объекте класса std::string" по ссылке http://cpp.forum24.ru/?1-1-0-00000106-000-0-0

--------------------------------------------------

Можете опубликовать мой комментарий, если хотите.


А иногда приходит такая пурга, за которую на форуме банят.

ЗЫ. Может это кто-то из навечно забаненных?
_____________________
С уважением,
Stanislav V. Zudin
Re[3]: Зачем просят перевернуть строку на интервью?
От: alzt  
Дата: 12.10.18 08:57
Оценка:
Здравствуйте, CreatorCray, Вы писали:

RF>>Так, что ли?


CC>Как бы да, но... Image: gallery_746_4_1592.gif


от сишника ждут немного другую реализацию.
Re[11]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 12.10.18 08:57
Оценка: -2 :)
Здравствуйте, Stanislav V. Zudin, Вы писали:

Тё>>Это тест на понимание битовых операций. Если у чела опыт C или C++ — должен понимать. Ибо говнокодеры нам не нужны.


SVZ>Не, Тёма, это не на понимание, а на проверку, читал ли "Hacker's Delight" (в нашем переводе "Алгоритмические трюки").

SVZ>Т.е. очков кандидату может добавить, но определяющим не является.

Если не может придумать, значит не понимает битовые операции. Пусть складывает свои лего (и дрочит на указатели) в более других компаниях .
Re[12]: Зачем просят перевернуть строку на интервью?
От: Stanislav V. Zudin Россия  
Дата: 12.10.18 09:09
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>>>Это тест на понимание битовых операций. Если у чела опыт C или C++ — должен понимать. Ибо говнокодеры нам не нужны.


SVZ>>Не, Тёма, это не на понимание, а на проверку, читал ли "Hacker's Delight" (в нашем переводе "Алгоритмические трюки").

SVZ>>Т.е. очков кандидату может добавить, но определяющим не является.

Тё>Если не может придумать, значит не понимает битовые операции. Пусть складывает свои лего (и дрочит на указатели) в более других компаниях .


Категорически не согласен.
Есть знания, которые можно вывести, а есть те, которые надо просто знать (или знать, где подсмотреть).

Вот слабо сходу,не подглядывая в первоисточник, написать функцию реверса битов?
Тыж типа не говнокодер, в "лего" не играешь
_____________________
С уважением,
Stanislav V. Zudin
Re[8]: Зачем просят перевернуть строку на интервью?
От: AleksandrN Россия  
Дата: 12.10.18 09:57
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Здравствуйте, AleksandrN, Вы писали:


Тё>Там нечего оптимизировать- всё правильно сделано. Ну разве про swap без временной переменной и вообще без индексов.


Иногда встречал собеседующих, которые любят позанудствовать. В этом случае можно докопаться до двукратного вычисления n-1-i, хотя современный компилятор это, наверняка, хорошо оптимизирует.

А если делать без индексов и перестановку без временных элементов
void reverse( char *s )
{
    if ( !s )
        return;

    char *e = s + strlen( s ) - 1;
    while ( s < e )
    {
        *e ^= *s;
        *s ^= *e;
        *e-- ^= *s++;
    }
}
Отредактировано 12.10.2018 10:06 AleksandrN . Предыдущая версия .
Re[8]: Зачем просят перевернуть строку на интервью?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 12.10.18 10:07
Оценка: +2
Здравствуйте, Тёмчик, Вы писали:

Тё>Там нечего оптимизировать- всё правильно сделано. Ну разве про swap без временной переменной и вообще без индексов.


1. Ты просто не в курсе, чем могут быть временные переменные на стеке после компиляции. В релизе их просто не будет на стеке — значение сразу кладётся в регистр.
2. Аналогично и с индексами: если компилятор не догадается от них избавиться, то у тебя опять же будут проблемы с быстродействием.
3. Если вдруг так получится, что строка будет представлена двусвязным списком, то индексов либо не будут, либо они будут O(n).
4. Про utf-8 тебе уже написали: над такой строкой итератор будет логичной абстракцией, проходящей по строке посимвольно. Индекс же будет ходить либо по символам, либо по байтам, в зависимости от реализации.

Поэтому, если говорить о С++, вариант с итераторами будет одновременно и достаточно общим, и быстрым.
Re[9]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 12.10.18 10:18
Оценка: :)
Здравствуйте, AleksandrN, Вы писали:

AN>А если делать без индексов и перестановку без временных элементов

AN>
AN>void reverse( char *s )
AN>{
AN>    if ( !s )
AN>        return;

AN>    char *e = s + strlen( s ) - 1;
AN>    while ( s < e )
AN>    {
AN>        *e ^= *s;
AN>        *s ^= *e;
AN>        *e-- ^= *s++;
AN>    }
AN>}
AN>

Те же яйца (индекс), вид в профиль. Последняя строчка некрасивая- лучше всё запихнуть в for. Что ж вы всё на указатели мастурбируете типа это прибавляет значимости?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.