Re[9]: Зачем просят перевернуть строку на интервью?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 12.10.18 10:24
Оценка: -1
Здравствуйте, AleksandrN, Вы писали:

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


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

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


N>1. Ты просто не в курсе, чем могут быть временные переменные на стеке после компиляции. В релизе их просто не будет на стеке — значение сразу кладётся в регистр.

Занимает лишний регистр.
N>2. Аналогично и с индексами: если компилятор не догадается от них избавиться, то у тебя опять же будут проблемы с быстродействием.
Неверно.
N>3. Если вдруг так получится, что строка будет представлена двусвязным списком, то индексов либо не будут, либо они будут O(n).
Если вдруг у бабушки был писюн.

N>4. Про utf-8 тебе уже написали: над такой строкой итератор будет логичной абстракцией, проходящей по строке посимвольно. Индекс же будет ходить либо по символам, либо по байтам, в зависимости от реализации.

Такая «строка» уже не будет строкой. Это какой-то массив или список строк уже.

N>Поэтому, если говорить о С++, вариант с итераторами будет одновременно и достаточно общим, и быстрым.

Похоже ты не имеешь представления, как устроена память и что такое структуры данных.
Re[2]: Зачем просят перевернуть строку на интервью?
От: Dair Россия https://dair.spb.ru
Дата: 12.10.18 10:39
Оценка:
Здравствуйте, RussianFellow, Вы писали:

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


Усложняем задачу: теперь даже без временных переменных!
Re[10]: Зачем просят перевернуть строку на интервью?
От: AleksandrN Россия  
Дата: 12.10.18 10:46
Оценка:
Здравствуйте, Тёмчик, Вы писали:

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


Представь свой вариант переворота C-строки в однобайтной кодировке.
Re[10]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 12.10.18 10:48
Оценка: +1
Здравствуйте, Nuzhny, Вы писали:

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


N>Вот поэтому и не надо соглашаться на эти извращения! Потому что этот код мало что выглядит ужасно, но и тесты не пройдёт.


Цикл можно было сделать и красивей, но то вкусовщина. А вот у тебя проблема с C++ — код рабочий.
https://ideone.com/p0mNHc

Без индексов так и не выложил никто
Re[11]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 12.10.18 10:56
Оценка: -3 :))
Здравствуйте, AleksandrN, Вы писали:

Тё>>Те же яйца (индекс), вид в профиль.


AN>Представь свой вариант переворота C-строки в однобайтной кодировке.



void reverse( char[] s, int start, int length)
{
    if (length > 1) {
    s[start] ^= s[start+length-1];
    s[start+length-1] ^= s[start];
    s[start] ^= s[start+length-1];
    reverse(s, start+1, length-2);
    }
}
Re[3]: Зачем просят перевернуть строку на интервью?
От: Denwer Россия  
Дата: 12.10.18 11:03
Оценка: +4
Здравствуйте, Tourist, Вы писали:

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


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


T>ну, если смотреть на машину в лоб, то лево\право как бы меняються, если смотреть с заду на нее. В общем зависит от точки зрения\отсчета. Знания где лево\право может и не помочь.


А когда говорят руль слева или справа, то понятно без уточнения?
Re[10]: Зачем просят перевернуть строку на интервью?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 12.10.18 11:04
Оценка: +2 -1 :)
Здравствуйте, Тёмчик, Вы писали:

Поскипано, потому что без аргументов.

Тё>Похоже ты не имеешь представления, как устроена память и что такое структуры данных.

Аргументов,как всегда, не будет. У меня будет:
/**
    *  This is an uglified reverse(_BidirectionalIterator,
    *                              _BidirectionalIterator)
    *  overloaded for bidirectional iterators.
   */
   template<typename _BidirectionalIterator>
     void
     __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last,
               bidirectional_iterator_tag)
     {
       while (true)
         if (__first == __last || __first == --__last)
           return;
         else
           {
             std::iter_swap(__first, __last);
             ++__first;
           }
  }


Жду заявлений, что и эти разработчики "не имеешь представления, как устроена память и что такое структуры данных". Или что С++ отстой. Пофиг, главное не аргументировано.
Re[12]: Зачем просят перевернуть строку на интервью?
От: AleksandrN Россия  
Дата: 12.10.18 11:41
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>

Тё>void reverse( char[] s, int start, int length)
Тё>{
Тё>    if (length > 1) {
Тё>    s[start] ^= s[start+length-1];
Тё>    s[start+length-1] ^= s[start];
Тё>    s[start] ^= s[start+length-1];
Тё>    reverse(s, start+1, length-2);
Тё>    }
Тё>}

Тё>


Без индексов так и не выложил никто (c) Тёмчик
Re[6]: Зачем просят перевернуть строку на интервью?
От: anton_t Россия  
Дата: 12.10.18 12:46
Оценка:
Здравствуйте, IID, Вы писали:

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


IID>>>и тут жаба с г-шарпом пошли горько рыдать в уголок к питону.


_>>Не знаю кто куда пошел и зачем, но в Java изменяемая строка — это java.lang.StringBuilder, спокойно берешь и разворачиваешь Надо язык узнать, прежде чем бездарно хейтить.


IID>Ты точно программист ?


Уже после этого перехода на личности можно засчитывать слив.

IID>StringBuilder это совсем не строка

IID>И когда он в строку преобразуется (методом ToString) — строка порождается новая.

Открываем википедию https://en.wikipedia.org/wiki/String_(computer_science) , читаем первое предложение:

In computer programming, a string is traditionally a sequence of characters, either as a literal constant or as some kind of variable.

Теперь открываем JavaDoc для StringBuilder, читаем первое предложение:

