class Solution {
private data class Head(
val direction: Int,
var index: Int,
var value: Int = 0,
) : Comparable<Head> {
override fun compareTo(other: Head): Int = value.compareTo(other.value)
}
fun trap(data: IntArray): Int {
var sum = 0
val ltr = Head(
direction = 1,
index = -1,
)
val rtl = Head(
direction = -1,
index = data.size,
)
do {
val smallestHead = minOf(ltr, rtl)
val nextIndex = smallestHead.index + smallestHead.direction
val nextValue = data
.getOrElse(nextIndex) { 0 }
when {
nextValue > smallestHead.value -> {
smallestHead.value = nextValue
}
else -> {
val rem = smallestHead.value - nextValue
sum += rem
}
}
smallestHead.index = nextIndex
} while (ltr.index != rtl.index)
return sum
}
}
Еще одна новая функция ransomware — использование модуля машинного обучения, что позволяет зловреду определять необходимые размеры окна сообщения, адаптируя его под размеры экрана и другие особенности устройства. Поскольку моделей планшетов и телефонов на Android великое множество, то для ransomware это крайне полезное «умение».
А при чем здесь какое-то машинное обучение, если система никак не скрывает размеры экрана?
По содержанию статья похожа на написанную человеком, который до Kotlin видел только Java.
Очень странный момент — возможность не указывать возвращаемый тип метода (особенно публичного).
fun width() = right - left
Цепочки вроде ?.let { foo(it); }?.let { bar(it); } — это вообще ад и должны быть запрещены в декларации о правах человека.
В конкретно этом примере правильнее скорее будет ?.let(::foo)?.let(::bar).
Хотел проехать по всем пунктам, но не стал. Напишу лучше только что мне самому не нравится в этом языке:
1. Такая форма записи не сработает val color: Int = 0xFFFFFFFF.
2. Наличие type-erasure доставшееся от того же JVM.
3. Ограничения с наследованием data class-ов.
3. Конфликты с методами-сеттерами и обычными полями с сеттерами. open class Foo {
fun setValue(value: int) {}
}
class Bar: Foo() {
var value = 10
}
Нашел проблему. Оказывается, при включенной опции Offline work и доступном интернете Gradle не ищет репозитории онлайн. :/Отключил опцию и все заработало.
Хм, можно и одним проходом:
Собственно и изобретать не придется
А при чем здесь какое-то машинное обучение, если система никак не скрывает размеры экрана?
fun width() = right - left
В конкретно этом примере правильнее скорее будет
?.let(::foo)?.let(::bar)
.Хотел проехать по всем пунктам, но не стал. Напишу лучше только что мне самому не нравится в этом языке:
1. Такая форма записи не сработает
val color: Int = 0xFFFFFFFF
.2. Наличие type-erasure доставшееся от того же JVM.
3. Ограничения с наследованием
data class
-ов.3. Конфликты с методами-сеттерами и обычными полями с сеттерами.
open class Foo {
fun setValue(value: int) {}
}
class Bar: Foo() {
var value = 10
}
После Java язык как глоток свежего воздуха.
И хотелось бы PullDownToRefresh из стандартной библиотеки, А не собственной реализации.
— От иконок веет связью с iOS;