Světýlkův blog

Další pohled na věc
  • Advent of Code v Kotlinu (Den 2.)

    Doháním deficit a zde je řešení pro den 2.

    A:

    fun hasSameLettersCount(id: String, occurrences: Int): Boolean {
        val sameLetterCounts = id.groupBy { it }
            .values
            .map { it.count() }
    
        return occurrences in sameLetterCounts
    }
    
    fun main() {
        val ids = File("input2.txt").readLines()
    
        val twoCounts = ids.filter { hasSameLettersCount(it, 2) }.count()
        val threeCounts = ids.filter { hasSameLettersCount(it, 3) }.count()
    
        println(twoCounts * threeCounts)
    }
    

    B:

    fun main() {
        val ids = File("input2.txt").readLines().toSet()
    
        for (idA in ids) {
            for (idB in ids) {
                val diff = getDiff(idA, idB)
                if (diff.length == idA.length - 1) {
                    println(diff)
                    return
                }
            }
        }
    }
    
    fun getDiff(first: String, second: String) = first.zip(second) { a, b ->
        if (a == b) a.toString() else ""
    }.joinToString("")
    
  • Advent of Code v Kotlinu (Den 1.)

    Rozhodl jsem se, že si letošní Vánoční čas zpříjemním řešením programátorských hádanek, které pro nás letos připravili na stránkách Advent of Code 2018 … jak jinak, než v Kotlinu 🙂 . Pokud se chcete pochlubit vaším kódem – ať už v jakémkoliv jazyce – nebojte se napsat do komentářů 🙂 .

    Mé řešení pro část první:

    fun main() {
        val result = File("input1.txt").readLines().sumBy { it.toInt() }
        println(result)
    }
    

    a část druhou:

    fun main() {
    
        val frequencies = sequence {
            val deltas = File("input1.txt").readLines().map { it.toInt() }
            var lastFreq = 0
    
            while (true) {
                deltas.forEach {
                    lastFreq += it
                    yield(lastFreq)
                }
            }
        }
    
        val seen = mutableSetOf<Int>()
    
        for (freq in frequencies) {
            if (freq in seen) {
                println(freq)
                break
            }
            seen += freq
        }
    }
    
  • Nejvíce potěší volovina. –Ludmila B.

  • U 9 lidí už je velká pravděpodobnost, že alespoň 1 z nich bude blbec. –Jan B.

  • Asi mu musíme říct, že ta jeho learning curva bude pěkně velká. –Tomáš N.

  • Toužíš-li po svobodě mysli blázna, musíš se jím stát.

  • Správný úhel pohledu je ten, který ti nevadí.

  • Chůze je žonglování nohama pod vlastním tělem, aby neupadlo.

  • Já jsem se nezhoršil … jen jsem se na to tak trochu připovysral.

  • Technickou němčinou nechce mluvit ani Němec. –Petr V.