
Посмотреть прохождение: пистолет и карабин.




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









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

Чтобы проникнуться динамическим программированием, один из друзей порекомендовал сайт 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, но решение приняли:
Задано четыре числа. Требуется разбить их на две пары, чтобы сумма произведений в этих парах была максимальной. Например, для чисел 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
Недавно у нас рядышком открылась мужская парикмахерская и мы с Лёшкой решили в ней постричься. Как оказалось, зря. В салонах стригут заметно лучше, хотя дольше и дороже. В Часцах и то лучше стригут. А в Питере хорошая парикмахерская была у армян в какой-то подворотне на Василевском острове. У нас же только салоны красоты...
15% * (18 712,82 - 18 046,28) рублей = 99,98 рублей.
Сегодня получал пакет на нашей почте. В предбанник набились пенсионеры, через которых туда-сюда администратор проводила людей, кто пришёл за посылкой. Я подумал было, почему они пенсию на дом не выписывают, но внутри услышал разговор. Одна из пенсионерок спросила, а где её знакомая почтальонша, чтобы поговорить, а ей ответили, что работает мобильная бригада, а обычные сотрудники на изоляции.
Прислали курьером из офиса подарок. Прикольная ветровка, чуть потеплее, чем предыдущая. У этой мне очень цвет нравится, гораздо позитивнее, чем у тёмной одежды, хотя и менее практично.
Пристрелка прошла более-менее неплохо, хотя Чарли можно было бы и не делать. Стрелял достаточно кучно, что от груди (слева), что самовзводом (справа).
МатеМаша и ПрограМиша затеяли секретную переписку и, чтобы никто не мог их понять, договорились переставлять в каждом слове буквы. Расшифруйте, что написал ПрограМиша МатеМаше: «ЕЖОСЛОН НАЗИЕДА».... и весьма удивился, когда узнал ответ от Мишки...








В этом году подзадержалась. Сегодня туман, метель...var для неё. Весьма удивился, ибо это был не Kotlin, а Java. Оказывается этот JEP появился ещё в Java 10. И даже на habr его обсуждали. Надо будет поизучать, что я ещё мог пропустить. А ведь когда в Oracle работал - был на острие, а сейчас наш master работает только на Java 8 и на Java 11.