Обновить
4
0,1
Рейтинг
2
Подписчики
Отправить сообщение

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

на картинке всего 5, но это неважно

Это как раз важно) Добавим, например, "среднюю черную", и все диалоги о том, кто что знал, станут бесполезными без упоминания конкретных размеров и цветов

Ну вот например почему бы не быть красной маленькой коробке? Или чёрной большой? Или синей большой?

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

Да, в таком ключе боты и отжигали. Вроде баг, но по факту это оказалось фичей. Особенно постановка динамита, после которой четыре балбеса иногда ржали в голос )

Классика жанра: ведущий загадал два целых числа m и n (1 < m < n < 100). Чуваку П сказали их произведение, чуваку С - их сумму, так же П знает, что С знает сумму, и наоборот, и оба они знают ограничения. Далее разговор:

П: я не знаю числа.
С: я так и знал, что ты не знаешь числа.
П: теперь я знаю числа.
С: теперь я тоже.

Чему равны m и n? Выглядит громоздко, но после всех рассуждений перебор сокращается примерно до 5 вариантов.

Имеется в виду, что Кэролайн не знала, в какой коробке приз. То есть цвет не черный.

Первая задача

Приз в маленькой синей, Сьюзен узнала об этом раньше. Цвет не черный (Кэролайн не знала) и не красный, иначе Кэролайн могла предполагать, что Сьюзен знает, в случае уникальной средней коробки. После её слов Сьюзен поняла, что синий. Коробка маленькая, иначе на старте Сьюзен могла предположить, что цвет черный и Кэролайн знает.

Вторая

Приз в А3. Роланд сообщил, что строка не 2 и не 1 (в первой строке Кристофер мог знать С1). После этого Кристофер определился, значит столбец А

Мы с пацанами играли в Worms обычно в одной команде, против 3 команд ботов (каждая команда - за себя, то есть без союзов). Нас было четверо, как раз по количеству бойцов в команде, и каждый играл за своего червя. Да, брать в руки джойстик получалось нечасто, но в целом было очень весело, куча приколов, да ещё боты иногда не просто тупили, а смешно тупили.

По разному бывает. У меня из прочитанного в последние годы самым "событийно-нагруженным" оказался цикл "Плюс-минус" на АвторТудей, написанный в настоящем времени. Там такой непрерывный экшн, что немного укачивало иногда.

Кстати, можно сделать ещё так:

type DistributiveOmit<T, K extends PropertyKey> = {
    [P in keyof T as P extends K ? never : P]: T[P];
} & {};

Почему это работает? Потому что мэппинг по ключам объекта умеет в дистрибутивность по этому объекту.

Очевидно, с Pick та же проблема. Он превращает, например, discriminated union в мешанину:

type T1 = {type: 'preved'; data: string} | {type: 'medved'; data: number};

type T2 = Pick<T1, 'type' | 'data'>;

А как доказать, что оно уменьшается на какую-то ограниченную снизу длину?

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

или бОльшей суммарной длиной отрезков.

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

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

Подход хорош только для числа, состоящего из небольших делителей.

React сначала выполняет все эффекты родителя, потом дочерние

Эффекты - наоборот, сначала дочерние. А вот рендер сначала выполняется родительский.

Бесконечный ререндер из-за useEffect видел в чуть более хитрой форме:

type Props = {arr?: string[]};

function Component({arr = []}: Props) {
  // ...

  useEffect(() => {
    // обновляем состояние
  }, [arr]);

  // ...
}

Если в такой компонент не передать проп arr, то будет бесконечный ререндер, потому что в arr попадает каждый раз новый пустой массив.

Лошади работали за еду. Как представители некоторых из перечисленных в статье профессий.

Я познакомился с червячками еще во времена Sega. Мы с двумя друзьями могли просиживать за одной консолью часами почти каждый день вместо после школы

Всё то же самое, только нас было четверо) Офигенные воспоминания, спасибо

В 2015 году Internet Explorer удерживал около 80% рынка

Тут наверно опечатка, какой-то другой год

Интересно, когда в Playground появится? Там по идее просто надо втащить wasm-сборку

Моя любимая игра с 2003 года. Изредка сдуваю пыль, шатаю компов или перепрохожу миссию из кампании. По сети не играю, ибо рукожоп. Retold глянул на видео, не зашло, не стал устанавливать - на компе старая добрая версия из нулевых. Раньше обожал стримы Гарклава (Грумпича), иногда пересматриваю.

1
23 ...

Информация

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

Специализация

Фронтенд разработчик
Старший
JavaScript
TypeScript
React
HTML
CSS
Веб-разработка
Redux
MobX
Webpack