Světýlkův blog

Další pohled na věc
  • Podhodnocené Sci-Fi: Smrtelné stroje

    Sotva jsem se vrátil z kina, jen stěží můžu uvěřit, že aktuální hodnocení tohoto filmu na CSFD je pouze 63%. Dle mého názoru by nemělo být menší než alespoň 83%. Ve světě Sci-fi žánru je dnes již opravdu těžké přijít s něčím originálním a toto je jeden z mála filmů, kterému se to po delší době opět povedlo, že jsem se z kina vracel pln dojmů a spokojenosti. Velmi zajímavá a originální myšlenka, velmi pěkné zpracování a co se týče fanoušků steampunku – naprostý must-see!

    https://www.csfd.cz/film/474371-smrtelne-stroje

  • Advent of Code v Kotlinu (Den 10.)

    Další z ne-úplně lehkých dnů. Nyní již bylo zapotřebí trochy odhadu a víry, že se člověk vydal správnou cestou 🙂 .

  • Advent of Code v Kotlinu (Den 9.)

    Den 9., ačkoliv se jevil jednoduše, zákeřnost jeho zadání přišla záhy 🙂 . První část jsem ještě zvládl sám, ale v části druhé jsem měl již perfomance problém. Ačkoliv se mi mé první řešení podařilo zrychlit až 25x, stále to bylo velmi málo. A tak jsem musel zvolit zcela jiný přístup, kde jsem se musel inspirovat řešením ostatních na Kotlin Slacku, což nakonec rychle vedlo ke kýženému cíli:

  • Advent of Code v Kotlinu (Den 8.)

    Den 8. byl oproti včerejšku docela v pohodě 🙂 . Zde je mé řešení:

  • DHL mi píše, že mi zásilku bude doručovat PPL. –Tomáš N.

  • Advent of Code v Kotlinu (Den 7.)

    Den 7. byl opět jeden z drsnějších, ale nakonec se podařilo 🙂 .

  • Advent of Code v Kotlinu (Den 6.)

    V den 6. jsem se pokusil zaměřit se na rychlost řešení, namísto čistého kódu, abych odhadl, jestli bych měl vůbec šanci dostat se do Top 100 v leaderboardu. No, trvalo mi to něco přes 40 min, kde se mi u toho málem roztopil mozek 🙂 . Takže na to prdím, neb to mi za to nestojí … zde je moje řešení pro den 6. a příště se navrátím zpět k důmyslnosti a čistotě řešení samotného:

  • Advent of Code v Kotlinu (Den 4. a 5.)

    Zatímco 4. den byl docela masakr, kde mě totálně vypekla knihovna JodaTime – z nějakého důvodu převedla javovský Date špatně, 5. už byl o něco lepší, nicméně výkonnostně nic moc 🙂 (chtělo by to optimalizovat na úkor čitelnosti).

  • Jsem supr nadšený! Úplně to překonalo moje nulové očekávání. –Jiří B.

  • Advent of Code v Kotlinu (Den 3.)

    Dnes už to bylo více tricky a musel jsem sáhnout po své Rojo knihovně, ale zvládlo se to 🙂 .

    Část A i B:

    @Regex("#(\\d+) @ (\\d+),(\\d+): (\\d+)x(\\d+)")
    class Claim {
        @Group(1)
        var id: Int = 0
    
        @Group(2)
        var x: Int = 0
    
        @Group(3)
        var y: Int = 0
    
        @Group(4)
        var width: Int = 0
    
        @Group(5)
        var height: Int = 0
    }
    
    fun main() {
        val input = File("input3.txt").readText()
        val claims = Rojo.of(Claim::class.java).matchList(input)
    
        val maxWidth = claims.map { it.x + it.width }.max() ?: 0
        val maxHeight = claims.map { it.y + it.height }.max() ?: 0
    
        val area = Array(maxWidth) { IntArray(maxHeight) { 0 } }
    
        claims.forEach { area.cutOut(it) }
    
        val total = area.sumBy { it.count { it == 2 } }
        println(total)
    
        val nonOverlapping = claims.find { claim ->
            claim.run {
                (x until x + width).all { posX ->
                    (y until y + height).all { posY ->
                        area.get(posX)[posY] == 1
                    }
                }
            }
        }
    
        println(nonOverlapping?.id)
    }
    
    private fun Array<IntArray>.cutOut(claim: Claim) {
        claim.run {
            for (posX in x until x + width) {
                for (posY in y until y + height) {
                    val row = get(posX)
                    when (row[posY]) {
                        0 -> row[posY] = 1
                        1 -> row[posY] = 2
                    }
                }
            }
        }
    }