47 lines
1.8 KiB
Text
47 lines
1.8 KiB
Text
|
import java.util.*
|
||
|
|
||
|
val scanner = Scanner(System.`in`)
|
||
|
|
||
|
val matrix = ArrayList<CharArray>()
|
||
|
|
||
|
while (scanner.hasNextLine()) {
|
||
|
val line = scanner.nextLine()
|
||
|
matrix.add(line.toCharArray())
|
||
|
}
|
||
|
|
||
|
var count = 0
|
||
|
|
||
|
matrix.forEachIndexed { row, line ->
|
||
|
line.forEachIndexed { col, char ->
|
||
|
count += searchFrom(matrix, row, col)
|
||
|
}
|
||
|
}
|
||
|
println(count)
|
||
|
|
||
|
fun searchFrom(matrix: ArrayList<CharArray>, row: Int, col: Int): Int {
|
||
|
return (if (safeCheckMatrix(matrix, row, col, 'A') &&
|
||
|
safeCheckMatrix(matrix, row - 1, col - 1, 'M') &&
|
||
|
safeCheckMatrix(matrix, row - 1, col + 1, 'M') &&
|
||
|
safeCheckMatrix(matrix, row + 1, col - 1, 'S') &&
|
||
|
safeCheckMatrix(matrix, row + 1, col + 1, 'S')
|
||
|
) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'A') &&
|
||
|
safeCheckMatrix(matrix, row + 1, col - 1, 'M') &&
|
||
|
safeCheckMatrix(matrix, row + 1, col + 1, 'M') &&
|
||
|
safeCheckMatrix(matrix, row - 1, col - 1, 'S') &&
|
||
|
safeCheckMatrix(matrix, row - 1, col + 1, 'S')
|
||
|
) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'A') &&
|
||
|
safeCheckMatrix(matrix, row - 1, col - 1, 'M') &&
|
||
|
safeCheckMatrix(matrix, row + 1, col - 1, 'M') &&
|
||
|
safeCheckMatrix(matrix, row - 1, col + 1, 'S') &&
|
||
|
safeCheckMatrix(matrix, row + 1, col + 1, 'S')
|
||
|
) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'A') &&
|
||
|
safeCheckMatrix(matrix, row - 1, col + 1, 'M') &&
|
||
|
safeCheckMatrix(matrix, row + 1, col + 1, 'M') &&
|
||
|
safeCheckMatrix(matrix, row - 1, col - 1, 'S') &&
|
||
|
safeCheckMatrix(matrix, row + 1, col - 1, 'S')
|
||
|
) 1 else 0)
|
||
|
}
|
||
|
|
||
|
fun safeCheckMatrix(matrix: ArrayList<CharArray>, row: Int, col: Int, target: Char): Boolean {
|
||
|
return row in matrix.indices && col in matrix[row].indices && matrix[row][col] == target
|
||
|
}
|