Apr-18-2020, 11:06 PM
(This post was last modified: Apr-18-2020, 11:06 PM by deanhystad.)
When I run your program I don't get output on separate lines. Using choice = 4, all my 7 character sequences appear on the same line.
Things became clear to me when I rewrote the program like this:
min(x, size-x-1) computes the "distance" from x to the end of x's range. For size = 7, the "distance" values are 0, 1, 2, 3, 3, 2, 1, 0. The "distance" value limits which letters can be chosen. When the distance is zero (start or end of range), the only available letter is a (alphabet[0]). When the distance is 1, the letter can be a or b. So the choices of letter are [a, ab, abc, abcd, abcd, abc, ab, a]
Next we have the interplay of list and column. since list is the outer loop, list limits which letters are "available" to column. When the list distance is zero, the column distance is ignored (poor column!). This is why the first and last lines are all a's. When the list distance is 1, the column can pick a or b so we get ab...ba. When line is 2, column can pick a, b and c so we get abc...cba.
Can you tell me what this program is supposed to do?
Things became clear to me when I rewrote the program like this:
alphabet =['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'] choice =int(input('Enter something ')) size =choice *2 -1 line =0 for line in range(size): for column in range(size): index = min(line, size-line-1, column, size-column-1) print(line, column, size-line-1, size-column-1, index,) # print(alphabet[index], end ='')I have no idea of the purpose of this program, but how it does it is fun.
min(x, size-x-1) computes the "distance" from x to the end of x's range. For size = 7, the "distance" values are 0, 1, 2, 3, 3, 2, 1, 0. The "distance" value limits which letters can be chosen. When the distance is zero (start or end of range), the only available letter is a (alphabet[0]). When the distance is 1, the letter can be a or b. So the choices of letter are [a, ab, abc, abcd, abcd, abc, ab, a]
Next we have the interplay of list and column. since list is the outer loop, list limits which letters are "available" to column. When the list distance is zero, the column distance is ignored (poor column!). This is why the first and last lines are all a's. When the list distance is 1, the column can pick a or b so we get ab...ba. When line is 2, column can pick a, b and c so we get abc...cba.
Can you tell me what this program is supposed to do?