Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fun main() {
- var input = generateSequence { readLine() }
- .map { it.toCharArray().toMutableList() }
- .toList()
- val dx = listOf(1, -1, 0, 0, -1, -1, 1, 1)
- val dy = listOf(0, 0, 1, -1, -1, 1, -1, 1)
- while (true) {
- val next = input.map { it.toMutableList() }
- var changed = false
- for (i in input.indices) {
- for (j in input[i].indices) {
- var occupied = 0
- for (k in dx.indices) {
- var x = i + dx[k]
- var y = j + dy[k]
- try {
- while (true) {
- if (input[x][y] == '#') {
- occupied++
- break
- } else if(input[x][y] == 'L') {
- break
- }
- x += dx[k]
- y += dy[k]
- }
- } catch (e: Exception) {}
- }
- if (input[i][j] == 'L' && occupied == 0) {
- changed = true
- next[i][j] = '#'
- } else if (input[i][j] == '#' && occupied >= 5) {
- changed = true
- next[i][j] = 'L'
- }
- }
- }
- input = next
- if (!changed) break
- }
- input.map { row -> row.count { it == '#' } }.sum().let(::println)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement