Печать отраженного полого прямоугольного шаблона (*) в Kotlin - PullRequest
0 голосов
/ 30 апреля 2020

В настоящее время я учусь на курсе по принципам программирования с языковым фокусом Kotlin в связи с растущим интересом к программированию.

Я должен создать программу, которая принимает пользовательский ввод для целого числа. После сбора этой информации мне нужно напечатать два треугольника в виде звездочки (*) (у меня не было проблем с выполнением этих шагов).

Кроме того, существует возможность получения дополнительного кредита, над которым я не работаю больше для получения опыта, чем для получения дополнительных баллов, так как выгляжу хорошо с точки зрения оценки. Мне нужно взять первый треугольник и отразить его, сохраняя при этом свойства. До сих пор я не могу понять, как бы я оставил треугольник пустым и привел к нему третью сторону.

Мой ожидаемый результат:

*
**
* *
*  *
*****
1
12
123
1234
12345
    *
   **
  * *
 *  *
*****

Мой текущий выход:

*
**
* *
*  *
*****
1
12
123
1234
12345
    *         *
    *        *
    *  or   *
    *      *
*****     *****

Кажется, я не могу понять это, так как долго смотрел на проблему. Кажется, я не могу перевернуть мой треугольник за мою жизнь.

Мой код:

fun main() {

    // Prompt user for the triangle's size
    print( "How big do you want your triangles? " )

    // Get the triangle's size from the user and store in a variable
    var triangleSize = readLine()!!.toInt()

    // Decrementor for internal spaces
    var decrementor = triangleSize

    // Incrementor for internal spaces
    var incrementor = 2

    // Case given a 0 is entered
    if ( triangleSize == 0 ) {

        // Case given 1 is entered
    } else if ( triangleSize == 1 ) {

        println( "*" )

        println( "1" )

        for ( i in 1..( triangleSize - 1 )) {

            print( " " )

        }

        print( "*" )

        // Case given number entered that is not 0 or 1
    } else {

        // Print the top point of the triangle
        println( "*" )

        // Print the sides of the triangle
        for ( i in 0..( triangleSize - 3 )) {

            print( "*" )

            for ( i in 1..( triangleSize - decrementor )) {

                print( " " )

            }

            println( "*" )

            decrementor--

        }

        // Print the bottom of the triangle
        for ( i in 1..triangleSize ) {

            print( "*" )

        }

        println()

        // Print the numbers triangle
        for ( i in 1..triangleSize ) {

            for ( j in 1..i ) {

                print( "$j" )

            }

            println()

        }

        // Print the top of the inverse triangle
        for ( i in 1..( triangleSize - 1 )) {

            print( " " )

        }

        println( "*" )

        for ( i in 1..( triangleSize - 2 )) {

            for ( i in 1..( triangleSize - incrementor )) {

                print( " " )

            }

            println( "*" )

            incrementor++

        }

        // Print the bottom of the inverse triangle
        for ( i in 1..triangleSize ) {

            print( "*" )

        }

    }

}

Спасибо за помощь!

...