Advertisement
WupEly

Untitled

Mar 20th, 2023
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. from string import ascii_lowercase, ascii_uppercase
  2.  
  3.  
  4. class LetterRhombus:
  5. def __init__(self, letter, filler=" "):
  6. self.letter = letter
  7. self.filler = filler
  8. self.alpha = ascii_lowercase[1:] if letter.islower() else ascii_uppercase[1:]
  9. self.alpha_index = self.alpha.index(letter)
  10. self.matrix = []
  11. self._build_matrix()
  12.  
  13. def _build_matrix(self):
  14. self.matrix.append([self.filler for i in range(self.alpha_index + 1)] +
  15. ["a" if self.letter.islower() else "A"] +
  16. [self.filler for i in range(self.alpha_index + 1)])
  17. for index, letter in enumerate(self.alpha, start=1):
  18. self.matrix.append([self.filler for i in range(self.alpha_index - index + 1)] +
  19. [letter] +
  20. [self.filler for i in
  21. range((self.alpha_index * 2 - 1) - ((self.alpha_index - index) * 2))]
  22. + [letter] + [self.filler for i in range(self.alpha_index - index + 1)])
  23. if letter == self.letter:
  24. break
  25.  
  26. self.matrix += self.matrix[-2::-1]
  27.  
  28. def rows(self):
  29. return list(map(lambda x: "".join(x), self.matrix))
  30.  
  31. def cols(self):
  32. to_return = []
  33. for j in range(len(self.matrix[0])):
  34. to_return.append([self.matrix[i][j] for i in range(len(self.matrix[j]))])
  35.  
  36. return list(map(lambda x: "".join(x), to_return))
  37.  
  38.  
  39. a = LetterRhombus("C")
  40.  
  41. print(*a.cols(), sep="\n")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement