Как стать автором
Обновить
1
0

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

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

"Если сравнивать с более молодыми версиями себя, то, по ощущениям, я на пике. ..., я сейчас умею гораздо больше, чем пятнадцать лет назад, и, надеюсь, гораздо меньше, чем буду уметь через пятнадцать лет" - забавно автор надеется быть в середине возрастающей функции, но по ощущениям ожидает спад

Спасибо за задачки, довольно простые и на известные темы. Вот мои решения:

Решения
def solve1(A, B):
    A = Counter(A)
    B = Counter(B)
    return [a for a in A if a in B for _ in range(min(A[a], B[a]))]

def solve2(S):
    ans = []
    start = 0
    for end in range(1, len(S) + 1):
        if end == len(S) or S[end] != S[start]:
            ans.append(S[start])
            if end - start > 1:
                ans.append(str(end - start))
            start = end
    return ''.join(ans)

def solve3(A):
    S = set(A)
    ans = []
    while S:
        x = next(iter(S))
        while x - 1 in S:
            x -= 1
        y = x
        while y in S:
            S.remove(y)
            y += 1
            
        if y - x == 1:
            ans.append(str(x))
        else:
            ans.append(f"{x}-{y-1}")
    return ','.join(ans)

def solve4(A):
    ans, curr, prev = 0, 0, 0
    for a in A:
        if a == 1:
            curr += 1
        else:
            curr, prev = 0, curr
        ans = max(ans, curr + prev)
    return ans

def solve5(A):
    B = []
    for a, b in A:
        B.append((a, 1))
        B.append((b, -1))
    ans, c = 0, 0
    for x, d in sorted(B):
        c += d
        ans = max(ans, c)
    return ans

def solve6(A):
    B = defaultdict(list)
    for a in A:
        B[''.join(sorted(a))].append(a)
    return list(B.values())
    
def solve7(A):
    A.sort()
    B = []
    for a, b in A:
        if B and B[-1][1] >= a:
            B[-1][1] = max(B[-1][1], b)
        else:
            B.append([a, b])
    return B

def solve8(A):
    I = defaultdict(list)
    for x,y in A:
        I[x].append(y)
    X = list(sorted(I))
    cx = (X[-1] + X[0]) / 2
    ai, bi = 0, len(X) - 1
    while ai < bi:
        if cx - X[ai] != X[bi] - cx:
            return False
        A, B = I[X[ai]], I[X[bi]]
        if Counter(A) != Counter(B):
            return False
        ai += 1
        bi -= 1
    return True
    
def solve9(A, B):
    if len(A) == len(B):
        return sum(a != b for a, b in zip(A, B)) <= 1
    if len(A) > len(B):
        A, B = B, A
    if len(A) + 1 != len(B):
        return False
    d = 0
    for i, a in enumerate(A):
        if a != B[i + d]:
            if d == 1:
                return False
            d += 1
    return True

def solve10(A, target):
    S = {0: -1}
    c = 0
    for i, a in enumerate(A):
        c += a
        if c - target in S:
            return (S[c - target] + 1, i + 1)
        S[c] = i



* Запрещать Counter глупо, если его нет ну можно потратить минуту и написать свой MyCounter с аналогичными возможностями.

* Переменные так называются потому что на интервью стоит экономить время и не думать про названия переменных, ну и после 700+ задач на литкоде мне уже лень думать.
вы сосредоточились на отборе в пользу умных, но ведь ясно что работает другой вариант отбора — низкая рождаемость у людей с низким интеллектом
В квантовой физике есть No-Cloning теорема, которая запрещает копировать квантовые состояния. Соответственно, вопрос, является ли мозг человека квантовым компьютером или нет? Оба варианта ведут к интересным выводам:

Если нет, значит можно копировать мозг человека, но непонятно, зачем уничтожать оригинал. Более того, уничтожение оригинала будет убийством. Можно скопировать 1 сильного ученого несколько раз, и они образуют консилиум. Перед тем, как сделать что-то опасное можно сделать запасную копию, как нажать кнопку «Сохраниться» в игре.

Если сознание человека сильно зависит от квантовых эффектов (например, они могут давать свободу воли), то этих проблем не будет. Нельзя будет сделать копию, можно будет лишь телепортировать ваше уникальное квантовое состояние, но при этом законы физики уничтожат оригинал.
А что если каждому паттерну сопоставить число, разным понятиям — разные числа. Тогда, вместо определения знаком ли паттерн, каждая клетка будет смотреть знакомое ли число сквозь нее проходит. Несколько сигналов — через клетку проходит несколько чисел. Не будет ли такой алгоритм полностью аналогичен вашему, но с гораздо более простыми и вычислениями?
Это очень жестокая и злая позиция.
Я уверен, все же будут и модули уклонения, и модули выбора наименьших потерь, а если дети будут играть — ну и ладно, штрафы можно наложить, воспитание через штраф лучше чем воспитание через физический ущерб
Допустим автопроизводитель сделает по вашему, тогда, как только на дорогу выбежит ребенок, и автопилот его собьет в хлам, сразу общественность потребует модуль уклонения и модуль оценки важности жизни. Если ребенок выбежит на скоростное шоссе — ну понятно, что ничего не сделать, а если это второстепенная дорога и авто едет со скоростью 30 кмч и можно даже в бетонную стену вырулить, никто не умрет. Все равно придется решать все эти вопросы морали и оценки
У меня почти такое же решение, все аналогично кроме «удалил редко используемые словами, но часто используемые не-словами биты.». Остальное все то же — замена аффиксов, мусор по 2 символа, длина, гласные согласные, мелкий блум на первые 3 символа. Но я видимо поленился подбирать параметры лучше, или где-то накосячил, так как у меня 80.6%. Но все что вы описали — ровно такой же алгоритм. В мой большой блум на 61000 байт я запихивал 250к слов
Я отправил решение, а как проверить что оно корректно отработало на ваших серверах? Не хотелось бы из за какой-нибудь мелочи потерять несколько дней работы
Шутки ради — можно взять с собой дизель генератор и заправляться по дороге.
В идеале контроллеры должны быть слишком тупы, чтобы их покрывать тестами, нам это никогда не понадобится, если и покрывать их, то интеграционными тестами


