user10671789
user10671789

Reputation:

I need this diamond shape pattern in R

                                   *
                                  * *
                                 * * *
                                * * * *
                               * * * * *
                                * * * *
                                 * * *
                                  * *
                                   *

This is my code so far, but it throws an error:

Error in " " * (rows - i - 1) : non-numeric argument to binary operator Calls: pyramid -> print Execution halted

#R version 3
pyramid<-function(rows){for (i in rows){print(" "*(rows-i-1)+"*"*(i+1))}
for(j in (rows-1|0|-1)){print(" "*(rows-j)+"*"*(j))}}
rows<-5
pyramid(rows)

Upvotes: 1

Views: 4690

Answers (1)

Maurits Evers
Maurits Evers

Reputation: 50668

You can find plenty of (pseudo-code) examples on the net. That should've been your first approach towards solving your problem. SO is not a free code writing service, and you'll get a much more positive response if you demonstrate a genuine attempt at solving the problem yourself.

That aside, here is a "crude" R implementation of a code example I found here. The code can and probably should be "R-ified", and I encourage you to spend some time doing so. I promise that you'll learn a lot. For example, it should be possible to replace most (all?) explicit for loops by making use of vectorised functions.

diamond <- function(max) {

    # Upper triangle
    space <- max - 1
    for (i in 0:(max - 1)) {
        for (j in 0:space) cat(" ")
        for (j in 0:i) cat("* ")
        cat("\n")
        space <- space - 1
    }

    # Lower triangle
    space = 1;
    for (i in (max - 1):1) {
        for (j in 0:space) cat(" ")
        for (j in 0:(i - 1)) cat("* ")
        cat("\n")
        space <- space + 1
    }
}
diamond(5)
#    *
#   * *
#  * * *
# * * * *
#* * * * *
# * * * *
#  * * *
#   * *
#    *

Upvotes: 1

Related Questions