Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fun main() {
- val n = readLine()!!.split(' ')[0].toInt()
- val array: Array<Array<Char>> = Array(n) { Array(5) { ' ' } }
- for (i in array.indices) {
- array[i][i] = 'a'
- }
- var j = 0
- for (i in array.size - 1 downTo 0) {
- array[i][j] = 'a'
- ++j
- }
- var j1 = 1
- var j2 = 1
- var j3 = 0
- var j4 = 1
- for (i in 0..(n - 1) / 2) {
- //выше главной диагонали
- for (i1 in 0..array.size - j1 - 1) {
- if (array[i1][j1] == 'a') {
- continue
- }
- val next = getChar(i1, j1, array)
- array[i1][j1] = next
- j1++
- }
- j1 = i + 1
- //ниже главной диагонали
- var k1 = 0
- for (i2 in j2..array.size - 1) {
- if (array[i2][i2 - j2] == 'a') {
- continue
- }
- val next = getChar(i2, i2 - 1, array)
- array[i2][i2 - j2] = next
- }
- j2++
- //выше побочной диагонали
- for (i3 in array.size - 2 downTo 0) {
- if (array[i3][j3] == 'a') {
- continue
- }
- val next = getChar(i3, j3, array)
- array[i3][j3] = next
- j3++
- }
- j3 = 0
- //ниже побочной диагонали
- for (i4 in array.size - i - 1 downTo i + 1) {
- if (array[i4][j4] == 'a') {
- continue
- }
- val next = getChar(i4, j4, array)
- array[i4][j4] = next
- j4++
- }
- j4 = i + 1
- }
- for (i in array.indices) {
- for (k in array[i].indices) {
- print(array[i][k])
- }
- println()
- }
- }
- fun getChar(i: Int, j: Int, array: Array<Array<Char>>): Char {
- val left = if (j - 1 >= 0 &&
- i < array.size &&
- i >= 0 &&
- j - 1 < array.size
- ) {
- if (array[i][j - 1].isLetter()) {
- array[i][j - 1]
- } else {
- null
- }
- } else {
- null
- }
- val right = if (j + 1 < array[i].size &&
- i < array.size &&
- i >= 0 &&
- j + 1 >= 0
- ) {
- if (array[i][j + 1].isLetter()) {
- array[i][j + 1]
- } else {
- null
- }
- } else {
- null
- }
- val bottom = if (i + 1 < array.size &&
- j < array.size &&
- i + 1 >= 0 &&
- j >= 0
- ) {
- if (array[i + 1][j].isLetter()) {
- array[i + 1][j]
- } else {
- null
- }
- } else {
- null
- }
- val top = if (i - 1 >= 0 &&
- i - 1 < array.size &&
- j < array.size &&
- j >= 0
- ) {
- if (array[i - 1][j].isLetter()) {
- array[i - 1][j]
- } else {
- null
- }
- } else {
- null
- }
- val res = getCharFromNeighbours(
- left = left,
- right = right,
- top = top,
- bottom = bottom
- )
- println("res = $res")
- return res
- }
- fun getCharFromNeighbours(left: Char?, right: Char?, top: Char?, bottom: Char?): Char {
- var minChar = left ?: 'z'
- right?.let {
- if (minChar > right && right >= 'a' && right <= 'z') {
- minChar = right
- }
- }
- top?.let {
- if (minChar > top && top >= 'a' && top <= 'z') {
- minChar = top
- }
- }
- bottom?.let {
- if (minChar > bottom && bottom >= 'a' && bottom <= 'z') {
- minChar = bottom
- }
- }
- return getNext(minChar)
- }
- fun getNext(char: Char): Char {
- return if (char == 'z') {
- 'a'
- } else {
- (char.toInt() + 1).toChar()
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement