Печать отраженного полого прямоугольного треугольника (*) в Kotlin

В настоящее время я беру уроки по принципам программирования с фокусом на языке 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( "*" )

        }

    }

}

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

0 ответов

Другие вопросы по тегам