Size: a a a

Kotlin Community

2021 January 04

S

Sanctus in Kotlin Community
Ilmir
Можно попробовать делегировать запуск мавену
Интересный вариант, это помогло, после запуска вернул настройки обратно и всё начало запускаться в обычном режиме. Это магия 😊  Спасибо!
источник

AN

Alexander Nozik in Kotlin Community
Sanctus
Интересный вариант, это помогло, после запуска вернул настройки обратно и всё начало запускаться в обычном режиме. Это магия 😊  Спасибо!
Лучше не надо обратно.
источник

L

LevT in Kotlin Community
Iaroslav Postovalov
а в контексте учебника есть
Всё-таки ещё не хватает умений/понимания
Вот есть годные заготовки

fun Sequence<Int>.solution(f: (Int) -> Boolean) =
   filter { it -> (2..it).count { f(it) } == 3 }

fun f(n:Int) = (n..1000).filter {n % it == 3}

и есть подсказанный скала компилером (не котлином) рефакторинг (filter.andThen(size)) -> count

Как продолжить (1..1000).asSequence().  ?
источник

IP

Iaroslav Postovalov in Kotlin Community
LevT
Всё-таки ещё не хватает умений/понимания
Вот есть годные заготовки

fun Sequence<Int>.solution(f: (Int) -> Boolean) =
   filter { it -> (2..it).count { f(it) } == 3 }

fun f(n:Int) = (n..1000).filter {n % it == 3}

и есть подсказанный скала компилером (не котлином) рефакторинг (filter.andThen(size)) -> count

Как продолжить (1..1000).asSequence().  ?
(1..1000).asSequence().solution { it % 2 == 0 }
источник

AM

Andrew Mikhaylov in Kotlin Community
LevT
Всё-таки ещё не хватает умений/понимания
Вот есть годные заготовки

fun Sequence<Int>.solution(f: (Int) -> Boolean) =
   filter { it -> (2..it).count { f(it) } == 3 }

fun f(n:Int) = (n..1000).filter {n % it == 3}

и есть подсказанный скала компилером (не котлином) рефакторинг (filter.andThen(size)) -> count

Как продолжить (1..1000).asSequence().  ?
Мне кажется, если вы чистые функции, каррирование и прочее осваиваете, ресиверы неявные неуместно использовать.
источник

L

LevT in Kotlin Community
Iaroslav Postovalov
(1..1000).asSequence().solution { it % 2 == 0 }
Не так просто. Развернуться должно в
fun solution(f: (Int) -> Boolean) = (1..1000).asSequence().filter { (2..it).count { j -> f(j) } == 3 }
источник

IP

Iaroslav Postovalov in Kotlin Community
LevT
Не так просто. Развернуться должно в
fun solution(f: (Int) -> Boolean) = (1..1000).asSequence().filter { (2..it).count { j -> f(j) } == 3 }
как раз таки так просто
источник

IP

Iaroslav Postovalov in Kotlin Community
я сейчас в своих токенах уверен
источник

L

LevT in Kotlin Community
Iaroslav Postovalov
я сейчас в своих токенах уверен
Двойка не при делах (просто внутри нет смысла перебирать от единицы),
а самая внутренняя лямбда от двух параметров return n % j == 0
источник

L

LevT in Kotlin Community
Andrew Mikhaylov
Мне кажется, если вы чистые функции, каррирование и прочее осваиваете, ресиверы неявные неуместно использовать.
Покажите плиз без ресиверов. Я тоже считаю, что надо уметь и так и эдак
источник

AM

Andrew Mikhaylov in Kotlin Community
LevT
Покажите плиз без ресиверов. Я тоже считаю, что надо уметь и так и эдак
Дык эцсамое, заменяете ресивер на явный аргумент и вперёд. Ваш пример выше:

fun solution(seq: Sequence<Int>, f: (Int) -> Boolean) =
  seq.filter { it -> (2..it).count { f(it) } == 3 }


вызвать, соответственно, как
solution((1..1000).asSequence(), ::f)
источник

AN

Alexander Nozik in Kotlin Community
По-моему я в первый раз в жизни воспользовался метками:
источник

AN

Alexander Nozik in Kotlin Community
Выглядят они страшненько. Но правда нужны раз в пять лет
источник

L

LevT in Kotlin Community
Andrew Mikhaylov
Дык эцсамое, заменяете ресивер на явный аргумент и вперёд. Ваш пример выше:

fun solution(seq: Sequence<Int>, f: (Int) -> Boolean) =
  seq.filter { it -> (2..it).count { f(it) } == 3 }


вызвать, соответственно, как
solution((1..1000).asSequence(), ::f)
Спасибо,
совсем уже тепло, но я ещё не догоняю.

До сих пор в изучении котлина мне отлично помогали рефакторинги, которые предлагает идея в месте вызова.
Здесь она создаёт такую "рыбу"

fun f(i: Int): Boolean {
}

функция-то должна быть от двух параметров
источник

AM

Andrew Mikhaylov in Kotlin Community
LevT
Спасибо,
совсем уже тепло, но я ещё не догоняю.

До сих пор в изучении котлина мне отлично помогали рефакторинги, которые предлагает идея в месте вызова.
Здесь она создаёт такую "рыбу"

fun f(i: Int): Boolean {
}

функция-то должна быть от двух параметров
Так у вас по условию f: (Int) -> Bool. А вам свою нужно написать, которая бы принимала f и применяла её к сиквенсу.
источник

AF

Alexander Fyodorov in Kotlin Community
LevT
Given a function f: Int => Boolean, an integer n is called a “3-f” if there are only three different integers j ∈ [1, ..., n] such that f(j) returns true.
Define a function that takes f as an argument and returns a sequence of all “3-f” integers among n ∈ [1, ..., 1000]. What is the type of that function? Implement Exercise 1.6.2.2 using that function.
можно прооптимизировать
fun find3F(fn: (Int) -> Boolean): List<Int> {
 return (1..1_000)
   .asSequence()
   .filter { (1..it).asSequence().filter(fn).take(4).toList().size == 3 }
   .toList()
}

val fn = { x: Int -> x % 3 == 0 }

println(find3F(fn))
источник

IL

Ivan Lotoff in Kotlin Community
источник

IL

Ivan Lotoff in Kotlin Community
можете помочь? Создал простой проект с одним методом, хотел написать тесты, а всё упало
источник

AN

Alexander Nozik in Kotlin Community
Предвосхищая вопрос, у вас junit5, ему нужна дополнительная конфигурация в градле
источник

IL

Ivan Lotoff in Kotlin Community
источник