A mutable sequence of characters.

К тому же StringBuilder реализует интерфейс CharSequence, который является абстракцией строки.
Дальше 2+2 каждый может сложить сам.
Re[5]: Зачем просят перевернуть строку на интервью?
От: anton_t Россия  
Дата: 12.10.18 12:48
Оценка:
Здравствуйте, Vladek, Вы писали:

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


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


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


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


Тё>>>>>и сколько времени можно на это потратить у доски?


N>>>>Просто проверить, что человек может писать код.


V>>>Любой дурак может написать код для изолированной технической задачи. Это самая лёгкая часть работы.


_>>Есть исследования, которые говорят об обратном: https://developers.slashdot.org/story/17/05/09/2019222/only-36-percent-of-indian-engineers-can-write-compilable-code-says-study

_>>Не думаю, что у нас сильно лучше.

V>Я говорил о тех, кто может пройти тест Fizz Buzz — то есть тест, который отсеивает левых людей. На вакансию программиста может откликнуться кто угодно.


V>Вообще научить программировать мелкие задачи можно кого угодно — люди будут вполне успешно писать скрипты, автоматизирующие что-то. Это банальный ликбез. Но настоящую программу нельзя склеить из отдельных скриптов или писать как большой скрипт, рано или поздно зайдёшь в тупик — нужны другие способности, способность к выведению абстракций и структурированию связей между ними, это уже не программирование с использованием готовых абстракций, это их изобретение. И тут выясняется, кто-то способен это делать, а кто-то нет и весь код их похож на бесконечные скрипты и они жутко не любят решать задачи иначе.


С этим соглашусь.
Re[7]: Зачем просят перевернуть строку на интервью?
От: IID Россия  
Дата: 12.10.18 12:56
Оценка:
Здравствуйте, anton_t, Вы писали:

_>Дальше 2+2 каждый может сложить сам.


Зачем же строке метод toString ?

Так-то сырой кусок байт тоже "sequence" и тоже может рассматриваться как строка. Тем паче что любая строка (глубоко внутри) это тоже просто набор байт.
Но только это не строка, невзирая на жонглирование терминологией.

Считаю дальнейший диалог бессмысленным.
kalsarikännit
Re[8]: Зачем просят перевернуть строку на интервью?
От: anton_t Россия  
Дата: 12.10.18 13:23
Оценка: +1
Здравствуйте, IID, Вы писали:

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


_>>Дальше 2+2 каждый может сложить сам.


IID>Зачем же строке метод toString ?


IID>Так-то сырой кусок байт тоже "sequence" и тоже может рассматриваться как строка. Тем паче что любая строка (глубоко внутри) это тоже просто набор байт.


До тебя, похоже, начинает доходить смысл слова "абстракция".

IID>Но только это не строка, невзирая на жонглирование терминологией.


Тогда назови свое определение строки.
Re[20]: Зачем просят перевернуть строку на интервью?
От: IID Россия  
Дата: 12.10.18 16:50
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

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


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


Охренеть там тараканы!
Особенно впечатлила "Изба-говорильня", где один-единственный сыроежка поражается путинскому режиму и прочим интересным вещам.

Верит ли он в бога ?

kalsarikännit
Re[10]: Зачем просят перевернуть строку на интервью?
От: IID Россия  
Дата: 12.10.18 16:53
Оценка: +2
Здравствуйте, Тёмчик, Вы писали:

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


Это провал теста на понимание работы компилятора и процессора.
Т.к. "временная переменная" это не какая-то обязательная сущность, она будет оптимизирована в загрузку регистра. Так же, как и твои трюки с битами.
kalsarikännit
Re[6]: Зачем просят перевернуть строку на интервью?
От: Somescout  
Дата: 12.10.18 17:16
Оценка: -3
Здравствуйте, Nuzhny, Вы писали:

N>template<class BidirIt>

N>void reverse(BidirIt first, BidirIt last)
N>{
N> while ((first != last) && (first != --last)) {
N> std::iter_swap(first++, last);
N> }
N>}
N>

Что-то смотрю я на этот код, и кажется мне что он будет работать только с null-terminated string. А на произвольной подстроке облажается.
ARI ARI ARI... Arrivederci!
Отредактировано 13.10.2018 8:31 Somescout . Предыдущая версия . Еще …
Отредактировано 13.10.2018 8:27 Somescout . Предыдущая версия .
Re[4]: Зачем просят перевернуть строку на интервью?
От: Somescout  
Дата: 12.10.18 17:28
Оценка:
Здравствуйте, koodeer, Вы писали:

K> Понимание кодировок — плюс. Представление об умляутах и пр. — большой плюс (но не в каждой области нужно, поэтому незнание в минус не пойдет).


Но это ведь уже знания не о строках, а об Unicode. Если это изначально не выставлялось как требование для кандидата, то вставлять такое в задачу — странно.
ARI ARI ARI... Arrivederci!
Re[10]: Зачем просят перевернуть строку на интервью?
От: VVV Россия  
Дата: 12.10.18 17:40
Оценка: -1
Здравствуйте, Тёмчик, Вы писали:

Тё>

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

Тё>У тебя получится 4 5 6 7 1 2 3.

Вы просто не умеете их готовить! Сдвиг _циклический_, поэтому работает как влево, так и вправо.

Пример:
https://ideone.com/Fw7ugX

Где ошибка в индексах? сама функция не менялась .
Re[4]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 12.10.18 18:47
Оценка:
Здравствуйте, alzt, Вы писали:

A>от сишника ждут немного другую реализацию.

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

Мда... А как дышал.
Артёмка, даже RussianFellow написал код лучше чем этот пц.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.