11fun main () {
2- val input: List <CharArray > = object {}.javaClass.getResource(" input-11.txt" ).readText()
3- .split(" \n " )
4- .map(String ::toCharArray)
2+ val input: List <CharArray > =
3+ object {}
4+ .javaClass
5+ .getResource(" input-11.txt" )
6+ .readText()
7+ .split(" \n " )
8+ .map(String ::toCharArray)
59
6- var array1 = Array (input.size) { i ->
7- CharArray (input[i].size) { j ->
8- input[i][j]
9- }
10- }
10+ var array1 = Array (input.size) { i -> CharArray (input[i].size) { j -> input[i][j] } }
1111 var array2 = Array (input.size) { i -> CharArray (input[i].size) { ' ' } }
1212 var occupiedPlaces: Int
1313
@@ -16,27 +16,28 @@ fun main() {
1616 occupiedPlaces = 0
1717 for (i in array1.indices) {
1818 for (j in array1[i].indices) {
19- array2[i][j] = when (array1[i][j]) {
20- ' .' -> ' .'
21- ' #' -> {
22- if (countVisibleOccupied(array1, i, j, ' #' ) >= 5 ) {
23- countedChanges++
24- ' L'
25- } else {
26- occupiedPlaces++
27- ' #'
19+ array2[i][j] =
20+ when (array1[i][j]) {
21+ ' .' -> ' .'
22+ ' #' -> {
23+ if (countVisibleOccupied(array1, i, j, ' #' ) >= 5 ) {
24+ countedChanges++
25+ ' L'
26+ } else {
27+ occupiedPlaces++
28+ ' #'
29+ }
2830 }
29- }
30- else -> { // L
31- if (countVisibleOccupied(array1, i, j, ' # ' ) <= 0 ) {
32- countedChanges ++
33- occupiedPlaces ++
34- ' # '
35- } else {
36- ' L '
31+ else -> { // L
32+ if (countVisibleOccupied(array1, i, j, ' # ' ) <= 0 ) {
33+ countedChanges ++
34+ occupiedPlaces ++
35+ ' # '
36+ } else {
37+ ' L '
38+ }
3739 }
3840 }
39- }
4041 }
4142 }
4243 array1 = array2
@@ -45,22 +46,19 @@ fun main() {
4546 println (occupiedPlaces)
4647}
4748
48- fun countVisibleOccupied (
49- array : Array <CharArray >,
50- i : Int ,
51- j : Int ,
52- target : Char
53- ) = listOf (
54- - 1 to 0 ,
55- - 1 to - 1 ,
56- - 1 to + 1 ,
57- 0 to - 1 ,
58- 0 to + 1 ,
59- + 1 to 0 ,
60- + 1 to - 1 ,
61- + 1 to + 1 ,
62- ).map { (dirX, dirY) -> toVisible(array, i, j, dirX, dirY) }
63- .count { it == target }
49+ fun countVisibleOccupied (array : Array <CharArray >, i : Int , j : Int , target : Char ) =
50+ listOf (
51+ - 1 to 0 ,
52+ - 1 to - 1 ,
53+ - 1 to + 1 ,
54+ 0 to - 1 ,
55+ 0 to + 1 ,
56+ + 1 to 0 ,
57+ + 1 to - 1 ,
58+ + 1 to + 1 ,
59+ )
60+ .map { (dirX, dirY) -> toVisible(array, i, j, dirX, dirY) }
61+ .count { it == target }
6462
6563fun toVisible (array : Array <CharArray >, i : Int , j : Int , dirX : Int , dirY : Int ): Char {
6664 var nexti = i + dirX
@@ -72,5 +70,3 @@ fun toVisible(array: Array<CharArray>, i: Int, j: Int, dirX: Int, dirY: Int): Ch
7270 }
7371 return ' .'
7472}
75-
76-
0 commit comments