Я за этот вариант, потому что есть дополнительный плюс. Представьте что в контроллере у вас есть интересный код, который потребовался вам, ну например, в вебджобе, или в другом сайте. Что будете делать зависимость от этого веб проекта? Нет, придется утаскивать в некоторую библиотеку. Поэтому можно сразу делать все этой библиотеке, а в контроллерах оставлять только самый наитупейший код, который работает на очень высоком уровне абстрагирования, такой код и тестировать не захочется. Один минус что придется пробрасывать вызовы из контроллера в вашу либу, ну да и ладно, зато уходим от всех проблем борьбы с чужими фреймворками
Также нежелательно смешивать linq синтаксис и вызовы extension методов

Чем смешивать плохо, какие аргументы?

Я имею в виду такое, допустим код вида
(from b in a where .... select ...).ToArray(...).Where(...) ...

То ее если ее переписать в длинную цепочку как
a.Where(...).Select(...).ToArray(...).Where(...) ...

То дебажить и исследовать их одинаково тяжело, а вот читать первую мне больше нравится. Особенно, если в выражении есть group by и join, которые в extension методах смотрятся очень плохо.

Было бы здорово услышать аргументы против
Кроме обоих Microsoft Band'ов, конечно

А, собственно, почему?
В уме можно, минут за 10:

836 * 423 = (1000 — 164) * (500 — 77) = (500к — 77к — 82к) + 164 * 77 = 341к + 164 * 77

341к запоминаем и считаем второе слагаемое:
164 * 7 = 700 + 420 + 28 = 1148
164 * 77 = 11480 + 1148 = (11к + 480) + (1к + 148) = 12к + 628 = 12628

итого 341к + 12628 = 355 628
Ну нет, я считаю это все ближе чем тысячи лет, но это мое личное мнение. Мне кажется, дело не в том, через сколько лет мы физически улетим колонизировать, дело в потенциальной возможности. Смотрите, есть четыре варианта ситуации — мы единственные, мы первые, мы посредственные, точная настройка. Допустим мы посредственные, тогда нет никакого резона ждать пока конкретно наша цивилизация на самом деле куда-то полетит, важна лишь теоретическая доступность. Ну и пока, в теории, принципиальных серьезных барьеров не видно. Может, конечно, окажется что в межзвездном пространстве есть много темной материи и она непреодолимо все уничтожает, но пока мы об этом не знаем.
В той ситуации, в которой великий фильтр впереди, есть аргументы считать что он довольно близко впереди. Почему? Потому что текущая космонавтика близка к освоению галактики, пусть полеты будут многолетними, пусть на каждой планете нужно будет по тысяче лет чтобы строить инфраструктуру, тем не менее, мы довольно близки. Стало быть, в этом случае, любая новость которая приближает технологию к освоению вселенной, является плохой новостью, поскольку приближает наступление того фильтра, который останавливает цивилизации от распространения
Это верно, либо получить, либо сгенерировать самому. Но, например, если вы используете автоинкрементный идентификатор, и получаете его от БД после вставки, то это не совсем чистый CQRS, но, по моему мнению, вполне приемлемо. Вопрос чистоты CQRS тесно связан с производительностью, пока БД выдерживает такие вставки — ну почему нет, на здоровье.
Если вам нужен результат операции, то в CQRS кто-то обязательно должен ждать пока модель на чтение не обновится. Или ждет браузер (несколько http запросов), или ждет сервер (делая такие-же точно запросы к модели на чтение, и удерживая http соединение). По мне, ждать браузером предпочтительнее.
Самым удачным техническим открытием для человечества стала бы возможность путешествия в параллельные миры. Космос колонизировать очень трудно — вся эта борьба с условиями окружающей среды, борьба со скоростью света и т.п. Если бы был простой способ перемещаться между мирами разных вселенных, то зачем вообще цивилизации осваивать космос и тратить на это огромные ресурсы? Это объяснение близко к объяснению номер 9. Мы не наблюдаем других цивилизаций потому, что другим цивилизациям не интересно колонизировать космос. Конечно, такое объяснение просто «раздувает» доступную вселенную и парадокс Ферми все равно в каком-то виде остается, но можно, раз уж мы начали фантазировать, добавить разных интересных ограничений чтобы парадокс разрешить — например, можно допустить что перейти во вселенную можно только если в этой вселенной появляется достаточно сильный разум чтобы построить портал для перехода и т.п.
1

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность