I have no coding experience other than this book
Programming Swift! Swift 2 Kindle Edition by Nick Smith (Author)
I am currently at Chapter
5.3 Nested FOR LOOPS
// NESTED FOR LOOP #2
This code -
for var a = 0; a < 11; a++ {
print("")
for var b = 0; b < a; b++ {
print("*", terminator: " ")
}
}
Now [after several/ 4 hours 'odd'] I SIMPLY CAN'T WORK OUT HOW TO CHANGE THE ABOVE 'simple' [if you know how] CODE TO GENERATE THIS PATTERN??
I (think I) can see Outer and Inner loops I just can't work out the rest!?? I have tried every variation I can think of!?? (and am aware that just doing 'permutations' doesn't mean I have true understanding of what I am trying to do!...)
Tried using --operators and changing [most/ all] values [but 'permutations' is a limited method]
I feel like a total fool but figure if it's the very first time I've seen this stuff maybe it's not so bad, these things take learning!??
Help (the answer LOL) would be GREATLY appreciated 😬 😬 😬
How to do this systematically: If you want to got for example user3441734's output: There are 11 lines. We number the lines from 0 to 10. So we have a loop that sets line to the values 0 to 10.
for var line = 0; line < 11; ++line
Next, what do we want to print in each line? In line 0 we want to print 11 * characters. In line 10 we want to print 1 star character. The number of stars is 11 - line. How do I get the expression 11 - line? The number of stars goes down as line goes up, so it must be something - line. When line = 0 there must be 11 stars, so something - 0 = 11, and something = 11. So the first line in the loop:
let starcount = 11 - line
Then we want to print (star count) times a star and a space character, follow by starting a new line.
for var star = 0; star < starcount; ++star {
print ("*", terminator: " ")
}
print ("")
All together:
for var line = 0; line < 11; ++line {
let starcount = 11 - line
for var star = 0; start < star count; ++star {
print ("*", terminator: " ")
}
print ("")
}
And we simplify the loops a bit:
for var line in 0 ..< 11 {
let starcount = 11 - line
for var star in 0 ..< starcount {
print ("*", terminator: " ")
}
print ("")
}
If you wanted a different pattern, all you have to do is change the number 11 if the number of lines is different, and change the calculation of starcount. Actually it would be better to have a variable for linecount as well, so changing for a different pattern is even easier:
let linecount = 11
for var line in 0 ..< line count {
let starcount = linecount - line
for var star in 0 ..< starcount {
print ("*", terminator: " ")
}
print ("")
}