Как стать автором
Обновить
22
17
Андрей @IIvana

Пользователь

Отправить сообщение

Очень интересная книга, спасибо за то, что взялись переводить! Теоретически это должно помочь легче ознакомиться с содержанием книги людям типа меня, которые не настолько хорошо читают оригинал на английском. Но еще пара таких переводов, и я предпочту читать в оригинале.

Дело в том, что вы просто не знали, что я на этой задачке пол-собаки съел в свое время ))) Вот например еще один выставочный специально селекцированный кот для нее — для эстетов:


const validBraces = (s) => {
  var it = s[Symbol.iterator]();

  const f = (i, a) => {
    const b = it.next().value; 
    return !b ? i==0
           : '([{'.includes(b) ? f(i+1, b) && f(i, a)
           : ['()','[]','{}'].includes(a+b);     
  }
  return f (0, ' ');
}

Вы демонстрировали полное невежество и непонимание (у Хабра все посты записаны), неоднократно садясь в лужу, а сейчас пытаетесь "сохранить лицо", хотя уже давно всем все понятно ) Можете минусовать, ибо похвалы от вас я бы стыдился )


ЗЫ про кота с буквами — ну децкий сат же.


const validBraces = (s) => {
  const go = (s) => {
    const z = s.replace('()','').replace('[]','').replace('{}','');
    return z==s ? z=='' : go(z);
    }
  return go(s.replace(/[a-zA-Z0-9éèêëùüàâöïç \n\r]/g,''));
}

Если оставлять исходный алгоритм — то тривиально сначала зареплейсить исходную строку, оставив в ней только скобки, и скормить это вышеприведенному (или чуть доработанному для множественных замен с г-модифайером) коту.

Глобальная переменная, мутабельность, вызов функции как процедуры. И самое главное — это банальнейшая задачка на свертку, а решение показывает неумение автора кота решать даже простейшие задачи через чистые функции без побочных эффектов. Значит во всех подобных задачах будут возникать эти сложности и костыли в решении.

Обожаю комментаторов с Хабра ) Я и не знал что принимает реплейс — поэтому просто посмотрел в документацию:


The replace() method searches a string for a specified value, or a regular expression, and returns a new string where the specified values are replaced.
Note: If you are replacing a value (and not a regular expression), only the first instance of the value will be replaced. To replace all occurrences of a specified value, use the global (g) modifier

А алгоритму фиолетово — онли ферст инстанс или все сразу. И да, я проверял свой код. А вы, похоже — нет. Просто сразу кинулись писать опровержение, не удосужившись проверить. Второй комментатор из той же серии ) Да, будет замена только первого совпадения. Да это делает алгоритм работоспособным, и это очевидно любому.


А про квадратичность — преждевременная оптимизация сами знаете что )

После этих слов видно, что с JS вы далеко на «Вы». В чем смысл было комментировать, если с языком плохо знакомы?

Да, на Вы. Но все представленные задачки делятся условно на 2 класса — JS-специфичные и общеалгоритмические, допускающие решение на любом языке. Не вижу причин не комментировать вторые, даже если с языком на Вы. Особенно, если они в оригинале решены неправильно или неоптимально. Особенно, если я догадываюсь, что в JS все-таки есть множества, но о них никто не вспомнил при решении.

ЗЫ я не собеседую программистов (собеседовал лет 15 назад), но такой кот


var sum = 0;

function getSum(obj) {
    sum += obj.valueNode;
    if (obj.next != null) {
        for (var i = 0; i < obj.next.length; i++) {
            getSum(obj.next[i]);
        }
    }

    return sum;
}

скорее сработал бы в минус кандидату, чем в плюс. Не говоря уже про ипические "иф тру ретурн тру элсе ретурн фалс", по которым уже проехались выше.

const validBraces = (s) => {
  const z = s.replace('()','').replace('[]','').replace('{}','');
  return z==s ? z=='' : validBraces(z); 
}

И сортировка провалится на


sameWords(['tokkkkkk', 'okttttttttttt'])

