Consider the following figure
O
OO
OOO
OOOO
This will be drawn using nested loops so let us make a chart
i No of Os
1 1
2 2
3 3
4 4
This means we run a loop from 1 to 4 and run a nested loop from 1 to i inside the first loop
fun main(args : Array<String>)
{
var n:Int =4
var row:Int
for( row in 1..n)
{
var col:Int
for(col in 1..row)
print("O")
println()
}
}
O
This figure will require printing spaces on the left side before the Os. Let us make a chart again
Row Space Os
1 3 1
2 2 2
3 1 3
4 0 4
This will require an outer loop from 1 to 4 which will have 2 inner loops, one for the space and the other for Os
Space will be n-row, while Os will be row
To vertically reverse a shape simply reverse the row loop.
fun main(args : Array<String>)
{
var n:Int =4
var row:Int
for( row in n downTo 1)
{
var space:Int
for(space in 1..n-row)
print(" ")
var col:Int
for(col in 1..row)
print("O")
println()
}
}
Next shape
O
OOO
OOOOO
Row Space Os
1 3 1
2 2 3
3 1 5
The number of Os is an odd number series. This can be generated by running a loop from 1 to 2*row -1
fun main(args : Array<String>)
{
var n:Int =3
var row:Int
for( row in 1..n)
{
var space:Int
for(space in 1..n-row)
print(" ")
var col:Int
for(col in 1..2*row-1)
print("O")
println()
}
}
AB
How about this figure?
{
var n:Int =3
var row:Int
for( row in 1..n)
{
var space:Int
for(space in 1..n-row)
print(" ")
var col:Int
for(col in 1..2*row-1)
print("O")
println()
}
}
The output will be the same. Now print col instead of "O" in the loops.
Let us try this shape now.
OOOOO
OOOOO
OOOOO
OOOOO