public override fun play()

in benchmarks/src/jmh/kotlin/benchmarks/flow/scrabble/SequencePlaysScrabble.kt [19:60]


    public override fun play(): List<Map.Entry<Int, List<String>>> {
        val score2: (String) -> Int = { word: String ->
            buildHistogram(word)
                .map { it.letterScore() }
                .sum()
        }

        val bonusForDoubleLetter: (String) -> Int = { word: String ->
            toBeMaxed(word)
                .map { letterScores[it - 'a'.toInt()] }
                .maxOrNull()!!
        }

        val score3: (String) -> Int = { word: String ->
            val sum = score2(word) + bonusForDoubleLetter(word)
            sum * 2 + if (word.length == 7) 50 else 0
        }

        val buildHistoOnScore: (((String) -> Int) -> Flow<TreeMap<Int, List<String>>>) = { score ->
            flow {
                emit(shakespeareWords.asSequence()
                    .filter({ scrabbleWords.contains(it) && checkBlanks(it) })
                    .fold(TreeMap<Int, List<String>>(Collections.reverseOrder())) { acc, value ->
                        val key = score(value)
                        var list = acc[key] as MutableList<String>?
                        if (list == null) {
                            list = ArrayList()
                            acc[key] = list
                        }
                        list.add(value)
                        acc
                    })
            }
        }

        return runBlocking {
            buildHistoOnScore(score3)
                .flatMapConcatIterable { it.entries }
                .take(3)
                .toList()
        }
    }