вторник, 15 декабря 2020 г.

Пересмотрели

Закончили пересматривать все 12 сезонов Теории Большого Взрыва. В связи с тем, что понравившийся мне перевод сейчас не найти, а доступный всюду перевод от Кураж Бамбей - полная фигня, мы его пересмотрели полностью на английском. С помощью субтитров, конечно, ибо в сериале много терминов, за которыми не уследить. Правда, во многих местах русские титры заметно отходили от английского текста. При просмотре в оригинале много шуток стали понятнее и смешнее - bazinga.

На Кинопоиск HD в конце предлагается бонус, в котором актёры показывают как снимался сериал. Стало понятно, что такое ситком и почему там есть закадровый смех. На самом деле каждая серия снималась вживую в декорациях перед зрителями, включая езду на машине. А закадровый смех - это эмоции зрителей в зале.

РЖД бонус

У меня есть карта от этого сайта, на которую регулярно капают баллы с купленных на семью билетов. На днях от них пришло письмо (т.е. они знают мой email), что была попытка взлома и надо бы сменить пароль. Однако, при попытке авторизации меня направляют на страницу восстановления пароля, где нужно ввести номер карты и всякие данные, типа фамилии матери и другой информации, ранее используемых для банков. Восстановления через email нет, поэтому всё выглядит как-то стрёмно...

понедельник, 14 декабря 2020 г.

Потоп

Сегодня на нас опять наехала соседка, что у неё звонок постоянно звонит. Оказалось, что сверху нас заливают прямо по стояку с проводами, где электрощиток.

Поставил в известность соседей сверху и позвонил по 004, чтобы решили проблему.

Вот это да!

Где-то полчаса назад отрубились сервера Google - поросли все рабочие митинги через Google Meet, отвалилась почта... Даже youtube не посмотреть!

Что это такое было?

суббота, 12 декабря 2020 г.

Токио-City

Пошли к метро Мишку встречать, который сегодня в ЮМШ занимался один одинёшенек. Решили зайти поужинать, а там - аншлаг! Минут 15 пришлось толпиться в предбаннике.

Бесплатный аккаунт

Пока мой основной аккаунт болтается в центре галактики я решил присоединиться к нашей эскадрилье и немного повоевать на втором аккаунте. Начальный Sidewinder снарядил для боя и полетел в зону конфликта высокого уровня. Корветы лопались один за одним! А всё потому, что в крыле со мной были дружественные Anaconda и Federal Corvette. Вначале у меня было заработано около 2M кредитов, так на одних ваучерах я поднял 5М, а ещё связанную с боёвкой миссию выполнил - ещё 11М. Это, конечно, неплохой старт, но потом соратники поделились парой миссий по 50М каждая и я решил прикупить боевой Alliance Challenger.

пятница, 11 декабря 2020 г.

Сидячая тренировка


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


Ну а под конец мы пытались на время обстрелять металл сидя, а бумагу - стоя. У меня получилось около 12 секунд.

Pillars of Eternity

У меня уже давно в списке желаемого на Steam лежит эта игра. Но сейчас её бесплатно раздают в Epic Games и есть шанс попробовать. По отзывам - должна быть добротная RPG.

четверг, 10 декабря 2020 г.

JetBrains Space

У нас вчера официально представили новый продукт для обустраивания командной работы. Всё находится внутри одной вкладки браузера. На мой взгляд, у такого подхода только один минус - дизайн рассчитан на большие мониторы. На моём 15" ноуте не очень комфортно - приходиться мышкой всё делать.

Sagittarius A*

Вот я и долетел до центра нашей галактики. Черная дыра тут гораздо больше, чем там, но обе они не такие уж и чёрные. В игре эта система представлена двойной системой, где в противовес сверхмассивной чёрной дыре присутствует массивная звезда, но в реальности там всё сложнее.

Поснимал видео, как я там летаю:


В соседней системе построили станцию для путешественников, куда я залетел починиться и сдать данные об исследованных системах и планетах. В сумме заработал около 100М, а исследовательский ранг у меня и так Elite.

среда, 9 декабря 2020 г.

Сули Гули

В честь дня рождения пошли сегодня за халявным тортиком, который приносят имениннику. Поднялись на четвёртый этаж, где вход напротив кинотеатра, а там перекрыто и сказано, что надо подниматься по отдельной лестнице. В Токио-City, где мы были недавно, так же. Выяснилось, что это постановление правительства о закрытии блоков питания, не имеющих отдельного входа с улицы. На мой взгляд, это такой же идиотизм, как и всё остальное, связанное с коронавирусом. Мне по-любому пришлось зайти в торговый центр, подняться на лифте, вернуться на улицу, а потом подниматься по отдельной лестнице, задыхаясь в маске.

Тут мы ему подарили новый телефон и потом сидели, настраивали, переносили данные со старого.

15 лет стукнуло


Как молоды мы были! С этого года Мишке разрешается посещать врачей без присутствия родителей.

Код - это сила!

Чтобы проникнуться динамическим программированием, один из друзей порекомендовал сайт CodeForces. Там можно зарегистрироваться с сыном и выполнять различные задачи из архива. Ну и проверять решение тоже можно. Поддерживается куча языков, даже Kotlin! Хорошая возможность прокачать навыки ещё и в нём.