В нормальных языках это решается через структуру данных множество, или ее костыльную эмуляцию через мап или хэшмап. В js же сейчас по слухам тянут все на свете, "да косу еще впридачу, да лопату с мясорубкой" (С) А множества до сих пор не притянули?

Вопрос 1 — n=10. Решал по-честному, с уравнением (14+k)/(14+2k) = 17/20


Задача 1 как всегда решается в одну строчку на неземном и волшебном


f l k = concat . take k . tail . iterate (liftM2 (:) l) $ [[]]

main = print $ [f "ab" 3, f "abcd" 1]

[["a","b","aa","ab","ba","bb","aaa","aab","aba","abb","baa","bab","bba","bbb"],["a","b","c","d"]]

1 вопрос — Гаусс, Карл! (С). Который решал ее в детстве безо всяких экселей.


1 задача
f = (=<<) (\s -> head s : show (length s)) . group

3 задача
h = map snd . sort . map (\s -> (sort s, s))

ЗЫ детство Карла какое-то. Прошлая серия и то была интереснее.

Понял свою ошибку.

Многабукаф (С) Но я чет не понял — f(x) = |x^3| у нас теперь многочлен?

Гриммируют еще. И делают пластические операции.

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

Отличная статья! Только автору вправило мозги когда он перенес серьезные проблемы со здоровьем — начал ценить жизнь, время… А сейчас он пытается добиться хоть какого-то эффекта, мягко вправляя мозги своим пациентам, помогая им справляться с бытовым сплином. И допускаю, что процент неудач высок — потому что пока жареный петух не клюнет — хрен кто почешется.
Один несостоявшийся самоубийца — прыгун с моста, говорил в интервью, как в последнюю секунду толчка он вдруг резко осознал, как сильно хочет жить. А ухватиться за перила уже не мог — смог только толкнуться так, чтобы войти в воду ногами, остался инвалидом на коляске, но по его словам живет гораздо полноценнее, чем до прыжка.
Один парень из моей школы — воровал, насиловал девушек… Проломили голову в драке — выжил, все считают что тронулся умом: ходит босиком круглый год, здоровья немеренно, с прошлой жизнью порвал совсем.
Мой друг, наелся горы таблеток — перед потерей сознания успел сказать маме, что он сделал это и не знает зачем. Скорая, реанимация, потом долгая психбольница — сейчас в паре предложений невозможно описать, насколько изменилась его жизнь — от системы ценностей до ежеминутной практики — он тот самый герой 3-2-1 о котором упоминалось в статье, даже 3-0 я бы сказал.
Ваш покорный слуга — двух передозов оказалось недостаточно, после третьего все химические эффекты прошли — а сознание из картонно-пластилинового мира так и не вернулось, плюс постоянные приступы панических атак. И потом долгие годы той же психбольницы, где насмотрелся всяких чудес...


В общем, серьезные переосмысления жизни зачастую происходят в результате серьезных потрясений. А не в результате чтения статей в интернете — что и подтверждают комментарии.

При длине массива 22 он выполняется 5 секунд, дальше — больше.
Но я и не утверждал что это оптимальный алгоритм. Это наивный перебор даже без отсечений, которые тут несложно добавить. Я посмотрел на тестовые данные и понял, что такого кота вполне хватит. А преждевременная оптимизация, как известно, зло :)

Но ведь это отлично, что сложившаяся ситуация такова. Потому что на этом фоне у компаний, которые сделают процесс найма лишенным перечисленных недостатков (да, у всех трех таких компаний )))) будет возможность нанимать устраивающих их сотрудников. Когда-то Генри Форд писал, что надо сделать, чтобы к тебе стояла очередь из лучших специалистов твоих конкурентов. А тут ситуация сама благоволит к этому )

Вопрос 1 — 6*6 > 31 так что задача решаема. Вариантов — море, простейший — 6-ричная система.

Информация

В рейтинге
442-й
Откуда
Воронеж, Воронежская обл., Россия
Дата рождения
Зарегистрирован
Активность