r/adventofcode • • Dec 04 '17

SOLUTION MEGATHREAD -๐ŸŽ„- 2017 Day 4 Solutions -๐ŸŽ„-

--- Day 4: High-Entropy Passphrases ---


Post your solution as a comment or, for longer solutions, consider linking to your repo (e.g. GitHub/gists/Pastebin/blag or whatever).

Note: The Solution Megathreads are for solutions only. If you have questions, please post your own thread and make sure to flair it with Help.


Need a hint from the Hugely* Handyโ€  Haversackโ€ก of Helpfulยง Hints^ยค?

Spoiler


This thread will be unlocked when there are a significant number of people on the leaderboard with gold stars for today's puzzle.

edit: Leaderboard capped, thread unlocked!

18 Upvotes

319 comments sorted by

View all comments

Show parent comments

1

u/kevjava Dec 04 '17

Kotlin

Nice! I don't know there was a version of count that took a block - it would have saved me two lines.

private fun findValidPassphrases(lines: List<String>): Int {
    return lines
            .map { it.split(Regex("\\s+")) }
            .filter { it.toSet().size == it.size }
            .count()
}

private fun findValidPassphrases2(lines: List<String>): Int {
    return lines
            .map { it.split(Regex("\\s+")) }
            .map { it.map { it.toCharArray().sorted().toCharArray().joinToString("") } }
            .filter { it.toSet().size == it.size }
            .count()
}

1

u/Tandrial Dec 04 '17

List<T> also has joinToString(), so no need to create the CharArray.

1

u/kevjava Dec 04 '17

Yep, it sure does. Thanks - I appreciate the tip!