Я не удержался и сходу решил несколько самых лёгких задач, чтобы опробовать возможности системы:


Судя по всему мне придётся привыкать, что всякие проверки - от лукавого. Для олимпиадного програмирования не нужно проверять входные данные, что позволяет писать код короче:
fun main() {
    val index = readLine()!!.split(' ').map { it.toInt() }[1] - 1
    val list = readLine()!!.split(' ').map { it.toInt() }
    val min = list[index].coerceAtLeast(1)
    println(list.filter { it >= min }.count())
}
Это пример решения задачи Следующий раунд. Как можно заметить, я игнорирую нулевой результат readLine(), а из первого массива беру только второе число, так как первое понадобилось бы только для проверки длины второго массива. Не уверен, нужно ли задавать нижнее значение min как 1, но решение приняли:

понедельник, 7 декабря 2020 г.

Политическая шутка

Fallout - вообще нереалистичная игра. Сотни высокотехнологичных убежищ, в которых люди могут жить в изоляции на протяжении десятков лет? Ага, ЩАЗ. На следующий же день после атомной бомбардировки двери убежищ будут сломаны с криками: "У нас есть права!", "Не могу дышать этой норе!", "Я хочу чизбургер и диетическую ядерколу!" (отсюда)

воскресенье, 6 декабря 2020 г.

Подготовка

Мишу из школы направляют на региональную олимпиаду по информатике и выдали примеры задач для подготовки. Он их делает на Питоне, а потом мы сложные случаи разбираем. Задачи проверяются на сервере, который работает с 9 утра до 9 вечера. Ограничения для всех задач: по времени - 2 секунды, по памяти - 256 мегабайт. Задачи очень разные! Есть элементарные:
Задано четыре числа. Требуется разбить их на две пары, чтобы сумма произведений в этих парах была максимальной. Например, для чисел 2,3,4,5 надо вывести 26 (2*3+4*5).

А бывают архисложные, требующие подключения серьёзного математического аппарата:
Для целого положительного числа от 1 до 1000 требуется найти число способов представить его в виде суммы нечётных слагаемых. Порядок слагаемых неважен. Например, для числа 6 надо вывести 4. Сами разбиения выводить не надо:
[1+1+1+1+1+1], [3+1+1+1], [3+3], [5+1]

Я сначала решил "в лоб" - прямым перебором, используя Set для фильтрации. Потом ускорил в несколько сотен раз, отказавшись от Set. Это позволило мне обнаружить, что происходит переполнение для больших чисел. Посему мне пришлось заменить long на BigInteger, замедлив программу раза в два.
fun count(array: IntArray, size: Int): BigInteger {
  var count = BigInteger.ONE
  val size2 = size - 2
  if (size > 2 && array[size - 1] == 1 && array[size2] == 1) {
    array[0] += 2
    count = count.plus(count(list, array, size2))
    array[0] -= 2
    var index = 0
    while (++index < size2) {
      if (array[0] == array[index]) continue
      if (array[0] == array[index] + 2) {
        array[index] += 2
        count = count.plus(count(list, array, size2))
        array[index] -= 2
      }
      break
    }
  }
  return count
}
Тут стало очевидно, что после 170 мы перестаём укладываться в две секунды и подсчёт ответа для 400 занял более двух дней:
in: 100; out: 444793; time: 21 ms
in: 200; out: 487067746; time: 7958 ms
in: 300; out: 114872472064; time: 1873429 ms
in: 400; out: 11962163400706; time: 196301147 ms

Написал код для вывода комбинаций и пытаемся анализировать, чтобы для получившейся выше рекурсивной функции вывести формулу, ибо полный перебор - это уже перебор. 8)

суббота, 5 декабря 2020 г.

Genco Barbers

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

пятница, 4 декабря 2020 г.

И так бывает

Не прошло и шести лет, как я обнаружил, что у Stavic при длинном нажатии на кнопку запускается автоматическое опускание стекла. Причём работает это только с кнопкой для водительской двери и только на опускание.

У Scenic автоматическое опускание и поднимание стёкол работало для всех дверей и было более интуитивно понятным.

Тренировка

Сегодня фотографий не будет, ибо я оставил телефон в машине. Занимались короткими и широкими переносами, учились менять темп стрельбы в зависимости от расстояния до мишени и работали с таймером. У меня лучшее время - 6.6 секунды на 5 попперов.

Почта

У Мишки стал глючить его Galaxy A3 и мы решили подарить ему новый телефон на день рождения. Заказал ему новый на AliExpress. Оказалось, что там тоже пошлину надо платить.
Даже прислали формулу расчёта таможенного платежа:
15% * (18 712,82 - 18 046,28) рублей = 99,98 рублей.

Сегодня получал пакет на нашей почте. В предбанник набились пенсионеры, через которых туда-сюда администратор проводила людей, кто пришёл за посылкой. Я подумал было, почему они пенсию на дом не выписывают, но внутри услышал разговор. Одна из пенсионерок спросила, а где её знакомая почтальонша, чтобы поговорить, а ей ответили, что работает мобильная бригада, а обычные сотрудники на изоляции.

среда, 2 декабря 2020 г.

Мусорная реформа

У нас к клетке для пластика добавили контейнер для бутылок. Бутылка запихивается с трудом - дырка не разработана: